通过映射表达式求值的web站点实现的制作方法

文档序号:6360834阅读:179来源:国知局
专利名称:通过映射表达式求值的web站点实现的制作方法
通过映射表达式求值的web站点实现
背景技术
—种形式的web站点实现发生于,例如,当web应用在执行过程中检索、仓ll建、修改、或以其他方式提供web页面时。有时使用web应用框架来创建web应用。例如,通过提供数据库存取的库、提供模板、管理进程、和促进代码重用,这样的框架可有助于web应用开发。Web应用框架可有助于编程者建立动态web站点、web应用、和web服务。还可使用web-脚本工具实现web站点。内嵌在HTML源中的脚本可由web服务器编译来生成web页面。

发明内容
开发可缩放的动态web应用可能是复杂且挑战性的项目。此处描述的一些实施例提供方法,其通过允许编程者使用包含表达式(其求值按需生成web页面)的声明性结构可 使得web站点实现更为容易。例如,一些实施例接收HTTP请求,其包括路径、和从路径到可套用映射数据结构的表达式的映射;该映射数据结构可包括共同代表web站点的多个表达式。在不必要对映射数据结构的其他表达式进行求值的情况下,求值表达式提供了结果。对于HTTP请求的HTTP响应,包含求值结果,被生成并被提供,如,以动态web页面、图像、级联样式表、或另一个web资源的形式。在一些实施例中,还可生成,对于FTP请求、以及对于使用分层命名规范的其他网络应用层请求的响应。在一些实施例中,用声明性(相对于命令性)编程语言写成表达式。表达式的求值可包括,与特定声明性编程语言的规则一致,进行解析或进行函数调用。求值还可使用声明性编程语言的惰性求值机制。表达式可包括,例如,对于返回在路径中被指定的文件的内容的函数、或返回文本串的函数的调用,或者表达式可求值为文本串。在一些情况下,表达式可调用产生副作用的函数,如,DELETE, PUT, POST等。一些实施例递归地将目录名映射为文件名的映射;一些递归地映射可动态建构的记录,记录包括至少一个字段-值对。在一些实施例中,在映射数据结构(用M编程语言版本中被声明)中发生表达式。一些实施例提升了可缩放性。例如,一些在网络中的不同机器上接收多个HTTP请求、在不同机器上对相同映射数据结构的表达式(多个)同时进行求值、同时生成各个HTTP响应、且向着请求的各源发送各个HTTP响应。特定地,可生成包含web站点内容流的HTTP响应。在一些实施例中,惰性表达式求值器(lazy expression evaluator)的副本对同一个表达式求值且驻留在网络中的无状态中间层中,藉此提升可缩放性。一些实施例电子地声明计算机数据结构,其将统一资源标识符(URI)路径的各部分映射到各个表达式。该映射可以是递归的。基于已经被声明性作出的自动定位的依赖性,使得数字web站点内容对于全自动的求值机制是可电子地访问的,求值机制可用于执行表达式的惰性求值。一些实施例实现任意大的web站点,即,在没有表达式的惰性求值的情况下,对于存储大小具有未被固定的上限的web站点。通过提供表达式的映射数据结构来代表web站点的分层结构、以及通过提供枚举器、字符阵列、和/或比特阵列来代表web站点的内容,一些实施例建模了 web站点。所给出的示例只是说明性的。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。相反地,提供本发明内容是为了以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明由权利要求书限定,在本发明内容与权利要求书有冲突的情况下,应该以权利要求书为准。附图描述将参考附图给出更具体的描述。这些附图只示出了选定的方面,且因此不完全确定覆盖或范围。图I是示出客户机并且还示出经配置的存储介质实施例的框图,该客户机具有至少一个处理器和至少一个存储器、向服务器做出请求的一个或多个应用、以及操作环境中可存在于多个网络节点上的其他项目;
图2是数据流程图,示出在示例性体系结构中使用经惰性求值的声明性映射表达式进行web站点实现的各方面;和图3和4共同是示出某种过程的步骤和经配置的存储介质实施例的流程图。
具体实施例方式概览一个广泛使用的web应用框架是可从微软公司获得的ASP. NETTM框架。ASP.NET技术帮助编程者建立动态web站点、web应用、和web服务;其遵循微软的动态服务器页面(ASP)技术。ASP. NET环境使用微软公共语言运行时(CLR),允许编程者使用多种所支持的编程语言写ASP. NET代码。还可使用诸如ASP和PHP脚本实现web站点。PHP,也称为超文本预处理器,是被广泛使用的通用目的编程语言,其最初被设计用于动态web页面的web开发。PHP代码可被嵌入在HTML源中,且可由web服务器PHP处理器所编译,所述处理器使用PHP生成web页面。尽管ASP. NET技术和其他熟悉的技术是有帮助的,但是开发可缩放动态web应用仍可是非常困难的。此处描述的一些实施例,通过允许开发者使用惰性求值的声明性映射数据结构,来使得可缩放动态web应用的创作更为容易。一些实施例提供使用惰性求值的声明性映射数据结构实现web站点的机制,其中通过构成该映射数据及结构的表达式计算web站点的内容。映射指定了 HTTP响应如何对应于映射数据结构的部分。在映射数据结构中仅对于给性HTTP请求所请求的部分需要被计算,藉此提升了效率和灵活性两者。现在将参考诸如附图中所示出的那些示例性实施例,并使用特定语言来对其进行描述。但是,相关技术领域的且拥有本公开内容的技术人员将想到的对此处所示出的特征的更改和进一步的修改以及对本文所示的原理的其他应用,都应该被视为在权利要求的范围内。在本公开中阐明了各术语的含义,因此应该在仔细关注这些阐明的情况下阅读权利要求书。给出了具体示例,但是相关领域的技术人员将理解其他示例也可落在所使用的术语的含义范围内以及落在一个或多个权利要求的范围内。术语在这里不一定具有与它们在一般用途中、在特定行业的用途中、或在特定词典或词典集中所拥有的相同含义。附图标记可以与各种措词一起使用,以帮助示出术语的广度。从给定文本片段中省略附图标记不一定意味着没有通过文本讨论附图的内容。发明人声称并行使其对于其自己的词典编纂的权利。这里可在具体实施方式
中和/或在申请文件的别处显式地或隐式地定义术语。如本文所使用的,“计算机系统”可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、和/或提供至少部分地由指令控制的一个或多个处理器的其它设备。指令可以采取存储器中的软件和/或专门电路的形式。具体而言,虽然可发生许多实施例在工作站或膝上型计算机上运行,但是其他实施例也可以在其他计算设备上运行,并且任何一个或多个这样的设备都可以是给定实施例的一部分。“多线程化”计算机系统是支持多个执行线程的计算机系统。术语线程应被理解为包括能够或经历同步的任何代码,并且可用另一名称来称呼,如“任务”、“进程”或“协同例程”。线程可以并行地、按顺序、或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合来运行。在各种配置中都已设计了多线程化环境。执行线程可以并行地运行,或者线程可以被组织为并行执行,但是实际上轮流按顺序执行。例如,多线程化可以通过在多处 理环境中在不同核上运行不同线程、通过对单个处理器核上的不同线程进行时间分片、或者通过时间分片和多处理器线程化的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、由用户空间信号、或由用户空间和内核操作的组合来发起。线程可以轮流对共享数据进行操作,或者例如每一线程都可以对其自己的数据进行操作。“逻辑处理器”或“处理器”是单个独立的硬件线程处理单元。例如,每一个核运行两个线程的超线程化四核芯片具有8个逻辑处理器。处理器可以是通用的,或者它们可以针对诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等特定用途来定制。“多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境存在于各种配置中。在一给定配置中,所有处理器可在功能上相同,而在另一配置中,由于具有不同的硬件能力、不同的软件分配或两者,某些处理器可与其他处理器不同。取决于配置,处理器可在单个总线上紧密地彼此耦合,或它们可松散地耦合。在某些配置中,处理器共享一中央存储器,在某些配置中,它们各自具有自己的本地存储器,在某些配置中,存在共享和本地存储器两者。“内核”包括操作系统、系统管理程序、虚拟机、以及类似的硬件接口软件。“代码”指的是处理器指令、数据(包括常量、变量、以及数据结构)、或指令和数据两者。“自动地”指的是使用自动化(例如,由用于这里所讨论的特定操作的软件配置的通用计算硬件),与没有自动化相对。特别地,“自动地”执行的步骤不是由手在纸上或在人的头脑中执行的,它们是用机器执行的。贯穿本文,对可选的复数的使用意味着存在一个或多个所指示的特征。例如,“请求(多个)”意味着“一个或多个请求”或等效于“至少一个请求”。贯穿本文,除非另外明确表明,否则对过程中的某一步骤的任何引用都假定该步骤可直接由所关注的一方执行和/或由该方通过介入机制和/或介入实体而间接地执行,且仍然在该步骤的范围内。也就是说,除非直接执行是被明确表明的要求,否则并不要求由关注方对步骤的直接执行。例如,涉及所关注的一方的诸如向目的地“传送”、“发送”或“传递”等动作的步骤可涉及某一其他方的诸如转发、复制、上传、下载、编码、解码、压缩、解压、加密、解密等中间动作,但仍被理解为由该所关注的一方直接执行。在参考数据或指令时,要理解这些项目配置了计算机可读存储器,从而将其变换为特定物品,而非简单地存在于纸张上、人的头脑中、或作为例如线路上的瞬时信号。操作环塏参看

