成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF初接觸實作之服務發布和使用

開發 后端
我們直接引用契約類庫,現實中可能因為開發團隊或語言等原因,客戶端不能直接引用契約類庫,這就需要服務端公布自己的契約、客戶端發現契約。

  之前兩篇隨筆的示例中客戶端直接引用契約類庫,現實中可能因為開發團隊或語言等原因,客戶端不能直接引用契約類庫,這就需要服務端公布自己的契約、客戶端發現契約。

  服務端:

  服務端通過配置服務行為,以元數據的形式公布服務。可以使用配置文件也可以使用代碼。

  1、使用配置文件:

  將之前的WCFDemo.Host.WithConfig項目的配置文件用WCF服務配置編輯器打開,新建服務行為配置:

這里就用默認的Name,實際項目中起個好聽的名字吧

  添加服務元數據:

設置元數據的HttpGetEnabled和HttpGetUrl:

選擇服務,設置其BehaviorConfiguration為剛添加的服務行為:

保存后的配置文件:

 

  1.   <?xml version="1.0"encoding="utf-8"?> 
  2.   <configuration> 
  3.   <system.serviceModel> 
  4.   <behaviors> 
  5.   <serviceBehaviors> 
  6.   <behavior name="NewBehavior0"> 
  7.   <serviceMetadata httpGetEnabled="true"httpGetUrl="http://localhost:5678/DemoService/metadata"/> 
  8.   </behavior> 
  9.   </serviceBehaviors> 
  10.   </behaviors> 
  11.   <services> 
  12.   <service behaviorConfiguration="NewBehavior0"name="WCFDemo.Services.DemoService"> 
  13.   <endpoint address="http://localhost:5678/DemoService"binding="basicHttpBinding"  
  14. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/>  
  15. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/>  
  16. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/> 
  17.   </service> 
  18.   </services> 
  19.   </system.serviceModel> 
  20.   </configuration> 

 

  使用配置文件的方式,程序代碼不需要任何修改。

  2、代碼方式:

  在WCFDemo.Host.WithoutConfig項目的啟動服務代碼處添加服務行為的處理代碼:

 

  1.   host = newServiceHost(typeof(DemoService));  
  2.   host.AddServiceEndpoint(typeof(IDemoService), newBasicHttpBinding(), "http://localhost:5678/DemoService");  
  3.   ServiceMetadataBehavior b = newServiceMetadataBehavior();  
  4.   b.HttpGetEnabled = true;  
  5.   b.HttpGetUrl = newUri("http://localhost:5678/DemoService/metadata");  
  6.   host.Description.Behaviors.Add(b);  
  7.   host.Opened += delegate{ label1.Text = "服務啟動";};  
  8.   host.Open(); 

 

  比原來多了4行添加服務行為的代碼。

  現在,運行兩個宿主程序中的任意一個,點擊啟動按鈕后,服務就啟動并發布了,客戶端可以發現契約并使用。

  客戶端:

  客戶端如何發現并使用服務,有2種方式:使用命令行svcutil生成文件、在IDE中添加服務引用。

  1、使用svcutil

  運行宿主并啟動服務;運行Visual Studio 命令提示,鍵入svcutil http://localhost:5678/DemoService/metadata,將生成一個DemoService.cs文件和一個output.config文件(可以通過/out:指定輸出目錄);

  在解決方案中添加一個Windows窗體應用程序WCFDemo.Client,為其添加引用System.ServiceModel和System.Runtime.Serialization;

  將剛才生成的兩個文件添加到項目,并將output.config改名為App.config;

  在窗體上放置一個Button和DataGridView,為Button的Click編寫代碼如下:

 

  1.   DemoServiceClient c = newDemoServiceClient();  
  2.   dataGridView1.DataSource = c.GetMonitorData(); 

 

  當然可以不用配置文件,newDemoServiceClient()中設置參數binding和remoteAddress。

  svcutil常用的選項有/out:、/config:、/noconfig:等,詳細用法這里就不介紹了。查看配置文件會發現里面內容很多,因為它自動為關鍵的綁定節點設置了默認值,這部分內容可以刪除,所以很多時候不使用svcutil生成的配置文件。

  2、添加服務引用

  右擊WCFDemo.Client,在添加服務引用對話框中輸入地址http://localhost:5678/DemoService/metadata,點擊“前往”按鈕:

