日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
WCF初接觸實作之服務發(fā)布和使用

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

創(chuàng)新互聯從2013年創(chuàng)立,先為象州等服務建站,象州等地企業(yè),進行企業(yè)商務咨詢服務。為象州企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

服務端:

服務端通過配置服務行為,以元數據的形式公布服務??梢允褂门渲梦募部梢允褂么a。

1、使用配置文件:

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

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

添加服務元數據:

設置元數據的HttpGetEnabled和HttpGetUrl:

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

保存后的配置文件:

 
 
 
 
  1.    
  2.    
  3.    
  4.    
  5.    
  6.    
  7.    
  8.    
  9.    
  10.    
  11.    
  12.    
  13.   
  14. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/>  
  15. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/>  
  16. bindingConfiguration=""contract="WCFDemo.Contracts.IDemoService"/> 
  17.    
  18.    
  19.    
  20.    

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

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行添加服務行為的代碼。

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

客戶端:

客戶端如何發(fā)現并使用服務,有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:等,詳細用法這里就不介紹了。查看配置文件會發(fā)現里面內容很多,因為它自動為關鍵的綁定節(jié)點設置了默認值,這部分內容可以刪除,所以很多時候不使用svcutil生成的配置文件。

2、添加服務引用

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

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

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

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

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

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

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

1、使用配置文件

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

現在WCFDemo.Host.WithConfig已提供兩種發(fā)布服務的方式,啟動服務后,客戶端通過之前的地址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性能指標和調優(yōu)
  4. 手把手教你jQuery jqPlot畫圖插件
  5. 從零開始學習jQuery之萬能的選擇器

標題名稱:WCF初接觸實作之服務發(fā)布和使用
鏈接URL:http://www.dlmjj.cn/article/copjioj.html