图1,实施例的操作环境100可包括客户机101设备(多个)和服务器103设备(多个),其中每一个可包括计算机系统102。计算机系统102的每一个可以是多处理器计算机系统,或者不是。操作环境可包括给定计算机系统中的一个或多个机器,它们可以是群集的、客户机-服务器联网的、和/或对等联网的。人类用户104可以通过使用显示器、键盘、及其他外围设备106与计算机系统102进行交互。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人操作的自动化代理也可以是用户104。在某些实施例中,存储设备 和/或联网设备可以被认为是外围设备。图I中未示出的其他计算机系统可以与计算机系统102进行交互,或者例如通过网络接口设备使用到网络108的一个或多个连接与另一系统实施例进行交互。每一个计算机系统102包括至少一个逻辑处理器110。所示出的每一个计算机系统102与其他合适的系统一样,还包括一个或多个计算机可读非瞬态存储介质112。介质112可以是不同的物理类型。介质112可以是易失性存储器、非易失性存储器、被安装就位的介质、可移动介质、磁介质、光学介质、和/或其他类型的非瞬态介质(而不是诸如只传播信号的线路之类的瞬态介质)。具体而言,诸如CD、DVD、记忆棒、或其他可移动非易失性存储器介质之类的经配置的介质114在被插入或以其他方式安装时可以在功能上变为计算机系统的一部分,从而使其内容可被访问以供处理器110使用。可移动的经配置的介质114是计算机可读存储介质112的示例。计算机可读存储介质112的某些其他示例包括内置RAM、ROM、硬盘、以及其他不能被用户104轻松地移走的存储设备。介质114用可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义被使用以包括机器代码、可解释代码、以及在例如虚拟机上运行的代码。介质114还被配置有数据118,该数据通过指令116的执行被创建、修改、引用和/或以别的方式使用。指令116和数据118配置它们所驻留的介质114 ;当该存储器是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在某些实施例中,数据118的一部分代表了诸如产品特征、清单、物理测量值、设定、图像、读数、目标、卷等等之类的现实世界的项。也如本文中所讨论地来变换这样的数据,例如,通过定位、映射、惰性求值、声明、生成、调用、绑定、部署、执行、修改、显示、创建、加载和/或其他操作来变换请求。诸如web浏览器、媒体播放器、电子邮件管理器、和/或游戏管理器之类的应用120,例如,做出请求122 (—般通过协议栈或其他网络层124的方式)经由网络108来获得web站点126内容128 (诸如文件130),从而更新显示器132。图中所示的应用程序120、其他软件、请求122、和其它项可以部分地或全部地驻留在一个或多个介质112中,从而配置这些介质。操作环境也可以包括其他硬件134,例如,总线、电源,和图形加速器。在图I中以轮廓形式示出了各项以强调它们不必是所示出的操作环境的一部分,但是可以与操作环境中的项进行交互操作,如此处所讨论的。未采用轮廓形式的项在任何附图或任何实施例中也不一定是必需的。
MM图2示出了适合与一些实施例一起使用的体系架构。系统实施例可被看做支持过程实施例,反之亦然。假设客户机101经由网络108向服务器103发送请求122。使用熟悉的web浏览器或其他熟悉的应用120可创建请求122。在一些实施例中,在请求122中不要求特殊的语法或语义;在这个程度上而言,服务器中的实施例的存在对于客户机而言是透明的。请求122具有各部分202。例如,HTTP请求具有诸如“http://”或“https://”之类的前缀、诸如GET之类的方法或动词、和诸如统一资源标识符(URI)之类的路径204或另一路径204。在获取文件130的请求122中,路径204 —般包括目录名206和文件名208。一些实施例在服务器103使用映射数据结构210处理请求122,该映射数据结构包括请求部分(多个)202到表达式214的映射212,一旦对该表达式214求值,产生对于该请 求的响应。惰性表达式求值器216对表达式(多个)214求值,在映射212下,该表达式对应 于特定请求122。该表达式可用声明性编程语言218写,诸如M编程语言的一个版本、或配备被有惰性表达式求值器216的另一个编程语言,该求值器216用于对表达式求值,其描述了应该提供什么结果220,而不是描述如何去计算该结果。表达式求值的结果220,诸如文件内容222、128,在响应224中发送回客户机101。在一些实施例中,在响应224中不要求特殊的语法或语义;其中,服务器的实施例的存在对于客户机而言是透明的。参看图I和2,一些实施例向计算机系统102提供逻辑处理器110和存储器介质112,该存储器介质112由电路、固件和/或软件来配置以通过此处描述的将请求部分映射为惰性求值的表达式将请求122变换成响应224。例如,在一些实施例中,计算机系统102包括至少一个逻辑处理器110和与该逻辑处理器(多个)进行可操作通信的存储器112。该存储器位于至少一个机器中;在一些实施例中,存储器位于多个服务器103中。映射212驻留在存储器中且将网络应用层124的部分202映射为各个表达式214。惰性表达式求值器216也驻留在存储器中。求值器216用于响应于请求来对表达式求值,且更特定地,响应于寻求对内容128进行访问的请求的一部分P,来对表达式E求值。通过映射数据结构210,请求部分P被映射至表达式E。映射数据结构210包括一个或多个表达式、和用于选择部分202并将它们映射至表达式(多个)的相关联的映射212代码。如此处所使用的,“服务器” 103可以是单个目的地机器,或其可以是中间机器,或机器的集合。例如,可在并非将响应224发送至客户机的服务器机器的不同服务器机器上计算响应结果220。在一些实施例中,该系统包括配置介质122的HTTP请求122和/或FTP请求122。在一些实施例中,该系统包括使用某个其他分层命名方案的网络应用层请求122。惰性表达式求值器216用于响应于请求122来对表达式求值。尽管此处使用HTTP作为常用示例,在一些实施例中,映射数据结构210将FTP请求映射至表达式。像HTTP —样,FTP具有适于这样的映射的分层命名方案。在一些实施例中,惰性表达式求值器216的副本驻留(配置存储器和/或其他介质112)在网络108中的无状态中间层中。在一些情况下,这些多个求值器(或其子集)对同一个表达式214求值。可理解的是,将计算的无状态副本放在多个机器上倾向于提升可缩放性。
在一些实施例中,在一些情况下,可直接对映射中的表达式214求值,而在其他情况下,该表达式调用返回值是表达式值的计算的一部分的函数。在一些情况下,在表达式214中所调用的函数(多个)可包括在声明性编程语言环境中所支持的任何函数。函数可以是通用目的,诸如数据库访问或电子邮件通知生成器、或函数可被修改以适应特定动态web站点。在一个实施例中,例如,映射中的表达式214包括对于File-Contents函数的调用,该函数用于返回文件的内容作为二进制数据。在映射数据结构210的键-值对实现中,例如,键“b. gif”的值是用路径“c: \b. gif”调用函数File: Contents的结果,其将文件内容返回为二进制数据。在一些实施例中,该系统在存储器中包含标识文件130的网络应用层请求122、请求被映射至其的表达式214、和惰性表达式求值的结果220。在一些情况下,结果220包括为文件指定内容类型的元数据。文件内容类型可由,例如,文件名208内的扩展所确定。在一些实施例中,映射212是递归的。例如,一个映射数据结构210被递归地声明 如下
权利要求
1.一种用数据和指令配置的计算机可读非瞬态存储介质,所述指令在被至少一个处理器执行时使所述处理器(多个)执行用于实现web站点的过程,所述过程包括以下步骤 接收包括路径的HTTP请求; 映射所述路径的至少一部分来定位可嵌套数据结构中的表达式E,所述数据结构包含共同代表所述web站点的多个表达式; 对所述表达式E求值,藉此获得结果R,同时避免对所述数据结构的其他表达式求值;和 对连续的表达式(多个)E和对应的连续结果(多个)R重复所述映射和求值步骤,直到求值步骤获得web站点内容作为结果R-最后;且然后 生成对于所述HTTP请求的HTTP响应,所述HTTP响应包含所述结果R-最后。
2.如权利要求I所述的经配置的介质,其特征在于,所述表达式E用声明性(相对于命令性)编程语言编写,且所述求值步骤包括下列各项中的至少一项 使用至少基于所述声明性编程语言的句法规则的解析器,解析所述表达式E ; 执行函数,所述函数是使用所述声明性编程语言的调用机制被调用的; 使用所述声明性编程语言的惰性求值机制。
3.如权利要求I所述的经配置的介质,其特征在于,所述映射步骤包括下列各项中的至少一项 将文件名映射至表达式,所述表达式包含对于返回所述文件的内容的函数的调用; 将文件名映射至表达式,所述表达式包含对于返回文本串的函数的调用; 将文件名映射至表达式,所述表达式对文本串求值; 递归地将目录名映射至文件名的映射; 递归地映射可动态构建记录,所述记录包括至少一个字段-值对。
4.如权利要求I所述的经配置的介质,其特征在于,如所声明的依赖性(多个)所指示地,所述过程至多对所述数据结构的最小部分,即,其求值是用于生成所述HTTP响应的预先条件的部分,进行求值。
5.如权利要求I所述的经配置的介质,其特征在于,所述映射步骤至少将所述路径的一部分映射至数据结构中的表达式E,所述数据结构采用动态类型化的编程语言被声明。
6.如权利要求I所述的经配置的介质,其特征在于,所述经配置的介质驻留在网络中的不同机器上,且所述过程包括 在所述不同机器上接收来自多个源的多个HTTP请求; 在所述不同机器上同时对同一个数据结构的表达式(多个)求值; 同时生成各个HTTP响应;和 向所述多个源发送所述各个HTTP响应。
7.一种用于实现web站点的过程,所述过程包括 电子地声明计算机数据结构,其将统一资源标识符(URL)路径的部分映射至各个表达式,被声明的数据结构驻留在计算机可读存储介质中并配置所述介质;和 基于已经被声明性作出的自动定位的依赖性,使得数字web站点内容对于全自动的求值机制是可电子地访问的,所述求值机制用于执行所述表达式的惰性求值。
8.如权利要求7所述的过程,其特征在于,所述声明步骤电子地声明如下各项中的至少一项 从文件名到表达式的映射,所述表达式包含对于返回所述文件的内容的函数的调用; 从文件名到表达式的映射,所述表达式对文本串求值; 动态可构建的记录的递归映射。
9.如权利要求7所述的过程,其特征在于,所述过程实现任意大的web站点,S卩,在没有表达式的惰性求值的情况下,对于存储大小具有未被固定的上限的web站点。
10.如权利要求7所述的过程,其特征在于,通过建模所述数据结构来代表web站点分层结构、以及通过提供以下各项中的至少一项来代表web站点内容,该过程建模所述web站点枚举器、字符阵列、和字节阵列。
11.一种计算机系统,包括 至少一个逻辑处理器; 可操作地与所述逻辑处理器(多个)进行通信的存储器,所述存储器位于至少一个机器中; 映射,驻留在所述存储器中,其将网络应用层的部分映射为各表达式,这些表达式一旦求值,产生对于所述请求的响应; 惰性表达式求值器,驻留在所述存储器中,且用于响应于对被映射至表达式的请求部分进行访问的请求,对表达式求值。
12.如权利要求11所述的系统,其特征在于,所述系统还包括以下各项中的至少一项HTTP请求、FTP请求、使用分层命名方面的另一个网络应用层请求;且其中,所述惰性表达式求值器用于响应于所述请求对表达式求值。
13.如权利要求11所述的系统,其特征在于,所述系统包括对同一个表达式求值、且驻留在网络中无状态中间层的多个机器上的惰性表达式求值器的副本。
14.如权利要求11所述的系统,其特征在于,所述映射是递归的。
15.如权利要求11所述的系统,其特征在于,所述映射中的表达式包括对于用于产生副作用的函数的调用。
全文摘要
使用从路径到表达式的映射来建模web站点。表达式的映射数据结构代表web站点的分层结构、且枚举器、字符阵列、或字节阵列代表了web站点的内容。表达式用声明性编程语言编写,且被惰性地求值来提供用在HTTP响应中的结果。映射可以是递归的。例如,表达式可包含函数调用,该函数返回在HTTP请求路径中所指定的文件的内容,或该表达式可求值为文本串。表达式可调用产生副作用的函数。表达式可递归地将目录名映射至文件名的映射。通过同时对无状态中间层上的不同机器上的表达式(多个)进行求值、且通过流传送结果,促进了可缩放性。以此方式可实现任意大的web站点。
文档编号G06F17/20GK102934104SQ201180028523
公开日2013年2月13日 申请日期2011年5月20日 优先权日2010年6月8日
发明者E·B·克里斯腾森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1