[发明专利]注入组合查询的单子评估有效
申请号: | 201210405280.5 | 申请日: | 2012-10-22 |
公开(公告)号: | CN102902595A | 公开(公告)日: | 2013-01-30 |
发明(设计)人: | B.贝克曼;E.格森;G.金基;A.巴-齐夫;S.钦奈;H.J.M.梅杰 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 刘鹏;汪扬 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 注入 组合 查询 单子 评估 | ||
背景技术
计算机之间的数据交换可以采用客户机-服务器通信、点到点通信、进程到进程通信等形式。一些已有的系统尝试通过预先编程一个设备从另一个设备接收的数据查询来预期这些数据查询。然而,此类系统需要相当多的资源,并且无法预期每一个可能的数据查询。其他已有的系统允许设备创建命令式查询,例如在JAVASCRIPT脚本语言中。然而,对此类系统来说,这些查询会因为所述查询所具有的长度及其句法复杂度而难以构成、序列化和解析。更进一步,至少由于命令式查询考虑了执行来自不可信的来源的代码(例如执行不受限制的分配和拷贝),所述命令式查询会暴露出安全漏洞。就此而论,这些现有系统无法防止或包含那些已被注入到经由超文本传输协议(HTTP)之类的传输协议发送的通信之中的恶意查询的执行。
发明内容
本公开的实施例允许将操作双向、动态可编程地注入到第一进程与第二进程之间的通信中。第二进程从第一进程接收一个或多个具有闭包的运算符的序列。所述闭包代表的是第二进程在单子(monad)内部应用的一个或多个函数。第二进程对所接收的具有闭包的运算符进行评估,以便执行函数。在评估过程中,所述闭包被转换成简单类型的闭包。更进一步,对具有经过转换的闭包的运算符所进行的评估将被绑定在单子内部,以便限制函数的运行。
本概述是为了以简化形式引入精选概念而被提供的,并且在以下的详细描述中将会进一步描述这些概念。本概述的目的既不是唯一确定所保护主题的关键或决定性要素,也不是帮助确定描述所保护的主题的范围。
附图说明
图1是示出了第一进程与第二进程进行通信来获取具有查询注入的数据的例示框图。
图2是示出了用以评估所接收的具有闭包的运算符的第二进程的操作的例示流程图。
图3示是出了通过与web服务进行通信来获取具有查询注入的数据的客户机设备的例示框图。
图4是示出了对作为统一资源定位符(URL)中具有lambda表达式的运算符嵌入的查询所进行的单子处理的例示流程图。
图5是示出了用于注入查询的单子处理(monadic processing)的计算设备上的计算机可执行组件的例示框图。
在附图中,相应的参考字符指示相应的部分。
具体实施方式
参考附图,本公开的实施例允许评估可动态编程、组成的非命令式(non-imperative)查询。在一些实施例中,使用了查询运算符集合的声明闭包(declarative closure)是在用于web应用和移动应用中的双向查询注入的脚本语言中实施的。
虽然这里的一些示例是参考lambda表达式公开的,但是本公开的各方面并不局限于lambda表达式,而是可以结合任何形式的闭包或其他闭合表达式来操作。例如,这里的实施例是可以与匿名内部类一起操作的。
本公开的方面包括能对可枚举的数据集合(例如其元素在指定时间在存储器中是可用的)或异步数据集合(例如其元素是在不同时间到达的)实施组合查询的查询运算符集合。枚举量(enumerables)代表的是分布在空间域上的数据,而可观测量(observables)代表的则是分布在时间域上的数据。举个例子,枚举量可以跨越包括存储器、本地磁盘存储器、远端数据库等等在内的空间域。利用枚举量,可以将应用编写成好像所有数据在存储器中是同时可用的,即使这些数据在物理上分布于多个设备。在可观测模型中,应用被编写成好像数据是以不可预测的方式分布于时间上的,即使一些或所有数据在特定时间是部分可用的。
由于是可编程的,本公开的方面中的查询允许应用开发人员以不可预测的方式来使用服务器或web应用的数据资源。例如,在这里没有必要使用客户机可能希望的所有可能的查询来对服务器进行预先编程。由于一些不可预测的方式可能是恶意的,因此,本公开的方面设想了沙箱、类型检查、超时、重启及其他手段来防止运行恶意功能。就此而论,本公开的方面能够实现可编程的web服务,例如web服务304。举例来说,组合查询是模块化的,并且很容易在图形用户界面中构造(例如按钮、下拉列表、菜单等等)。这些查询由具有lambda表达式的一个或多个运算符的管道序列(例如查询管道或单子管道)组成。管道序列中的每一个阶段都包括具有至少一个lambda表达式的至少一个运算符。由于这些具有lambda表达式的运算符很短并且是声明式的,因此,具有lambda表达式的运算符是以很低的成本发送、签名、记入日志、解析、处理、分析、改写、编译、沙箱化及归档的,而这至少会使处理得以简化。这些查询可以由服务器使用网络套接字和/或基于事件的输入-输出环境来实现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210405280.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种搅拌器吹塑杯防水结构
- 下一篇:一种食品切磨装置