• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • [WCF REST] 一個簡單的REST服務實例(2)

    發表于:2012-02-09來源:博客園作者:Artech點擊數: 標簽:REST服務實例
    14: HttpStatusCode.NotFound; 15: } 16: return employee; 17: } 18: 19: public void Create(Employee employee) 20: { 21: employees.Add(employee); 22: } 23: 24: public void Update(Employee employee) 25: {

      14: HttpStatusCode.NotFound;

      15: }

      16: return employee;

      17: }

      18:

      19: public void Create(Employee employee)

      20: {

      21: employees.Add(employee);

      22: }

      23:

      24: public void Update(Employee employee)

      25: {

      26: this.Delete(employee.Id);

      27: employees.Add(employee);

      28: }

      29:

      30: public void Delete(string id)

      31: {

      32: Employee employee = this.Get(id);

      33: if (null != employee)

      34: {

      35: employees.Remove(employee);

      36: }

      37: }

      38:

      39: public IEnumerable GetAll()

      40: {

      41: return employees;

      42: }

      43: }

      值得一提的是,不論是用于獲取某個指定ID的員工信息的Get方法,還是用于修改和刪除員工記錄的Update和Delete方法,當指定ID的員工不存在時都通過WebOperationContext表示當前Web操作上下文的對象將回復狀態設置為NotFound(即404 Not Found),這體現了我們的服務是基于Web的。

      接下來我們通過自我寄宿的方式對上面定義的EmployeesService服務進行寄宿,下面是相應的配置。我們為寄宿的服務添加了唯一一個終結點,并簡單地指定了其ABC三要素。和我們之前配置的終結點不同的是,在這里我們采用的綁定類型為WebHttpBinding。

      1:

      2:

      3:

      4:

      5:

      6: binding="webHttpBinding"

      7: contract="Artech.WcfServices.Service.Interface.IEmployees"/>

      8:

     

      9:

      10:

      11:

      最終我們通過如下的程序進行服務的寄宿。之前我們總是使用基于服務類型創建的ServiceHost進行服務寄宿,在這里我們使用的是ServiceHost它的子類WebServiceHost。

      1: using (WebServiceHost host = new WebServiceHost(typeof(EmployeesService)))

      2: {

      3: host.Open();

      4: Console.Read();

      5: }

      三、進行服務調用

      由于我們寄宿的服務完全是基于Web的,所以和普通的Web站點沒有本質的區別。由于EmployeesService服務的GetAll和Get操作支持HTTP-GET請求,所以我們完全可以在瀏覽器中針對操作的地址發起請求,而返回的數據可以直接顯示在瀏覽器上。下圖所示的是通過瀏覽器調用GetAll操作(http://127.0.0.1:3721/employees/all)得到的結果,我們可以看到所有員工的列表以XML的形式返回。

    image

      我們也可以通過瀏覽器調用Get操作并直接通過在地址中指定員工的ID(http://127.0.0.1:3721/employees/001)并得到以XML表示的基于相應員工的信息。下圖所示XML正式ID為001的Employee對象序列化后的結果。如果在請求地址中指定一個不存在的ID(比如http://127.0.0.1:3721/employees/003),由于Get方法中指定了回復狀態為NotFound,我們會得到類似于訪問資源不存在的錯誤信息,就像訪問一個不存在的Web頁面一樣。

    image

      上面我們演示了通過瀏覽器以HTTP-GET方式請求操作地址的方式從而直接將返回結果呈現出來,現在我們來演示如何使用通過ChannelFactory創建的服務代理進行服務調用。我們首先在作為客戶端應用程序的Client項目中創建一個App.config,并定義如下的配置。

      1:

      2:

      3:

      4:

      5:

      6:

      7:

      8:

      9:

      10:

      11:

      12: address="http://127.0.0.1:3721/employees"

      13: behaviorConfiguration="webBehavior"

      14: binding="webHttpBinding"

      15: contract="Artech.WcfServices.Service.Interface.IEmployees"/>

      16:

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>