restFul簡介

RESTful

1.使用標準的HTTP方法(create,delete) 2.無狀態性:RESTful只要維護資源的狀態,而不須要維護客戶端的狀態。對於它來講,每次請求都是全新的,它只須要針對本次請求做相應的操做,不須要將本次請求的相關信息記錄下來以便用於後續來自相同客戶端請求的處理。 3.多資源表示方式 因爲REST是面向資源的,因此一個Web API旨在實現針對單一資源的操做。咱們在前面已經說個,針對資源的基本操做惟CRUD而已,這是使咱們能夠爲Web API定義標準接口成可能。所謂的標準接口就是針對不一樣資源的Web API定義一致性的操做來操做它們,其接口能夠採用相似於下面的模式。程序員

public class ResourceService
  {
      public IEnumerable<Resource>[] Get();
    public void Create(Resource resource);
   public void Update(Resource resource);
    public void Delete(string id);
}
複製代碼

好比咱們分別發送PUT和POST請求以添加一個員工,標識員工的URI由其員工ID來決定。若是員工ID由客戶端來指定,咱們能夠發送PUT請求;若是員工ID由服務端生成,咱們通常發送POST請求。具體的請求與下面提供的代碼片段相似,能夠看出它們的URI也是不同的。web

PUT http://www.artech.com/employees/300357 HTTP/1.1
 ...
 
  <employee>
    <id>300357</id> 
   <name>張三</name>
   <gender>男<gender>
  <birthdate>1981-08-24</birthdate>
   <department>3041</department>
</employee>

POST http://www.artech.com/employees HTTP/1.1
...
 
 <employee>
    <name>張三</name>
   <gender>男<gender>
  <birthdate>1981-08-24</birthdate>
   <department>3041</department>
 </employee>
複製代碼

POST和PUT請求通常將所加資源的內容置於請求的主體。可是對於PUT請求來講,若是添加資源的內容徹底能夠由其URI來提供,這樣的請求能夠不須要主體。好比咱們經過請求添加一個用於控制權限的角色,標識添加角色的URI由其角色名稱來決定,而且不須要指定除角色名稱的其它信息,那麼咱們只要發送以下一個不含主體的PUT請求便可。編程

PUT http://www.artech.com/roles/admin HTTP/1.1

 ...
複製代碼

除了進行資源的添加,PUT請求還能用於資源的修改。因爲請求包含提交資源的標識(能夠放在URI中,也能夠置於保存在主體部分的資源內容中),因此服務端可以定位到對應的資源予以修改。對於POST和PUT,也存在一種一刀切的說法:POST用於添加,PUT用於修改。我我的比較承認的是:若是PUT提供的資源不存在,則作添加操做,不然作修改。服務器

webservice:Webservice是使應用程序以與平臺和編程語言無關的方式進行相互通訊技術。

XML(標準通用標記語言下的一個子集):XML是在web上傳送結構化數據的偉大方式,Web services要以一種可靠的自動的方式操做數據,HTML(標準通用標記語言下的一個應用)不會知足要求,而XML可使web services十分方便的處理數據,它的內容與表示的分離十分理想;

SOAP:SOAP使用XML消息調用遠程方法,這樣web services能夠經過HTTP協議的post和get方法與遠程機器交互,並且,SOAP更加健壯和靈活易用;