給命名空間起個好名(示例中就用默認名)后確定。

  我們會發現,除了添加了服務引用,還修改了配置文件,如果原來沒有配置文件,添加服務引用后會自動添加配置文件。

  在窗體上再放置一個Button,為其Click編寫代碼如下:

 

  1.   ServiceReference1.DemoServiceClient c = newServiceReference1.DemoServiceClient();  
  2.   dataGridView1.DataSource = c.GetMonitorData(); 

 

  和前一個一樣,可以不用配置文件。

  服務器有兩種方案發布自己的元數據:基于HTTP-GET協議、使用專門的終結點。以上介紹的是前一種,下面介紹一下第二種。

  1、使用配置文件

  將之前的WCFDemo.Host.WithConfig項目的配置文件用WCF服務配置編輯器打開,新建服務終結點,并設置ABC:

  現在WCFDemo.Host.WithConfig已提供兩種發布服務的方式,啟動服務后,客戶端通過之前的地址http://localhost:5678/DemoService/metadata和剛才輸入的地址http://localhost:5678/DemoService/MEX,都可以找到服務。

  2、使用代碼方式

  在WCFDemo.Host.WithoutConfig項目的啟動服務代碼處增加一行添加終結點代碼:

 

  1.   host = newServiceHost(typeof(DemoService));  
  2.   host.AddServiceEndpoint(typeof(IDemoService), newBasicHttpBinding(), "http://localhost:5678/DemoService");  
  3.   ServiceMetadataBehavior b = newServiceMetadataBehavior();  
  4.   b.HttpGetEnabled = true;  
  5.   b.HttpGetUrl = newUri("http://localhost:5678/DemoService/metadata");  
  6.   host.Description.Behaviors.Add(b);  
  7.   host.AddServiceEndpoint(typeof(IMetadataExchange), newCustomBinding(newHttpTransportBindingElement()), "http://localhost:5678/DemoService/MEX");  
  8.   host.Opened += delegate{ label1.Text = "服務啟動";};  
  9.   host.Open(); 

 

  效果同上。

原文鏈接:http://www.cnblogs.com/Higel/archive/2011/12/28/2303031.html

【編輯推薦】

  1. 5月最新超有趣的免費jQuery插件推薦
  2. 從零開始學習jQuery之管理jQuery包裝集
  3. jQuery性能指標和調優
  4. 手把手教你jQuery jqPlot畫圖插件
  5. 從零開始學習jQuery之萬能的選擇器
責任編輯:彭凡 來源: 博客園
相關推薦

2010-06-11 16:59:09

DSR路由協議

2009-11-05 10:07:37

WCF設計模式

2009-10-22 18:06:31

CLR存儲過程

2009-01-22 10:31:28

2010-06-30 11:21:42

UML業務建模

2010-02-26 14:39:27

WCF服務寄宿

2010-03-02 16:28:11

WCF發布訂閱

2009-12-04 17:47:04

WCF 服務

2010-03-02 14:06:37

WCF服務實例管理模式

2009-12-08 16:59:52

WCF服務

2009-11-06 17:10:34

WCF服務性能計數器

2009-11-06 16:48:03

WCF簡介

2009-12-22 15:47:03

WCF服務器證書

2009-11-05 10:13:39

WCF框架

2009-11-05 09:43:11

WCF好處

2009-11-05 11:23:08

WCF宿主

2010-06-30 13:17:12

UML業務建模

2010-02-22 14:18:34

WCF服務驗證

2010-02-24 16:58:14

WCF Session

2009-11-06 09:30:35

WCF服務框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级欧美 | 国产欧美在线 | 日韩在线视频播放 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 涩涩视频在线观看免费 | 国产一区h| 欧美在线观看一区 | 成人精品鲁一区一区二区 | 精品国产乱码久久久久久丨区2区 | 国产成人亚洲精品 | 久久久久久国产精品免费免费男同 | 蜜桃久久 | 久久久国产精品视频 | 日本在线视频一区二区 | 日日拍夜夜 | 亚洲精品在线免费 | 久久五月婷 | 日本欧美在线观看视频 | 精品一区av | h视频免费在线观看 | 岛国av免费观看 | 亚洲手机视频在线 | 99久久婷婷国产精品综合 | 99久久99久久精品国产片果冰 | www.国产日本 | 国产精品久久久久久久久久 | 黄免费观看 | 成人高清在线视频 | 久久高清 | 国产一区久久久 | 天天操人人干 | 欧美午夜一区二区三区免费大片 | 亚洲福利视频一区二区 | 日本成人在线免费视频 | 亚洲a一区二区 | 午夜精品一区二区三区在线视频 | 久久精品小视频 | 91精品欧美久久久久久久 | 成人欧美一区二区三区在线播放 | 日韩在线综合 | 欧美日韩一卡 |