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

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF簡(jiǎn)單教程(1)入門(mén)-創(chuàng)新互聯(lián)

WCF是DotNet體系中很重要的一項(xiàng)技術(shù),但是組內(nèi)很多組員通過(guò)書(shū)籍自學(xué)的時(shí)候感覺(jué)涉及面太廣、配置文件太復(fù)雜,新名詞太多、抓不到頭緒,有感于此,決定進(jìn)行一次組內(nèi)技術(shù)培訓(xùn),順便把培訓(xùn)講義整理到blog上來(lái)。不求大而全,而是要讓初學(xué)者快速入門(mén),因此想入實(shí)例入手,并刻意隱藏一些初期用不到的內(nèi)容,以降低入門(mén)門(mén)檻。有任何錯(cuò)誤歡迎指正。

10年積累的成都網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有鎮(zhèn)海免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

注:本系列文章基于.Net Framework 3.5,以教程的最后會(huì)歸納一下到了4.0中有哪些差異。

----------------------- 分隔線 -----------------------

第一篇:入門(mén),構(gòu)建第一個(gè)WCF程序

1、服務(wù)端

建立一個(gè)控制臺(tái)應(yīng)用程序作為Server,新建一個(gè)接口IData作為服務(wù)契約。這個(gè)契約接口一會(huì)兒也要放到Client端,這樣雙方才能遵循相同的標(biāo)準(zhǔn)。別忘了添加對(duì)System.ServiceModel的引用。

  1. using System;

  2. using System.ServiceModel;

  3. using System.Text;

  4. namespace Server

  5. {

  6.   ///

  7.   /// 用ServiceContract來(lái)標(biāo)記此接口是WCF的服務(wù)契約,可以像WebService一樣指定一個(gè)Namespace,如果不指定,就是默認(rèn)的http://tempuri.org

  8.   ///

  9.   [ServiceContract(Namespace="WCF.Demo")]

  10.   public interface IData

  11.   {

  12.     ///

  13.     /// 用OperationContract來(lái)標(biāo)記此方法是操作契約

  14.     ///

  15.     [OperationContract]

  16.     string SayHello(string userName);

  17.   }

  18. }

針對(duì)這個(gè)接口建立實(shí)現(xiàn)類,這個(gè)類才是真正干活的,工作在服務(wù)端,不出現(xiàn)在客戶端:

  1. using System;

  2. using System.Text;

  3. namespace Server

  4. {

  5.   ///

  6.   /// 實(shí)現(xiàn)IData接口,此處不需要寫(xiě)契約標(biāo)記

  7.   ///

  8.   public class DataProvider : IData

  9.   {

  10.     public string SayHello(string userName)

  11.     {

  12.       return string.Format("Hello {0}.", userName);

  13.     }

  14.   }

  15. }

為工程添加一個(gè)App.config文件,這里面要定義與服務(wù)發(fā)布相關(guān)的參數(shù)。WCF中常見(jiàn)的做法是用代碼寫(xiě)服務(wù)邏輯,但是用配置文件來(lái)定義服務(wù)發(fā)布方式,這樣做的好處是松散耦合。

  1.  

  2.  

  3.  

  4.   

  5.   

  6.    

  7.     

  8.      

  9.     

  10.    

  11.    

  12.    

  13.   

  14.  

萬(wàn)事具備,只剩最后一步了,將服務(wù)發(fā)布出去:

  1. using System;

  2. using System.ServiceModel;

  3. namespace Server

  4. {

  5.   class Program

  6.   {

  7.     static void Main(string[] args)

  8.     {

  9.       //定義一個(gè)ServiceHost,注意參數(shù)中要使用契約實(shí)現(xiàn)類而不是接口

  10.       using(ServiceHost host = new ServiceHost(typeof(Server.DataProvider)))

  11.       {

  12.         host.Open();

  13.         Console.WriteLine("Service Running ...");

  14.         Console.ReadKey();

  15.         host.Close();

  16.       }

  17.     }

  18.   }

  19. }

