ASP.NET Web API已支持OData v4.0,WCF不會
ASP.NET Web API 2.2 for OData v4.0 每日構建版現(xiàn)已發(fā)布。團隊還在 nuget 上發(fā)布了 OData 核心庫 6.1 版,其中包含數(shù)項 Bug 修復和新功能,尤其是增加了對 OData v4 規(guī)范的支持。不過,微軟的團隊表示,WCF 將不會獲得 OData v4 的特有功能。
最近,OData v4.0 和 OData JSON Format v4.0被采納為一項 OASIS 標準。讀者可以查看OData v4.0 有哪些新功能。
以下是 ASP.NET Web API 2.2 和 OData 核心庫的改進:
* 協(xié)議和格式從 V3 變到 V4
* OData 屬性路由
* 支持在 OData 模型中定義函數(shù)并綁定到控制器動作
* 模型別名——允許 OData 模型和 CLR Types 的類型或?qū)傩杂胁煌拿Q
* 可以定義模型的哪些屬性能夠過濾、排序、擴展或?qū)Ш?/p>
* 支持 ETags
* 支持枚舉
* 支持$format 查詢字符串選項,因此客戶端可以指定格式
* 支持單例
* 支持包含
已知的局限性:
還有許多 OData v4 功能不支持——此次發(fā)布的重點是與早期版本同等的功能以及少數(shù)幾項新功能
OData 核心庫能夠序列化 OData v4 Atom 格式,但由于 Atom 規(guī)范還沒有進入 CS2 階段,所以這不是官方支持。
在客戶端方面,有一個新程序包,但只支持 OData v4.0——如果客戶端需要使用 V1-3 以及 V4 的服務,那么開發(fā)人員不得不在應用程序中同時使用新舊程序包。
一個有些爭議的決定是,在使 WCF 成為一個構建 OData 服務的技術棧方面減少投資。OData Services 團隊是這樣說的“……對于作為創(chuàng)建 OData 服務技術棧的 WCF Data Services,我們確實計劃減少對它的投資。為了減輕由此造成的不便,我們正努力清理代碼,以便使它與 OData v4 兼容,而之后,我們會將該技術棧開源。我們不計劃在將 V4 的特有功能添加到 WCF DS 技術棧方面進行任何重大的投資。”
不過,社區(qū)仍然希望 WCF 能支持 OData 4.0。Adam 說:“由于我們的業(yè)務層是用 WCF DS 編寫的,所以對于這個決定,我覺得我們被扔在了車輪下。我們已經(jīng)花費了這么多精力來克服 WCF DS 的弱點(變更跟蹤支持、性能、包含、客戶端代理的可憐的 T4 支持、糟糕的 EF6 alpha 質(zhì)量提供程序等),愉快地等待新的 v4 版本的發(fā)布,想不到事到如今你們竟然放棄了它。這時候切換到 Web API,看來是我們?yōu)槟銈兊拿總€決定買單。我們可是微軟的黃金合作伙伴。”
還有其他人要求在 WCF 中支持 OData v4.0。我們只能等等看,微軟是否會改變這項決定。
讀者可以從編寫一個 OData v4.0 服務入手,并使用 OData 客戶端代碼生成器來生成客戶端代理類。