多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > WCF--建立簡單的WCF服務

WCF--建立簡單的WCF服務

來源:程序員人生   發布時間:2014-11-15 01:19:46 閱讀次數:2664次
在VS2010里建立1個最簡單的WCF服務,基本流程以下:
 
1:新建WCF利用
首先,新建1個WCF服務的利用,以下圖所示

建立完成以后,VS將自動生成1個最簡單的WCF工程,在這個利用中,包括了最基本Contract、Service。

工程以下:

不需要編輯任何文件,直接編譯生成,得到1個WcfService1.dll文件
 
2、WCF利用中的契約(Contract)
在生成的WCF工程中,IService1.cs中為Contract(本例中契約和服務放在同1個工程下了,實際上也能夠分為兩個工程),代碼以下:
[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [Operation Contract] CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: Add your service operations here } // Use a data contract as illustrated in the sample below to add composite types to service operations. [DataContract] public class CompositeType { bool boolValue = true; string stringValue = "Hello "; [DataMember] public bool BoolValue { get {return boolValue; } set {boolValue = value; } } [DataMember] public string StringValue { get {return stringValue; } set {string Value = value; } } }

可以看到,聲明了服務契約IService1,以接口情勢聲明,其中還包括兩個操作契約GetData和GetDataUsingDataContract。還聲明了數據契約CompositeType,以類的情勢聲明,包括兩個數據成員BoolValue和StringValue。
 
3、WCF利用中的服務功能實現(ServiceBehavior)
在生成的WCF利用中,Service1.svc.cs中為“ServiceBehavior”(本例中契約和服務放在同1個工程下了,實際上也能夠分為兩個工程),代碼以下(Service1.svc還有其它作用,后面再說):
public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0}",value); } public CompositeType GetDataUsingDataContract(CompositeType composite) { if (composite== null) { throw new ArgumentNullException("composite"); } if (composite.BoolValue) { composite.StringValue+= "Suffix"; } return composite; } }


可以看到,這個Service1類實現了在契約中聲明的IService1接口(服務契約),也使用到了CompositeType類(數據契約);實現了GetData和GetDataUsingDataContract這兩個服務契約中功能,這些功能即為WCF服務允許外部程序進行調用的功能。
 
4、寄宿(Host)WCF服務
有2種常見的寄宿方式:
        1)1種是為1組WCF服務創建1個托管的利用程序,通過手工啟動程序的方式對服務進行寄宿,所有的托管的利用程序都可作為WCF服務的宿主,比如 Console利用、Windows Forms利用和ASP.NET利用等,我們把這類方式的服務寄宿方式稱為自我寄宿(Self Hosting)。
        2)另外一種則是通過操作系統現有的進程激活方式為WCF服務提過宿主,Windows下的進程激活手段包括IIS、Windows Service或WAS(Windows Process Activation Service)等
 
不管采取哪一種寄宿方式,在為某個服務創建 ServiceHost的進程中,WCF框架內部會履行1系列的操作,其中最重要的步驟就是為服務創建服務描寫(Service Description)
 
本例以第1種為例,建立1個WinForm利用作為托管程序,在VS2010中,建立1個普通的WinForm程序(以frameword4.0為例),以下圖:


在工程中,添加對System.ServiceModel的援用,并添加對剛才生成的WcfService1.dll的援用,然后在Form上添加1個Button和1個Label控件,以下圖:

在WinForm工程中添加對要托管的WCF服務的描寫,既可以通過代碼實現,也能夠通過工具生成。本例在VS2010下,通過Tools-WCF Service Configeration Editor工具生成。
點開后,通過菜單的File-New Config新建1個描寫文件,然后點擊Service頁面的Create a New Service,彈出以下界面:


點擊Browse...按鈕,選中剛才生成的WcfService1.dll,并選中其中的Service1服務,點擊下1步,彈出以下界面:


這個界面中要選擇使用的契約,默許便可,點擊下1步,彈出以下界面:

這個界面中要選擇使用的網絡通訊協議,選擇最通用的HTTP協議,并在下1個界面當選擇基本的Http服務(Basic WebService interoperablitity),

在接下來的界面中,輸入訪問地址,其它程序可以通過這個地址來訪問本WCF服務。



完成這1步以后,接下來還有1些設置,我也不清楚用處,略去,最后點擊File-Save,生成1個App.config文件。這里把該文件貼上來:
<?xml version="1.0" encoding="utf⑻"?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="NewBehavior0"> <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8585/wcf1/metadata" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="NewBehavior0" name="WcfService1.Service1"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="" name="ep1" contract="WcfService1.IService1" /> <host> <baseAddresses> <add baseAddress="http://localhost:8585/wcf1" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
把該App.config文件放在與WinForm工程的根目錄下(與Form1.cs同1目錄),還需要在VS中將該文件加入到工程中。

添加Button控件的處理函數:
private void button1_Click(objectsender, EventArgs e) { System.ServiceModel.ServiceHosthost =new System.ServiceModel.ServiceHost(typeof(WcfService1.Service1)); host.Open(); this.label1.Text= "opened"; }

編譯運行,點擊界面中的Button控件,便可以將該WCF服務寄宿到該Frm中(關閉窗體后WCF服務結束)。
注:如果運行時報這個毛病(HTTP could not register URL http://+:8585/wcf1/. Your process does not have http://www.vxbq.cn/access/ rights to this namespace),有多是權限不足致使,需要使用管理員權限運行。
 
5、在客戶端訪問并調用WCF服務
新建1個WinFrm工程(不要關閉剛才的寄宿界面),在VS菜單中點擊Project-Add Service Reference..項,輸入剛才在寄宿界面中定義的地址,就能夠添加對該WCF服務的援用,以下圖:


在程序中使用以下代碼,便可以調用WCF服務中的GetData方法:

ServiceReference1.Service1Clientaa=newServiceReference1.Service1Client(); MessageBox.Show(aa.GetData(2));
6、總結
WCF1個簡單的利用,剛剛接觸,以后還有更多機會去深入學習。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一区二区三区精品 | 国产中文字幕在线 | 毛片官网| 国产精品久久久久亚洲 | 欧美一区二区视频三区 | 午夜黄视频 | 日韩精品一区二区三区小说 | 国产精品二区页在线播放 | 大香伊蕉在人线国产75视频 | 午夜国产精品福利在线观看 | 亚洲欧美视频网站 | 国产在线拍国产拍拍偷 | 91精品久久久久久久久久 | 欧美日韩国产亚洲人成 | 亚洲永久免费视频 | 亚洲精品高清在线一区二区三区 | 亚洲黄色小说图片 | 波多野结衣国产精品 | 亚洲欧美成人中文在线网站 | 免费能看的黄色网址 | 一二三四在线观看免费播放视频 | 国产玖玖在线观看 | h视频在线免费观看 | 亚洲国产精品乱码一区二区三区 | 国产精品高清全国免费观看 | 欧美一区二区三区网站 | 久久精品国产视频在热 | 亚洲图片欧美在线 | 亚洲人成网站在线播放观看 | 一区二区不卡视频 | 欧美成人影院 在线播放 | 亚洲人成免费 | 色久综合大榴莲 | 欧美日韩国产一区二区三区 | 欧美精品成人a多人在线观看 | 国产一二三区精品 | 一本中文字幕一区 | 久久伊人五月天 | 亚洲欧美日韩高清在线看 | 中文字幕在线观看2022 | 婷婷五月在线视频 |