有人可能會(huì)問(wèn)服務(wù)發(fā)布到哪去了?沒(méi)指定地址呀?這是一個(gè)初學(xué)者容易搞不明白的地方。

是的,此時(shí)App.config中的定義就發(fā)揮作用了,由于ServiceHost中指定對(duì)Server.DataProvider類服務(wù),而App.config中定義了name="Server.DataProvider"的service,其下有endpoint,定義了綁定方式是basicHttpBinding,而http方式的baseAddress只有一個(gè),就是 http://localhost:8080/wcf。

編譯運(yùn)行,屏幕顯示Service Running ... 就是正常跑起來(lái)了,此時(shí)如果用命令行 netstat -ano | findstr "8080" 看一下,應(yīng)該有如下輸出:

  1. TCP   0.0.0.0:8080     0.0.0.0:0      LISTENING    4

  2. TCP   [::]:8080       [::]:0       LISTENING    4

表示我們的程序已經(jīng)在TCP 8080端口開(kāi)始監(jiān)聽(tīng)了。值得注意的是PID是4,這是系統(tǒng)進(jìn)程而不是我們自己的進(jìn)程,這說(shuō)明WCF程序?qū)ν馓峁〩TTP服務(wù)時(shí),是借用了系統(tǒng)功能(http.sys)。

此時(shí)如果我們用瀏覽器訪問(wèn)一下 http://localhost:8080/wcf,不報(bào)錯(cuò),但是會(huì)提示“當(dāng)前已禁用此服務(wù)的元數(shù)據(jù)發(fā)布”,這是由于默認(rèn)不允許以http get方式獲取服務(wù)的WSDL,我們不用管它,不影響后面的使用,以后的章節(jié)中我們?cè)賮?lái)看這個(gè)問(wèn)題。


2、客戶端

再建立一個(gè)控制臺(tái)應(yīng)用程序作為Client,把Server中的接口IData拷過(guò)來(lái),因?yàn)檫@是服務(wù)契約。

為工程添加一個(gè)App.config文件,這里面要定義客戶端訪問(wèn)的相關(guān)參數(shù),這里我去掉了一些用不上的參數(shù),以保持配置文件簡(jiǎn)單,防止各位看暈了頭。

  1.  

  2.   

  3.   

  4.    

  5.    

  6.   

  7.  

然后寫(xiě)代碼,來(lái)調(diào)用Server端發(fā)布的SayHello方法:

  1. using System;

  2. using System.ServiceModel;

  3. using System.ServiceModel.Channels;

  4. namespace Client

  5. {

  6.   class Program

  7.   {

  8.     static void Main(string[] args)

  9.     {

  10.       //客戶端訪問(wèn)有多種方式,此處只顯示一種

  11.       //利用ChannelFactory的CreateChannel方法創(chuàng)建一個(gè)IData的代理對(duì)象,其中參數(shù)“DataService”就是剛才在App.config中定義的endpoint的名稱

  12.       var proxy = new ChannelFactory("DataService").CreateChannel();

  13. //調(diào)用SayHello方法

  14.       Console.WriteLine(proxy.SayHello("WCF"));

  15. //用完后一定要關(guān)閉,因?yàn)榉?wù)端有大連接數(shù),不關(guān)閉會(huì)在一定時(shí)間內(nèi)一直占著有效連接

  16.       ((IChannel)proxy).Close();

  17.     }

  18.   }

  19. }

編譯運(yùn)行,屏幕應(yīng)能正常打印出“Hello WCF.”。第一個(gè)入門(mén)demo就搞定了,應(yīng)該還是比較簡(jiǎn)單的。只是App.config的配置有些復(fù)雜,后面我們會(huì)看到,其實(shí)也可以不要配置,直接用代碼搞定,不過(guò)從松散耦合的角度講不建議這么做。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)名稱:WCF簡(jiǎn)單教程(1)入門(mén)-創(chuàng)新互聯(lián)
URL地址:http://www.dlmjj.cn/article/ecscj.html