[發明專利]注入組合查詢的單子評估有效
| 申請號: | 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.szxzyx.cn/pat/books/201210405280.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種攪拌器吹塑杯防水結構
- 下一篇:一種食品切磨裝置