其餘像UDDI和WSDL技術與XML和SOAP技術緊密結合用於服務發現。 從表面上看,Web service 就是一個應用程序,它向外界暴露出一個可以經過Web進行調用的API。這就是說,你可以用編程的方法經過Web來調用這個應用程序。咱們把調用這個Web service 的應用程序叫作客戶。例如,你想建立一個Web service ,它的做用是返回當前的天氣狀況。那麼你能夠創建一個ASP頁面,它接受郵政編碼做爲查詢字符串,而後返回一個由逗號隔開的字符串,包含了當前的氣溫和天氣。要調用這個ASP頁面,客戶端須要發送下面的這個HTTP GET 返回的數據就應該是這樣: 這個ASP頁面就應該能夠算做是Web service 了。由於它基於HTTP GET請求,暴露出了一個能夠經過Web調用的API。固然,Web service 還有更多的東西。 下面是對Web service 更精確的解釋: Web services是創建可互操做的分佈式應用程序的新平臺。做爲一個Windows程序員,你可能已經用COM或DCOM創建過基於組件的分佈式應用程序。COM是一個很是好的組件技術,可是咱們也很容易舉出COM並不能知足要求的狀況。 Web service平臺是一套標準,它定義了應用程序如何在Web上實現互操做性。你能夠用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要咱們能夠經過Web service標準對這些服務進行查詢和訪問。框架

技術支持

Web Service平臺須要一套協議來實現分佈式應用程序的建立。任何平臺都有它的數據表示方法和類型系統。要實現互操做性,Web Service平臺必須提供一套標準的類型系統,用於溝通不一樣平臺、編程語言和組件模型中的不一樣類型系統。這些協議有:編程語言

XML和XSD

可擴展的標記語言(標準通用標記語言下的一個子集)是Web Service平臺中表示數據的基本格式。除了易於創建和易於分析外,XML主要的優勢在於它既與平臺無關,又與廠商無關。XML是由萬維網協會(W3C)建立,W3C制定的XML SchemaXSD 定義了一套標準的數據類型,並給出了一種語言來擴展這套數據類型。 Web Service平臺是用XSD來做爲數據類型系統的。當你用某種語言如VB. NET或C# 來構造一個Web Service時,爲了符合Web Service標準,全部你使用的數據類型都必須被轉換爲XSD類型。如想讓它使用在不一樣平臺和不一樣軟件的不一樣組織間傳遞,還須要用某種東西將它包裝起來。這種東西就是一種協議,如 SOAP。分佈式

xml web service

SOAP

SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用於交換XML(標準通用標記語言下的一個子集)編碼信息的輕量級協議。它有三個主要方面:XML-envelope爲描述信息內容和如何處理內容定義了框架,將程序對象編碼成爲XML對象的規則,執行遠程過程調用(RPC)的約定。SOAP能夠運行在任何其餘傳輸協議上。例如,你可使用 SMTP,即因特網電子郵件協議來傳遞SOAP消息,這但是頗有誘惑力的。在傳輸層之間的頭是不一樣的,但XML有效負載保持相同。 Web Service 但願實現不一樣的系統之間可以用「軟件-軟件對話」的方式相互調用,打破了軟件應用、網站和各類設備之間的格格不入的狀態,實現「基於Web無縫集成」的目標。函數

WSDL

Web Service描述語言WSDL 就是用機器能閱讀的方式提供的一個正式描述文檔而基於XML(標準通用標記語言下的一個子集)的語言,用於描述Web Service及其函數、參數和返回值。由於是基於XML的,因此WSDL既是機器可閱讀的,又是人可閱讀的。 UDDI(Universal Description,Discovery,and Integration):統一描述、發現和集成,用於集中存放和查找WSDL描述文件,起着目錄服務器的做用。 UDDI 的目的是爲電子商務創建標準;UDDI是一套基於Web的、分佈式的、爲Web Service提供的、信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業可以發現的訪問協議的實現標準。post

調用RPC與消息傳遞

Web Service自己實際上是在實現應用程序間的通訊。咱們有兩種應用程序通訊的方法:RPC遠程過程調用 和消息傳遞。使用RPC的時候,客戶端的概念是調用服務器上的遠程過程,一般方式爲實例化一個遠程對象並調用其方法和屬性。RPC系統試圖達到一種位置上的透明性:服務器暴露出遠程對象的接口,而客戶端就好像在本地使用的這些對象的接口同樣,這樣就隱藏了底層的信息,客戶端也就根本不須要知道對象是在哪臺機器上。網站

相關文章
相關標籤/搜索