位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 自駐留的WCF服務

提問人:劉團圓發(fā)布時間:2020-12-11

    駐留在Web服務器上的WCF服務可以在Internet上通信,但對于本地網(wǎng)絡通信而言,這并不是最高效的方式。一方面,需要用計算機上的Web服務器駐留服務;另一方面,在應用程序的體系結構上出現(xiàn)一個獨立的WCF服務可能并不合適。

    因此應使用自駐留的WCF服務。自駐留的WCF服務存在于創(chuàng)建它的進程中,而不存在于特別建立的主機應用程序(如Web服務器)的進程中。這意味著可以使用控制臺應用程序或Windows應用程序駐留服務了。

    要建立自駐留的WCF服務,需要使用System.ServiceModel.ServieceHost類。用要駐留的服務類型或服務類的一個實例來實例化這個類。通過屬性或方法可以配置服務宿主,也可以通過配置文件來配置。實際上,宿主進程(如Web服務器)使用ServiceHost實例執(zhí)行該駐留任務。自駐留時,區(qū)別是直接與這個類交互操作。但在宿主應用程序的app.config文件中,<system.serviceModel>段中的配置使用的語法與前面的配置段中的相同。

    可以通過任意協(xié)議提供自駐留的WCF服務,但是一般在這種類型的應用程序中使用TCP或命名管道綁定。通過HTTP訪問的服務常常位于Web服務器進程中,因為可以獲得Web服務器提供的額外功能,如安全性等。


如果要駐留MyService服務,可使用下面的代碼創(chuàng)建ServiceHost的一個實例:

    ServiceHost host = new ServiceHost{typeof(MyService));

如果要駐留MyService的實例MyServiceObject,可以編寫如下代碼,創(chuàng)建ServiceHost的一個實例:

    MyService myServiceObject = new MyService();

    ServiceHost host = new ServiceHost(myServiceObject);


    創(chuàng)建ServiceHost實例后,就可以通過屬性配置服務及其端點和綁定。另外,如果把配置放在.config文件中,將會自動配置ServiceHost實例。

    有了配置好的ServiceHost實例后,為了開始駐留服務,應使用ServiceHost.Open()方法。同樣,通過 ServiceHostCloseO方法可以停止駐留服務。第一次駐留TCP綁定的服務時,如果啟用它,可能收到Windows防火墻服務發(fā)出的一個警告,因為它阻塞了默認的TCP端口。只有給這個服務打開TCP端口,才能開始監(jiān)聽該端口。

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部