• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    使用WCF和NHibernate構(gòu)建REST應(yīng)用

    2014-04-29 00:00:00馬百利
    數(shù)字化用戶 2014年4期

    【摘 要】REST是一種面向資源的架構(gòu),是一種面向服務(wù)開發(fā)的解決方案,本文介紹怎么樣在 .NET 平臺下使用WCF和NHibernate技術(shù)構(gòu)建REST應(yīng)用。

    【關(guān)鍵詞】wcf NHibernate REST應(yīng)用

    一、REST簡介

    REST (REpresentation State Transfer,表述型狀態(tài)轉(zhuǎn)移)是2000年由Roy Fielding 首次提出,他是HTTP1.1協(xié)議的主要設(shè)計者。REST是一種風(fēng)格,而不是標(biāo)準(zhǔn),滿足這種設(shè)計風(fēng)格的應(yīng)用程序就是RESTFul。Roy Fielding在他的論文中描述了分布式信息系統(tǒng)是如何建造和運作的。他描述了資源之間的相互影響,以及在此類系統(tǒng)中唯一標(biāo)識符的角色,他也討論到了使用有限的一組操作和統(tǒng)一語義來建造一種到處存在的基礎(chǔ)架構(gòu),能夠支持任何類型的應(yīng)用。

    REST這種風(fēng)格是為面向互聯(lián)網(wǎng)的Web應(yīng)用而量身定做的。它是一種面向資源的架構(gòu)風(fēng)格,資源是REST中最關(guān)鍵的抽象概念,它們是能夠被遠程訪問的應(yīng)用程序?qū)ο?。一個資源就是一個標(biāo)識單位,任何可以被訪問或被遠程操縱的東西都可能是一個資源。資源可以是靜態(tài)的,也就是該資源的狀態(tài)永遠不會改變。相反,某些資源的狀態(tài)可能隨著時間推移呈現(xiàn)很大的可變性。這兩種類型的資源都是有效的。

    資源必須有一個標(biāo)識符,以便在Web上尋址,每個標(biāo)識符與一個或多個表述相關(guān)聯(lián)。一個表述,指的是某個資源在某特定時刻的狀態(tài)的轉(zhuǎn)化形式或者視圖。這個視圖被編碼為一種或多種可轉(zhuǎn)移的格式,例如XHMTL、Atom、XML、JSON,甚至是存文本、MP3或者JPEG。

    REST對資源的操作使用標(biāo)準(zhǔn)的HTTP接口,比如GET、PUT、POST、DELETE接口來實現(xiàn)查找、創(chuàng)建、修改和刪除的功能。接口中的每一個方法操作一個且僅有一個資源。每個方法的語義和含義不會因應(yīng)用程序或資源的不同而發(fā)生改變。

    傳統(tǒng)上,分布式系統(tǒng)開發(fā)將重點放在特定應(yīng)用的接口和交互式的形式來暴露定制的行為,與之相反,Web則將重點放在少量廣為人知的網(wǎng)絡(luò)動作(GET、POST等)以及公共的表述格式,來為我們提供影響力——直接的連接性以及從移動電話和嵌入設(shè)備到整個服務(wù)器集群普遍存在的支持,所有部分都共享一個公共的應(yīng)用基礎(chǔ)架構(gòu)。

    二、REST的實現(xiàn)

    在.NET平臺上實現(xiàn)REST服務(wù)首選WCF(Windows Communication Foundation)來進行通信。WCF在.NET 3.0中首次出現(xiàn),是微軟將以前通信技術(shù)(ASMX,Remoting)的一個統(tǒng)一,并在.NET 4.0中進行完善。它讓我們開發(fā)人員在開發(fā)分布式系統(tǒng)時有一個統(tǒng)一的接口,簡化我們編寫代碼的工作,以穩(wěn)固的方式支持HTTP、TCP/IP通信。

    WCF服務(wù)可以在WinForm、控制臺、Windows服務(wù)、IIS中進行承載,我們本文中選擇IIS中的ASP.NET進行承載服務(wù)。

    (一)類必須使用[ServiceContract]和[AspNetCompatibilityRequirements]特性進行標(biāo)注。

    [ServiceContract]

    [AspNetCompatibilityRequirements(RequirementsMode =

    AspNetCompatibilityRequirementsMode.Allowed)]

    public class MailService

    (二)方法還必須使用[OperationContract]特性,[WebGet]中的UrlTemplate即WCF的路由功能,使用它就可以創(chuàng)建REST風(fēng)格的服務(wù),ResponseFormat = WebMessageFormat.Json 表示返回的消息時候JSON進行包裝。如下所示:

    [OperationContract]

    [WebGet(UriTemplate = \"/Mails/{id}\", ResponseFormat = WebMessageFormat.Json)]

    public Mail GetById(string id)[OperationContract]

    [WebGet(UriTemplate = \"/Mails/{id}\", ResponseFormat = WebMessageFormat.Json)]

    public Mail GetById(string id)

    (三)在.NET4.0中的Web.Config中只需要配置serviceHostingEnvironment節(jié)點和services節(jié)點就可以把一個類庫中的方法暴露成服務(wù),無需創(chuàng)建真正的svc文件。若需要啟用服務(wù)的HTTP幫助,則需要把endpointBehaviors節(jié)點下的helpEnabled設(shè)置為true即可。

    (四)IIS 7.x默認不支持PUT和DELETE動詞,若想啟用PUT和DELETE動詞,則需要修改system.webServer節(jié)點。

    參考文獻:

    [1][美]Roy Thomas Fielding, 《Architectural Styles and the Design of Network-based Software Architectures》,2000

    [2][美]Roy Thomas Fielding,《REST APIs must be hypertext-driven》,2008.

    [3][美]David Gourley Brian Totty 等著,《HTTP權(quán)威指南》,人民郵電出版社.

    [4][美] Juval Lowy著,《WCF服務(wù)編程》,華中科技大學(xué)出版社.

    [5][美] Jim Webber等著,《REST實戰(zhàn)》,東南大學(xué)出版社

    [6][美] Dentler Jason著,《NHibernate 3.0 Cookbook》Packt Publishing.

    丹江口市| 平谷区| 顺昌县| 蒙自县| 曲麻莱县| 裕民县| 尚义县| 奉贤区| 公安县| 土默特左旗| 陆川县| 海阳市| 丁青县| 温州市| 友谊县| 八宿县| 丰顺县| 深水埗区| 车致| 疏勒县| 开远市| 肥西县| 新巴尔虎右旗| 辽阳市| 玉屏| 达州市| 新野县| 鹤峰县| 邓州市| 沈丘县| 天水市| 潼南县| 滨州市| 新安县| 固镇县| 岗巴县| 胶南市| 廊坊市| 玉溪市| 界首市| 青海省|