专利名称:由单组因特网主控机器提供的多个并行用户体验的制作方法
由单组因特网主控机器提供的多个并行用户体验背景web应用程序是在诸如因特网或内联网等的网络上经由web浏览器可访问的应用程序。Web应用程序是现今的企业界中的必要工具。例如,销售人员可以在她的个人计算机上使用她的web浏览器来访问由她的公司提供的web应用程序,以便将销售情况输入到销售数据库。在另一示例中,大学生可以在他的个人计算机上使用web浏览器来访问由他的大学提供的web应用程序,以便注册课程。在许多环境中,web应用程序提供者可能希望将web应用程序的不同版本提供给不同的用户组。例如,具有跨国销售力量的公司可能希望将销售条目web应用程序的第一版本提供给其欧洲的销售人员并将该销售条目web应用程序的第二版本提供给其北美的销售人员。在此示例中,该web应用程序的不同版本可以收集不同的数据以便遵守不同的规则。在另一示例中,web应用程序提供者可能希望将web应用程序的已更新版本提供给一组β用户(beta user),同时继续将该web应用程序的当前版本提供给大众。为了实现web应用程序的不同版本,web应用程序提供者可能需要实现诸如软件模块、图像、视频等等的等效资源的不同版本。此外,因为web应用程序提供者可能需要实现等效的软件模块的不同版本,该web应用程序提供者可能需要在不同的物理主控 (hosting)设备组上安装该等效的软件模块的不同版本。例如,web应用程序提供者可能需要在第一组物理主控设备上安装该web应用程序的第一版本所需要的软件模块,并且可能需要在第二组物理主控设备上安装该web应用程序的第二版本所需要的软件模块。web应用程序提供者可能需要在不同的物理主控设备组上安装该等效的软件模块的不同版本,这是因为与该web应用程序的不同版本相关联的等效资源可能具有相同的文件名且因此不能被存储在文件系统目录结构内的相同位置。概述提供本公开内容以便以简化形式介绍下面在详细描述中进一步描述的概念的选集。本公开内容不旨在标识该所要求保护的本主题的关键特征或必要特征,也不旨在用来限制所要求保护的本主题的范围。本公开内容描述使用单个主控设备来提供单个web应用程序的多个版本的技术。 如下面详细描述,主控设备将与web应用程序的不同版本相关联的资源存储在不同的目录中。当主控设备从客户机设备接收与web应用程序相关联的请求时,该主控设备自动地将 web应用程序的各版本中的一个版本标识为web应用程序的适用版本。主控设备将该请求中的路径名重写成包括存储web应用程序的适用版本的子目录的子目录名称。然后,主控设备解除引用(dereference)由所重写的路径名标识的资源。以此方式,主控设备使用web 应用程序的适用版本的资源来处理该请求。附图简述
图1是阐释包括实现本公开内容的技术的主控设备的示例系统的框图。图2是阐释该主控设备的各示例逻辑组件的框图。图3是阐释该主控设备的各逻辑组件的示例操作的流程图。
图4阐释示例目录结构。图5是阐释该主控设备的各示例硬件组件的框图。详细描述一般地,本公开内容描述使用单个主控设备来提供单个web应用程序的多个版本的技术。该web应用程序的各版本中的每一版本可以提供不同的用户体验。在下列描述中, 描述各种示例。应明白,出于解释的目的且不作为关于权利要求的范围的明确的或暗示的限制而提供这些示例。图1是阐释示例系统2的框图。如在图1的示例中所阐释的,系统2包括主控web 应用程序的多个版本的主控设备4。在一些实例中,主控设备4是可以被分成多个分离的物理单元的物理电子计算设备。在这些实例中,这些物理单元可以使用包括总线技术、互连技术、网络技术和其他通信技术在内的各种通信技术相互通信。例如,主控设备4可以是单个单机服务器设备、服务器设备的集群、服务器刀片或另一类型的物理电子计算设备。本公开内容中所使用的术语“web应用程序”是指在诸如因特网或内联网等的网络上经由web浏览器访问的应用程序。主控设备4可以主控多种不同类型的web应用程序。 例如,主控设备4可以主控业务流程web应用程序、电子邮件web应用程序、电子日历web 应用程序、电子协作web应用程序和其他类型的web应用程序。在一个具体的示例中,主控设备4基于微软Office Live Workspace (办公实况工作空间)协作应用程序工具主控web 应用程序的多个版本。主控设备4包括存储分层目录系统的计算机可读存储介质。该目录结构含有一组子目录。各子目录中的每一子目录都与一子目录名称相关联。例如,第一子目录可以与子目录名称“rOOt/version_2008_01/(根/版本_2008_01/)”相关联,且第二子目录可以与子目录名称 “root/version_2008_02/ (根 / 版本 _2008_02/) ” 相关联。被存储在该组目录的每一子目录内的是与相同的web应用程序的不同版本相关联的不同的资源组。除非另外说明,被存储在该目录系统的第一子目录内的是与该web应用程序的第一版本相关联的第一组资源,且被存储在该目录系统的第二子目录内的是与该 web应用程序的第二版本相关联的第二组资源,以此类推。各子目录中的每一子目录中的资源可以多种不同类型的资源。例如,各子目录中的第一个中的资源可以包括图像文件、音频文件、视频文件、超文本标记语言(HTML)文件、 Jav必cript脚本、VBkript脚本、可扩展标记语言(XML)文档、动态链接库(DLL)文件、 ASP. NET页面、级联样式表文件、配置文件、Java小程序(Applet)、ActiveX对象、通用网关接口(CGI)脚本、PHP脚本和其他类型的资源。web应用程序的每一版本被设计成为web应用程序提供不同的用户体验。除非另外说明,该web应用程序的第一版本被设计成提供第一用户体验,该web应用程序的第二版本被设计成提供第二用户体验,以此类推。由该web应用程序的不同版本提供的用户体验可以在许多方面不同。例如,该web应用程序的不同的用户体验可以提供不同的功能性、不同的外观、不同的用户界面和其他不同的特征。在一个特定的示例中,销售条目web应用程序(sales-entry web application)的第一用户体验可以要求用户在将销售数据输入到由该web应用程序的第一版本提供的web页面时输入特定的数据,且由该销售条目web应用程序的第二版本提供的第二用户体验可以不要求该用户在将销售数据输入到由该web应用程序的第二版本提供的等效web页面时输入该特定的数据。系统2还包括客户机设备6。客户机设备6可以是多种不同类型的电子计算设备。 例如,客户机设备6可以是个人计算机、移动电话、个人媒体播放器、网络设备、中间网络设备、大型计算机、集成到车辆的设备、膝上型计算机、电视机顶盒、手持式计算设备或另一类型的计算设备。另外,系统2包括网络8。网络8是促进在客户机设备6和主控设备4之间的通信的电子通信网络。网络8可以是多种不同类型的电子通信网络。例如,网络8可以是因特网、内联网、局域网、广域网、个域网、自组织网络或另一类型的网络。此外,网络8可以包括无线和或有线的通信链路。可以在网络8内的链路上使用各种通信协议,包括例如以太网、 WiFi、WiMax、蓝牙、码分多址接入(CDMA)和其他通信协议。客户机设备6包括浏览器10。浏览器10是在客户机设备6上执行因特网浏览应用程序。例如,浏览器10可以是微软INTERNET EXPLORER 因特网浏览器、Mozilla Firefox因特网浏览器、谷歌Chrome因特网浏览器、苹果Mfari因特网浏览器、Opera因特网浏览器、黑莓因特网浏览器或另一类型的因特网浏览器的实例。客户机设备6的用户12可以使用浏览器10来与由主控设备4主控的web应用程序交互。为了发起与由主控设备4主控的web应用程序的交互,浏览器10经由网络8 将与web应用程序相关联的请求发送给主控设备4。例如,用户12可以将统一资源定位符(URL)输入到由浏览器10生成的用户界面的地址栏。在此示例中,该URL指定与主控设备4相关联的主机名称和与该web应用程序相关联的路径名。举例来说,该用户可以将 URL"http://www. example. com/myffebApp/origin. aspx,,输入到由浏览器 10 生成的用户界面的地址栏。在此实例中,该URL的域名部分是“www. example, com”且路径名是“myWebApp/ origin, aspx”。此外,在此示例中,浏览器10可以响应于该URL的输入而生成超文本传输协议(HTTP)请求消息,并经由网络8将其发送给主控设备4。在此示例中,该HTTP请求消息可以指定与主控设备4相关联的主机名称和与web应用程序相关联的路径名。举例来说,如果用户将 URL "http://www. example. com/myffebApp/origin. aspx,,输入到由浏览器 10生成的用户界面的地址栏,则浏览器10可以生成并发送下列HTTP请求消息GET/myffebApp/origin. aspx HTTP/1. 1Host:www. example, com响应于该请求,主控设备4自动地从该web应用程序的一组版本标识该web应用程序的适用版本。如下面所描述,主控设备4可以以各种方式自动地标识该web应用程序的适用版本。例如,当客户机设备6的用户已经将浏览器10设置成使用德语时,主控设备 4可以自动地将该web应用程序的第一版本标识成适用版本,并且,当客户机设备6的用户已经将浏览器10设置成使用俄语时,可以自动地将该web应用程序的第二版本标识成适用版本。在标识该web应用程序的适用版本之后,主控设备4重写该请求,使得该请求中的路径名包括含有与该web应用程序的适用版本相关联的资源的子目录的子目录名称。例如,含有与该web应用程序的适用版本相关联的资源的子目录的子目录名称可以是“root/ version_2008_02/,,,且初始的HTTP请求可以是如下GET/myffebApp/origin. aspx HTTP/1. 1
Host:www. example, com在此示例中,主控设备4可以重写此请求,得到下列HTTP请求GET/root/version_2008_02/myffebApp/origin. aspx HTTP/1. 1Host:www. example, com在主控设备4重写该请求之后,主控设备4解除引用由所重写的请求指定的路径名标识的资源。本公开内容中所使用的短语“解除引用”意指获取由引用标识符标识的资源。解除引用资源可以像检索被存储在计算机可读存储介质上的资源那样简单。在另一实例中,解除引用可以要求执行一个或多个脚本或程序集以便获取该资源。因为主控设备4将该请求中的路径名重写成包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称,且因为该web应用程序的适用版本可以因请求不同而不同,当主控设备4接收指定相同的路径名的两个请求时,主控设备4可以解除引用两个不同的资源。举例来说,第一用户可以将URL“http //www. example. com/root/myffebApp/ origin, aspx”输入到第一用户的浏览器的地址栏,且第二用户可以将相同的URL输入到第二用户的浏览器的该地址栏。一接收到这两个所得到的请求,主控设备4就可以解除引用两个不同的资源,这是因为第一用户和第二用户可以具有该web应用程序的不同的适用版本。在主控设备4解除引用由所重写的请求指定的路径名标识的资源之后,主控设备 4可以将该资源发送给客户机设备6。例如,主控设备4可以发送包括一个或多个首部字段和含有该资源的正文的HTTP响应。在此示例中,该HTTP响应可以被分成多个数据包,以供在网络8上传送。图2是阐释主控设备4的各示例逻辑组件的框图。如在图2的示例中所阐释的,主控设备4包括表示用于组织各文件的目录的分层结构的目录结构30。可以使用各种文件系统体系结构来实现目录结构30,包括但不限于FAT32、NTFS、HPFS、Google File System(谷歌文件系统^Hierarchical File System Plus (扩展分层式文件系统,HFS+)或另一类型的文件系统。目录结构30包括子目录32A和子目录32B。子目录32A不是子目录32B的子孙目录或祖先目录。然而,子目录32A和子目录32B可以是单个直接父目录的孩子目录。 子目录32A和子目录32B与各子目录名称相关联。例如,子目录32A可以与子目录名称 “version_2008_01”相关联,且子目录32B可以与子目录名称“version_2008_02”相关联。 尽管在图2的示例中未示出,但子目录32A和子目录32B可以包括一个或多个孩子目录,这些一个或多个孩子目录又可以包括一个或多个子孙目录,以此类推。在各实例中,当子目录 32A和子目录32B包括子孙子目录时,子目录32A的各子孙子目录和子目录32B的各子孙子目录可以具有相同的结构。子目录32A存储与web应用程序的第一版本相关联的一组资源34A。子目录32B存储与web应用程序的第二版本相关联的一组资源34B。如上面所讨论,资源34A和资源34B 可以是多种不同类型的资源,包括但不限于DLL、脚本、图像文件、视频文件、音频文件等等。 尽管在图2的示例中未示出,但目录结构30可以含有另外的子目录,这些另外的子目录含有与该web应用程序的另外的版本相关联的资源。在一些实例中,资源34A中的一个资源可以具有与资源34B中的一个资源相同的文件名,但是可以不同地操作。例如,资源34A可以包括被命名为“salesEntry. dll”的文件,且资源34B可以包括被命名为“saleEntry. dll”的文件。被命名为“saleEntry. dll” 的这两个文件可以提供不同的功能。在其他实例中,资源34A中的每一资源可以对应于资源34B中的被同等地命名的资源。在图2的示例中,主控设备4包括存储将该web应用程序的各版本与用户组关联起来的信息的组数据库36。举例来说,组数据库36可以存储一组规则,该组规则中的每一规则指定前置条件和web应用程序的一个版本。在此实例中,当由规则所指定的前置条件为真时,判断该web应用程序的该版本是该web应用程序的适用版本。组数据库36可以存储基于多种前置条件的多个规则,这些前置条件中的一些可以依赖于或不依赖于由主控设备4所接收的请求的内容。在第一示例中,HTTP请求可以含有指定用于HTTP响应的一个或多个可接受的语言的“接受-语言”首部。在此第一示例中,组数据库36可以包括当HTTP请求含有指定 “德语”的“接受-语言”首部时规定web应用程序的适用版本是该web应用程序的第一版本的规则。在此第一示例中,组数据库36还可以包括当HTTP请求含有指定“英语”的“接受-语言”首部时规定web应用程序的适用版本是该web应用程序的第二版本的规则。在此第一示例中,该web应用程序的第一版本和第二版本可以提供不仅仅是相同用户体验的翻译的不同的用户体验。在第二示例中,HTTP请求可以含有指定用户代理的用户代理串“用户-代理” 首部。在此实例中,组数据库36可以包括当该HTTP请求含有指定用户代理是Mozilla Firefox因特网浏览器的“用户-代理”首部时规定web应用程序的适用版本是该web应用程序的第一版本的规则。在此实例中,组数据库36还可以包括当该HTTP请求含有指定用户代理是hternet Explorer因特网浏览器的“用户-代理”首部时规定web应用程序的适用版本是该web应用程序的第二版本的规则。在第三示例中,可以要求各用户登入到主控设备4以便访问该web应用程序。在此第三示例中,组数据库36可以包括指定各用户中的每一用户的喜好的喜好数据。举例来说,第一用户可以优选使用该web应用程序的第一版本,且第二用户可以优选使用该web应用程序的第二版本。在一些环境中,组数据库36中的一个规则可以规定一用户的web应用程序的适用版本是该web应用程序的第一版本,但是用户的喜好可以指示该用户优选使用该web应用程序的第二版本。在这些环境中,用户的喜好可以具有更高的重要性。因而,该用户可以有效地选择拒绝使用该web应用程序的第一版本而赞成使用该web应用程序的第二版本,或者可以在使用该web应用程序的第一版本和该web应用程序的第二版本之间切换。当web应用程序提供者正在推出具有新的用户界面的web应用程序的一个版本,而许多用户喜欢当前的用户界面时,这些环境可以频繁地出现。可以出于各种目的而结构化组数据库36中的各规则。在第一示例中,web应用程序的新版本可以准备好在第一地理区域中使用,但是未准备好在第二地理区域中使用。在此第一示例中,组数据库36中的各规则可以被结构化成使得第一地理区域中的各用户可以使用web应用程序的新版本,而第二地理区域中的各用户继续使用该web应用程序的现有版本。这可以允许web应用程序的提供者快速地在第一地理区域中将该web应用程序的新版本推向市场,而不必等待世界性的推出。在第二示例中,提供者可能正在对web应用程序的新版本执行β测试,同时继续提供该web应用程序的现有版本。在此第二示例中,组数据库36中的各规则可以被结构化成使得志愿成为β测试员的用户可以与该web应用程序的新版本交互,同时其他用户可以继续与该web应用程序的现有版本交互。尽管这些示例讨论了 web应用程序的旧版本和新版本,但该web应用程序的各版本不需要具有这样的关系。主控设备4还包括版本模块38。版本模块38接收与web应用程序相关联的请求。 响应于接收到该请求,版本模块38自动地标识该web应用程序的适用版本。在图2的示例中,版本模块38使用组数据库36中的信息来标识与客户机设备6的用户相关联的web应用程序的一个版本。举例来说,如果组数据库36使用规定该web应用程序的适用版本的一组规则,则版本模块38可以通过自动地将各规则应用到该请求来自动地标识该web应用程序的适用版本。在版本模块38自动地标识该web应用程序的适用版本之后,主控设备4中的请求重写模块40可以重写该请求,使得该请求中所包括的路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称。例如,如果与该web应用程序的适用版本相关联的资源被存储在子目录32A中,则请求重写模块40可以重写该请求,使得由该请求指定的路径名包括与子目录32A相关联的子目录名称。在请求重写模块40重写该请求之后,请求处理器模块42解除引用由所重写的请求指定的路径名标识的资源。因为由所重写的请求指定的路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称,请求处理器模块42访问存储与该web 应用程序的适用版本相关联的资源的子目录中的资源,而不是访问存储与该web应用程序的不同版本相关联的资源的子目录中的资源。例如,如果由所重写的请求指定的路径名包括与子目录32A相关联的子目录名称,则请求处理器模块42解除引用子目录32A中的资源,而不是子目录32B中的被同等地命名的资源。如在图2的示例中所阐释的,主控设备4还可以包括全局程序集缓存(GAC)44。GAC 44是用于.NET程序集的机器范围的储存库。每一程序集是以公共中间语言(CIL)格式化的代码库。各程序集可以是进程程序集或库程序集。进程程序集表示使用在库程序集中定义的类的进程。主控设备4可以将GAC 44中所安装的每一库程序集的单个副本加载到存储器。在主控设备4上执行的许多不同的程序可以调用被加载到存储器的库程序集的单个副本的方法。这可以减少对主控设备4同时地在存储器中存储公共的一组功能的多个副本的需要。解除引用资源34A或资源34B中的一个或多个可以要求请求处理器模块42利用被安装在GAC 44中的一个或多个程序集。例如,子目录32A中的资源可以是含有利用由被存储在GAC 44中的程序集的第一版本提供的功能的服务器侧脚本的ASP. NET页面。此外, 在此示例中,子目录32B中的资源可以是包括利用由GAC 44中的程序集的第二版本提供的功能的服务器侧脚本的ASP. NET页面。子目录32A可以含有指定在子目录32A中的各资源和GAC 44中的程序集的各版本之间的绑定的web配置文件。例如,GAC 44可以含有“flfebcontrols. dll”程序集的第一版本和第二版本。在此示例中,子目录32A的web配置文件可以指定子目录32A中的各资源对“flfebcontrols. dll”程序集的各方法的调用要针对GAC 44中的“flfebcontrols. dll”
11程序集的第一版本。子目录32B和含有与该web应用程序的各版本相关联的资源的其他子目录可以含有相似的web配置文件。继续先前的示例,子目录32B的web配置文件可以指定子目录32B中的各资源对“ffebcontrols. dll ”程序集的各方法的调用要针对GAC 44中的“ffebcontrols.dll”程序集的第二版本。以此方式,与该web应用程序的不同版本相关联的资源可以利用被安装在GAC 44中的各程序集的各不同版本。如上面所讨论,该web应用程序的各版本中的每一版本可以提供不同的用户体验。本公开内容中所使用的“用户体验”是用户与web应用程序交互的方式。即使各用户正在查看由web应用程序提供的以不同语言的页面,两个用户也对该web应用程序拥有相同的用户体验。例如,web应用程序的一个版本可以将该web页面的第一版本提供给第一用户并将该web页面的第二版本提供给第二用户。在此示例中,该web页面的第一版本和该web 页面的第二版本可以具有完全相同的布局和功能,但是可以在诸如文本或图形等的特定元素中不同,而可以相互代替。举例来说,第一 web页面中的文本可以用葡萄牙语写成,且第二 web页面中的文本可以用法语写成。在此示例中,第一用户和第二用户可以具有相同的用户体验,这是因为第一用户和第二用户可以以相同的方式与web应用程序交互。相反,如果各用户由于页面布局、页面功能、站点组织等等而必须不同地与页面交互,则web应用程序的各不同版本可以提供不同的用户体验。为了进一步阐释这一点,考虑可以被用来提供不同的静态元素但是不改变用户与 web应用程序交互的方式的.NET卫星程序集。举例来说,ASP. NET页面可以包括调用由库程序集提供的方法的服务器侧脚本。默认地,该库程序集的方法可以返回英语语言的串。在此示例中,卫星程序集可以与该库程序集相关联。该卫星程序集与特定的文化相关联,且含有将该库程序集的操作局部化为特定文化的静态的(即,非代码的)资源。在典型的使用中,该卫星程序集含有特定文化的语言的串。举例来说,与法裔加拿大人的文化相关联的该卫星程序集可以含有法裔加拿大人的方言的串。当该ASP. NET页面中的该服务器侧脚本调用由该库程序集提供的方法且文化喜好被设置成法裔加拿大人时,该方法返回法裔加拿大人的方言的而不是英语语言的串。各串可以是图像的URL、要包括在web页面中的文本等等。以此方式,通过提供一组卫星程序集,web设计者可以无需重写用来创建该web页面的库程序集就提供不同语言的web页面。换句话说,当伴有一组卫星程序集时,单个库程序集可以生成多种语言的web页面。然而,在web应用程序中使用卫星程序集不提供不同的用户体验,这是因为所有用户在与该web应用程序交互时都具有基本上相同的体验。参考在图2的示例中阐释的各逻辑组件,图3是阐释主控设备4的示例操作的流程图。如在图3的示例中所阐释的,版本模块38经由网络8从客户机设备6接收与web应用程序相关联的请求(60)。接下来,版本模块38判断该请求是否包括标识该web应用程序的版本的版本标识符(6 。例如,版本模块38可以判断该请求是否包括指定标识该web应用程序的一个版本的版本标识符的cookie。如果判断该请求包括标识该web应用程序的一个版本的版本标识符(62的“是”),则请求重写模块40重写由该请求指定的路径名,使得该路径名包括存储与该web应用程序的指定版本相关联的资源的子目录的子目录名称(64)。 在其中判断该请求指定该web应用程序的一个版本的场景中,该web应用程序的指定版本是该web应用程序的适用版本。另一方面,如果判断该请求不包括标识该web应用程序的一个版本的版本标识符(62的“否”),则版本模块38可以自动地标识该web应用程序的适用版本(66)。如上面参考图2所讨论的,版本模块38可以使用组数据库44来标识该web应用程序的适用版本。在版本模块38自动地标识该web应用程序的适用版本之后,请求重写模块40重写由该请求指定的路径名,使得该路径名包括含有与该web应用程序的适用版本相关联的资源的子目录的子目录名称阳8)。因为请求重写模块40在主控设备4处重写该路径名,客户机设备6可以不接收该路径名已经被重写的任何指示。一旦在步骤64或步骤68请求重写模块40重写由该请求指定的路径名,请求处理器模块42就解除引用由所重写的请求中的路径名标识的资源(70)。例如,请求处理器模块42可以通过执行生成HTML文件的ASP. NET页面中的脚本来解除引用由该路径名指定的 ASP. NET页面。在另一实例中,请求处理器模块42可以通过将该请求中的信息提供给通用网关接口(CGI)资源来解除引用由该路径名提供的CGI资源。在请求处理器模块42解除引用由所重写的请求中的路径名标识的资源之后,请求处理器模块42可以生成对该请求的响应(7 。如果该响应是HTTP响应,则该响应可以含有指示客户机设备6设置含有该web应用程序的适用版本的版本标识符的cookie的设置cookie首部。从而,客户机设备6将设置cookie首部的内容包括在与该web应用程序相关联的随后的HTTP请求中。在另一示例中,请求处理器模块42可以重写该响应,使得响应中指定与该web应用程序相关联的资源的位置的各路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称。这些技术可以允许主控设备4放弃(forego) 使用组数据库36来标识该web应用程序的适用版本的潜在地昂贵的步骤。在生成对该请求的响应之后,请求处理器模块42可以将该响应发送给客户机设备 6(74)。应明白,在图3的示例中阐释的操作仅仅是主控设备4的一个示例操作。例如,在主动设备4的另一示例操作中,当由该请求指定的路径名包括存储与该web应用程序的一个版本相关联的资源的子目录的子目录名称时,版本模块38可以判断该请求指定版本标识符。在此示例中,如果由该请求指定的路径名包括存储与该web应用程序的一个版本相关联的资源的子目录的子目录名称,则不需要请求重写模块40重写由该请求指定的路径名。图4是可以被用来存储与web应用程序的两个版本相关联的资源的目录结构 90的图。如在图4的示例中所阐释的,目录结构90包括与该目录名称“/applicatioru root(应用程序_根)”相关联的目录。"/application_root"目录包括与目录名称 “VerSion_2008_01”相关联的第一子目录和与目录名称“version_2008_02”相关联的第二子目录。换句话说,"version_2008_01"子目录和“version_2008_02,,子目录是单个直接父目录(即“/application_root,,目录)的孩子目录。“version_2008_01,,子目录可以存储与web应用程序的第一版本相关联的资源,且“verSion_2008_02”子目录可以存储与web 应用程序的第二版本相关联的资源。图4的示例进一步阐释“version_2008_01”子目录包括“Cancelation (取消),,子目录、“ Intercept Survey (截获调查)”子目录”、"Misc (杂项)”子目录、“Resources (资源)”子目录、“RSS”子目录和“Services (服务)”子目录。另外,图4的示例阐释“Intercept Survey”子目录包括“En-us (英语-美国)”子目录。图4的示例还阐释“Resources”子目录包“Dialog (对话)”子目录、“Editor (编辑器)”子目录、“ Images (图像)”子目录、“ Js” 子目录、“Templates (模板)”子目录、“RSS”子目录和Services (服务)”子目录等。尽管在图4的示例中未阐释,但“ vers i on_2008_02 ”子目录可以具有与“ver si on_2008_01,,子目录相同的或相似的子目录。可以使用目录结构90来提供请求重写模块40如何重写请求的示例。在一个这样的示例中,版本模块38可以标识其资源被存储在“version_2008_01”子目录中的web 应用程序的一个版本。在此示例中,请求重写模块40可以接收指定下列路径名的请求 "application_root/Resources/Images/logo. jpg,,。 iftii各@名f)(寸目 ig丰勾 90 中的子目录的路径名。当请求重写模块40接收到该请求时,请求重写模块40可以重写该请求中白勺足各@$,1 ^ 为:"application_root/version_2008_01/Resources/Images/ logo. jpg,,。图5是阐释主控设备4的各示例硬件组件的框图。如在图5的示例中所阐释的, 主控设备4包括存储器单元100。存储器单元100是能够存储数据和指令的计算机可读存储介质。存储器单元100可以是各种不同类型的计算机可读存储介质,包括但不限于动态随机存取存储器(DRAM)、双数据速率同步动态随机存取存储器(DDR SDRAM)、减少延迟的 DRAM、DDR2SDRAM、DDR3SDRAM、Rambus RAM或其他类型的计算机可读存储介质。另外,主控设备4包括能够执行指令的处理单元102。处理单元102可以被实现为一个或多个处理核心和/或被实现为一个或多个分离的微处理器。例如,处理单元102可以被实现为一个或多个htel Core 2微处理器。处理单元102能够执行诸如x86指令集 POWER指令集、RISC指令集、SPARC指令集、IA-64指令集、MIPS指令集或另一指令集等的指令集中的指令。主控设备4还包括允许主控设备4将视频信息输出到显示设备106的视频接口 104。显示设备106可以是各种不同类型的显示设备。举例来说,显示设备106可以是阴极射线管显示器、LCD显示面板、等离子体屏幕显示面板、触敏显示面板、LED阵列或另一类型的显示设备。另外,主控设备4包括非易失性存储设备108。非易失性存储设备108是能够存储数据和/或指令的计算机可读存储介质。非易失性存储设备108可以是各种不同类型的不同的非易失性存储设备。例如,非易失性存储设备108可以是一个或多个硬盘驱动器、磁带盒驱动器、CD-ROM驱动器、DVD-ROM驱动器、蓝光盘驱动器或其他类型的非易失性存储设备。主控设备4还包括允许主控设备4与外部组件通信的外部组件接口 110。如在图 5的示例中所阐释的,外部组件接口 110与输入设备112和外部存储设备114通信。在主控设备4的一种实现中,外部组件接口是通用串行总线(USB)接口。在主控设备4的其他实现中,主控设备4可以包括允许主控设备4与输入设备和/或输出设备通信的另一类型的接口。举例来说,主控设备4可以包括PS/2接口。输入设备112可以是各种不同类型的设备,包括但不限于键盘、鼠标、跟踪球、触针输入设备、触摸板、触敏显示屏或其他类型的输入设备。外部存储设备114可以是各种不同类型的计算机可读存储介质,包括磁带盒、闪速存储器模块、磁盘驱动器、光盘驱动器和其他计算机可读存储介质。另外,主控设备4包括允许主控设备4向网络8发送数据和从网络8接收数据的网络接口 116。网络接口 116可以是各种不同类型的网络接口。例如,网络接口 116可以是以太网界面、令牌环网络接口、光纤网络接口、无线网络接口(例如,WiFi、WiMax等等)或另一类型的网络接口。 主控设备4还包括促进主控设备4的各种组件之间的通信的通信介质118。通信介质118可以包括一个或多个不同的类型的通信介质,包括但不限于PCI总线、PCI Express 总线、加速图形端口(AGP)总线、Infiniband互连、串行高级技术附件(ATA)互连、并行 ATA互连、光纤信道互连(Fibre Channel interconnect)、USB总线、小型计算机系统接口 (SCSI)接口或另一类型的通信介质。在图5的示例中阐释若干计算机可读存储介质(即,存储器100、非易失性存储设备108和外部存储设备114)。这些计算机可读存储介质可以一起构成单个逻辑计算机可读存储介质。此单个逻辑计算机可读存储介质可以可由处理单元102执行的存储指令。上面所描绘的动作可以得自执行被存储在这一单个逻辑计算机可读存储介质的指令。因而,当这一描述表示特定的逻辑模块执行特定的动作时,这样的声明可以被解释成意指该软件模块的指令引起诸如处理单元102等的处理单元执行该动作。可以以各种方式来概念化本公开内容的技术。例如,本公开内容的技术可以被概念化成用于提供web应用程序的多个版本的方法。该方法包括在计算设备可访问的计算机可读存储介质上存储含有一组子目录的分层目录系统,该组子目录中的每一子目录具有一子目录名称。另外,该方法包括在该计算机可读介质上在各子目录中的每一子目录内存储与web应用程序的一组版本中的web应用程序的不同版本相关联的资源,其中该web应用程序的各版本中的每一版本提供不同的用户体验。该方法还包括在该计算设备处经由电子通信网络从客户机设备接收指定与该web应用程序相关联的资源的路径名的请求。此外, 该方法包括响应于接收到该请求,在该计算设备处自动地从该web应用程序的该组版本标识该web应用程序的适用版本。该方法还包括在该计算设备处重写该请求,使得该路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称。此外,该方法包括在重写该请求之后,在该计算设备处解除引用所重写的请求中的路径名所标识的资源。在另一示例中,本公开内容的技术可以被概念化成包括能够执行指令的处理单元的电子计算设备。该电子计算设备还包括促进在包括客户机设备的电子通信网络上的通信的网络接口。此外,该电子计算设备包括非易失性存储设备,其存储含有是单个父母目录的孩子目录的一组子目录的分层目录系统,其中该组子目录中的每一子目录具有一子目录名称,且在各子目录中的每一子目录内存储与该web应用程序的一组版本中的web应用程序的不同版本相关联的资源。该web应用程序的各版本中的每一版本提供不同的用户体验。该电子计算设备还包括版本模块,该版本模块经由电子通信网络从客户机设备接收指定与该web应用程序相关联的资源的路径名的请求,且响应于接收到该请求,自动地从该 web应用程序的该组版本标识该web应用程序的适用版本。另外,该电子计算设备包括请求重写模块,该请求重写模块重写该请求,使得该路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称。此外,该电子计算设备包括请求处理器模块,该请求处理器模块在该请求已经被重写之后,解除引用由所重写的请求中的路径名标识的资源,并将由所重写的请求中的路径名标识的资源发送给该客户机设备。
15
本公开内容的技术还可以被概念化成包括含有多个子目录的分层目录系统的计算机可读存储介质。各子目录中的每一子目录与不同的子目录名称相关联。各子目录中的每一子目录存储与web应用程序的一组版本中的该web应用程序的不同版本相关联的资源。各子目录中的每一子目录是单个直接父子目录的孩子目录。在各子目录中的每一子目录中存在被同等地命名的资源。该web应用程序的各版本中的每一版本通过提供不同的功能组和不同的用户界面来提供不同的用户体验。计算机可读存储介质还包括包含一组规则的组数据库,该组规则中的每一规则指定一条件和web应用程序的各版本中的一个版本。此外,该计算机可读存储介质包括当在计算设备处执行时引起该计算设备经由电子通信网络从客户机设备接收指定与该web应用程序相关联的资源的路径名的超文本传输协议(HTTP)请求的指令。各指令还引起该计算设备响应于接收到该HTTP请求而判断该HTTP 请求是否包括标识该web应用程序的适用版本的版本标识符,其中该web应用程序的适用版本是该web应用程序的各版本中的一个版本。此外,各指令引起该计算设备在该HTTP请求不包括标识该web应用程序的适用版本的版本标识符时使用各规则来自动地从该web应用程序的该组版本标识该web应用程序的适用版本。各指令还引起该计算设备重写该HTTP 请求,使得该路径名包括存储与该web应用程序的适用版本相关联的资源的子目录的子目录名称,由此引起该路径名标识存储与该web应用程序的适用版本相关联的资源的子目录中的资源。此外,各指令引起该计算设备在重写该HTTP请求之后解除引用由所重写的HTTP 请求中的路径名标识的资源。各指令还引起该计算设备生成对该HTTP请求的HTTP响应, 该HTTP响应含有由所重写的HTTP请求中的路径名标识的资源和将该客户机设备配置成在与该web应用程序相关联的随后的HTTP请求中包括标识该web应用程序的适用版本的该版本标识符的数据。尽管已经用对结构特征和/或方法论动作来说专用的语言描述了本主题,但应理解,在所附权利要求中界定的本主题不必限于以上所描述的具体的特征或动作。相反,以上所描述的具体的特征和动作是作为实现权利要求的示例形式而公开的。
权利要求
1.一种用于提供web应用程序的多个版本的方法,所述方法包括在计算设备(4)可访问的计算机可读存储介质上存储含有一组子目录(3 的分层目录系统(30),每一子目录具有一子目录名称;在所述计算机可读存储介质上,在所述各子目录中的每一子目录内,存储与web应用程序的一组版本中的所述web应用程序的不同版本相关联的资源(34),其中所述web应用程序的所述各版本中的每一版本提供不同的用户体验;在所述计算设备(4)处,经由电子通信网络(8)从客户机设备(6)接收(60)指定与所述web应用程序相关联的资源的路径名的请求;响应于接收所述请求,在所述计算设备(4)处自动地从所述web应用程序的所述一组版本中标识(66)所述web应用程序的适用版本;在所述计算设备处重写(6 所述请求,使得所述路径名包括存储与所述web应用程序的所述适用版本相关联的所述资源的所述子目录的所述子目录名称;以及在重写所述请求之后,在所述计算设备(4)处解除引用(70)由所述所重写的请求中的所述路径名标识的资源。
2.如权利要求1所述的方法,其特征在于,还包括在所述计算机可读存储介质处存储将所述web应用程序的所述各版本与各用户组关联起来的信息;以及其中自动地标识所述web应用程序的所述适用版本包括使用将所述web应用程序的所述各版本与各用户组关联起来的所述信息来标识与所述客户机设备的用户相关联的所述 web应用程序的所述版本,由此标识所述web应用程序的所述适用版本。
3.如权利要求2所述的方法,其特征在于存储将所述web应用程序的所述各版本与各用户组关联起来的信息包括存储一组规则,所述一组规则中的每一规则指定一条件和所述web应用程序的所述各版本中的一个版本;以及使用将所述web应用程序的所述各版本与各用户组关联起来的所述信息来标识与所述客户机设备的用户相关联的所述web应用程序的所述版本包括评估所述各规则。
4.如权利要求3所述的方法,其特征在于接收所述请求包括接收含有指定可接受的语言的“接受-语言”首部的超文本传输协议(HTTP)请求;以及存储所述一组规则包括存储基于所述HTTP请求的所述“接受-语言”首部的值指定一条件的规则。
5.如权利要求1所述的方法,其特征在于所述方法还包括存储指定用户优选所述web应用程序的所述各版本中的第一版本的喜好数据;以及自动地标识所述web应用程序的所述适用版本包括当所述客户机设备由所述用户使用时使用所述喜好数据来将所述web应用程序的所述各版本中的所述第一版本标识成所述web应用程序的所述适用版本。
6.如权利要求1所述的方法,其特征在于由所述所重写的请求中的所述路径名标识的所述资源包括服务器侧脚本;以及解除引用由所述所重写的请求中的所述路径名标识的所述资源包括执行所述服务器侧脚本。
7.如权利要求1所述的方法,其特征在于,还包括在解除引用由所述所重写的请求中的所述路径名标识的所述资源之后,在所述计算设备处生成含有由所述所重写的请求中的所述路径名标识的所述资源的HTTP响应;以及将所述HTTP响应发送给所述客户机设备。
8.如权利要求7所述的方法,其特征在于,生成所述HTTP响应包括重写所述HTTP响应,使得指定与所述web应用程序相关联的资源的位置的所述HTTP响应中的路径名包括存储与所述web应用程序的所述适用版本相关联的资源的所述子目录的所述子目录名称。
9.如权利要求7所述的方法,其特征在于,生成所述HTTP响应包括生成所述HTTP响应以使得所述HTTP响应包括指示所述客户机设备设置含有标识所述web应用程序的所述适用版本的版本标识符的cookie的首部。
10.如权利要求1所述的方法,其特征在于所述方法还包括在所述计算设备处判断所述请求是否包括标识所述web应用程序的所述适用版本的版本标识符;以及自动地标识所述web应用程序的所述适用版本包括当判断所述请求不包括标识所述 web应用程序的所述适用版本的版本标识符时自动地标识所述web应用程序的所述适用版本。
11.如权利要求1所述的方法,其特征在于,凭借呈现与所述web应用程序的所述各版本中的所述第二版本所呈现的用户界面不同的用户界面,所述web应用程序的所述各版本中的第一版本提供与所述web应用程序的所述各版本中的第二版本不同的用户体验。
12.如权利要求1所述的方法,其特征在于,凭借提供与所述web应用程序的所述各版本中的所述第二版本呈现的用户界面不同的功能,所述web应用程序的所述各版本中的第一版本提供与所述web应用程序的所述各版本中的第二版本不同的用户体验。
13.如权利要求1所述的方法,其特征在于,至少所述子目录中的第一子目录和所述子目录中的第二子目录是单个直接父子目录的孩子目录。
14.一个电子计算设备G),包括 能够执行指令的处理单元(102);促进在包括客户机设备(6)的电子通信网络⑶上的通信的网络接口(116); 存储下列的非易失性存储设备(108)含有一组子目录(3 的分层目录系统(30),所述一组子目录是单个父目录的孩子目录,其中所述一组子目录中的每一子目录具有一子目录名称,以及在所述各子目录中的每一子目录内,存储与web应用程序中的一组版本中的所述web 应用程序的不同版本相关联的资源(34),其中所述web应用程序的所述各版本中的每一版本提供不同的用户体验;版本模块(38),所述版本模块经由所述电子通信网络(8)从所述客户机设备(6)接收指定与所述web应用程序相关联的资源的路径名的请求,并且响应于接收所述请求,自动地从所述web应用程序的所述一组版本中标识所述web应用程序的适用版本;请求重写模块GO),所述请求重写模块重写所述请求,使得所述路径名包括存储与所述web应用程序的所述适用版本相关联的所述资源的所述子目录的所述子目录名称;以及请求处理器模块(42),所述请求处理器模块在所述请求已经被重写之后解除引用由所述所重写的请求中的所述路径名标识的资源,并且将由所述所重写的请求中的所述路径名标识的所述资源发送给所述客户机设备(6)。
15.如权利要求14所述的电子计算设备,其特征在于,所述版本模块、所述请求重写模块和所述请求处理器模块包括由所述处理单元执行的指令。
16.如权利要求14所述的电子计算设备,其特征在于所述计算机可读介质存储含有将所述web应用程序的所述各版本与各用户组关联起来的信息的组数据库;以及所述版本模块使用所述组数据库来标识所述web应用程序的所述适用版本。
17.如权利要求14所述的电子计算设备,其特征在于由所述所重写的请求中的所述路径名标识的所述资源包括服务器侧脚本;以及所述请求处理其模块部分通过执行所述服务器侧脚本来解除引用由所述所重写的请求中的所述路径名标识的所述资源。
18.如权利要求14所述的电子计算设备,其特征在于所述非易失性存储设备存储指定用户优选所述web应用程序的所述各版本中的第一版本的喜好数据;以及自动地标识所述web应用程序的所述适用版本包括当所述客户机设备由所述用户使用时使用所述喜好数据来将所述web应用程序的所述各版本中的所述第一版本标识成所述web应用程序的所述适用版本。
19.一个计算机可读存储介质,包括含有多个子目录(32)的分层目录系统(30), 其中所述各子目录(3 中的每一子目录与不同的子目录名称相关联, 其中所述各子目录中的每一子目录存储与web应用程序的一组版本中的所述web应用程序的不同版本相关联的资源(34),其中在所述各子目录中的每一子目录中存在被同等地命名的资源, 其中所述各子目录中的每一子目录是单个直接父子目录的孩子目录,以及其中所述web应用程序的所述各版本中的每一版本通过提供不同的一组功能和不同的用户界面来提供不同的用户体验;组数据库(36),所述组数据库包括一组规则,所述一组规则中的每一规则指定一条件和所述web应用程序的所述各版本中的一个版本;以及当在计算设备(4)处被执行时引起所述计算设备(4)进行以下的指令 经由电子通信网络(8)从客户机设备(6)接收(60)指定与所述web应用程序相关联的资源的路径名的超文本传输协议(HTTP)请求;响应于接收到所述HTTP请求,判断(6 所述HTTP请求是否包括标识所述web应用程序的适用版本的版本标识符,其中所述web应用程序的所述适用版本是所述web应用程序的所述各版本中的一个版本;当所述HTTP请求不包括标识所述web应用程序的所述适用版本的版本标识符时,使用 (66)所述各规则来自动地从所述web应用程序的所述一组版本中标识所述web应用程序的所述适用版本;重写(6 所述HTTP请求,使得所述路径名包括存储与所述web应用程序的所述适用版本相关联的所述资源的所述子目录的所述子目录名称,由此引起所述路径名标识存储与所述web应用程序的所述适用版本相关联的所述资源的所述子目录中的资源;在重写所述HTTP请求之后,解除引用(70)由所述所重写的HTTP请求中的所述路径名标识的资源;以及生成(7 对所述HTTP请求的HTTP响应,所述HTTP响应含有由所述所重写的HTTP请求中的所述路径名标识的所述资源和将所述客户机设备配置成在与所述web应用程序相关联的随后的HTTP请求中包括标识所述web应用程序的所述适用版本的所述版本标识符的数据。
20.如权利要求19所述的计算机可读存储介质,其特征在于 还包括指定用户优选所述web应用程序的所述各版本中的第一版本的喜好数据;以及其中所述各指令部分通过引起所述计算设备在所述客户机设备由所述用户使用时使用所述喜好数据来将所述web应用程序的所述各版本中的所述第一版本标识成所述web应用程序的所述适用版本来引起所述计算设备自动地标识所述web应用程序的所述适用版本。
全文摘要
本公开内容描述使用主控设备来提供单个web应用程序的多个版本的技术。如下面详细描述,主控设备将与web应用程序的不同版本相关联的资源存储在不同的子目录中。当主控设备接收到与web应用程序相关联的请求时,主控设备自动地将该web应用程序的各版本中的一个版本标识成该web应用程序的适用版本。主控设备将该请求中的路径名重写成包括存储该web应用程序的适用版本的子目录的子目录名称。然后,主控设备解除引用由所重写的路径名标识的资源。以此方式,主控设备使用该web应用程序的适用版本的资源来处理该请求。
文档编号G06F3/06GK102165430SQ200980139100
公开日2011年8月24日 申请日期2009年9月2日 优先权日2008年9月29日
发明者M·A·伊万诺夫, M·H·李, V·V·瓦尔福洛梅耶夫, V·曼达瓦 申请人:微软公司
转载请注明原文地址:https://www.famiwei.com/read-5650176.html