自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF自宿主管理進(jìn)程聲明周期

開(kāi)發(fā) 開(kāi)發(fā)工具
WCF自宿主作為一個(gè)提供和管理進(jìn)程的生命周期時(shí)使用的技術(shù)名詞,在實(shí)際開(kāi)發(fā)中占據(jù)著非常重要的地位。在這里將會(huì)針對(duì)此做一個(gè)詳細(xì)介紹。

WCF中的宿主是一個(gè)非常重要的內(nèi)容。對(duì)于初學(xué)者來(lái)說(shuō),可能對(duì)此的理解掌握并不是太容易。我們將會(huì)在這篇文章中通過(guò)低WCF自宿主的解讀,來(lái)讓大家進(jìn)一步的對(duì)WCF宿主的內(nèi)容有一個(gè)深入了解。#t#

WCF自宿主是當(dāng)開(kāi)發(fā)者負(fù)責(zé)提供和管理宿主進(jìn)程的生命周期時(shí)使用的技術(shù)名詞。自宿主被應(yīng)用在位于客戶端和服務(wù)之間的一個(gè)進(jìn)程(或計(jì)算機(jī))邊界環(huán)境中,以及當(dāng)使用進(jìn)程中服務(wù)的情況下(也就是說(shuō),與客戶端處于相同的進(jìn)程中)。你需要提供的進(jìn)程可能是任何Windows進(jìn)程,例如,一個(gè)Windows表單應(yīng)用程序,一個(gè)控制臺(tái)應(yīng)用程序或一個(gè)Windows NT服務(wù)。注意,該進(jìn)程必須在客戶端調(diào)用服務(wù)之前先運(yùn)行起來(lái);典型情況下,這意味著,你必須預(yù)先啟動(dòng)它。對(duì)于NT進(jìn)程中服務(wù)來(lái)說(shuō)這并不是一個(gè)問(wèn)題。

類似于IIS宿主,WCF自宿主應(yīng)用程序配置文件必須列出你想宿主的服務(wù)的類型并且暴露給外界。而且,該宿主進(jìn)程必須在運(yùn)行時(shí)刻顯式地注冊(cè)服務(wù)類型并且打開(kāi)該宿主以便于客戶端調(diào)用。典型地,這是在Main()方法中使用如下定義的助理類ServiceHost實(shí)現(xiàn)的:

 

  1. public interface ICommunicationObject : IDisposable  
  2. {  
  3. void Open();  
  4. void Close();  
  5. //更多成員  
  6. }  
  7. public abstract class CommunicationObject :   
  8. ICommunicationObject  
  9. {...}  
  10. public class ServiceHostBase : CommunicationObject,...  
  11. {...}  
  12. public class ServiceHost : ServiceHostBase,...  
  13. {  
  14. public ServiceHost(Type serviceType,  
  15. params Uri[]baseAddresses);  
  16. //更多成員  

 

提供給ServiceHost的構(gòu)造函數(shù)的信息有:服務(wù)類型和(可選)默認(rèn)的基地址。該基地址集可以是一個(gè)空集(以后,你可以配置不同的基地址)。擁有一組基地址能夠使服務(wù)接受在多個(gè)地址和協(xié)議上的調(diào)用。注意,每個(gè)ServiceHost實(shí)例都關(guān)聯(lián)與一個(gè)特定的服務(wù)類型,并且如果宿主進(jìn)程需要宿主多個(gè)類型的服務(wù)的話,你需要一些匹配的ServiceHost實(shí)例。通過(guò)調(diào)用宿主中的ServiceHost.Open()方法,你允許調(diào)入(call- in);并且通過(guò)調(diào)用ServiceHost.Close()方法,你可以體面地退出宿主實(shí)例并完成到當(dāng)前客戶端的數(shù)據(jù)發(fā)送,并且還要拒絕未來(lái)的客戶端調(diào)用-即使宿主進(jìn)程仍在運(yùn)行中。典型地,關(guān)閉操作是在宿主進(jìn)程關(guān)閉時(shí)實(shí)現(xiàn)的。例如,為了把這個(gè)服務(wù)宿主在一個(gè)Windows表單應(yīng)用程序中:

 

  1. [ServiceContract]  
  2. interface IMyContract  
  3. {...}  
  4. class MyService : IMyContract  
  5. {...}  
  6. 你可以編寫:  
  7. public static void Main()  
  8. {  
  9. Uri baseAddress = new Uri("http://localhost:8000/");  
  10. ServiceHost serviceHost;  
  11. serviceHost = new ServiceHost(typeof(MyService),baseAddress);  
  12. serviceHost.Open();  
  13. //能夠攔截調(diào)用:  
  14. Application.Run(new MyForm());  
  15. serviceHost.Close();  

 

注意,你可以在調(diào)用ServiceHost.Open()之后攔截調(diào)用,因?yàn)樵撍拗鹘邮赵诠ぷ髡呔€程上的所有調(diào)用。對(duì)ServiceHost.Open()的調(diào)用將加載WCF運(yùn)行時(shí)刻并且支持接收客戶端調(diào)用。該宿主能注冊(cè)多個(gè)基地址,只要它們至少在傳輸方面存在不同:

 

  1. Uri tcpBaseAddress = new Uri("net.tcp://localhost:8001/");  
  2. Uri httpBaseAddress = new Uri("http://localhost:8002/");  
  3. ServiceHost serviceHost = new ServiceHost(typeof(MyService),
    tcpBaseAddress,httpBaseAddress);  

 

通過(guò)從"Add New Item"對(duì)話框中選擇WCF服務(wù),Visual Studio 2005允許你把一個(gè)WCF服務(wù)添加到任何應(yīng)用程序工程。以此方式添加的服務(wù)當(dāng)然是進(jìn)程中服務(wù)(相對(duì)于宿主進(jìn)程來(lái)說(shuō)),但是也可以由外部客戶端存取。

以上就是對(duì)WCF自宿主的全部介紹。

責(zé)任編輯:曹凱 來(lái)源: CSDN
相關(guān)推薦

2009-11-06 15:41:25

WCF自托管宿主

2009-12-21 17:05:59

WCF自托管宿主

2009-11-05 11:12:21

WCF自宿主

2009-11-05 11:23:08

WCF宿主

2010-02-22 16:09:33

WCF宿主

2010-02-24 17:17:04

WCF宿主環(huán)境

2010-03-02 14:30:41

WCF宿主模式

2009-11-06 16:22:35

WCF協(xié)定

2010-02-25 18:04:02

WCF IIS宿主

2009-11-06 15:47:17

WCF Windows

2010-02-22 16:19:25

WCF自托管

2009-11-05 14:13:33

WCF自承載

2009-12-22 19:06:51

WCF自承載

2009-12-22 10:05:54

WCF編程生命周期

2010-02-26 08:59:10

WCF服務(wù)宿主程序

2023-10-31 21:03:49

宿主機(jī)管理云開(kāi)發(fā)

2009-07-06 13:49:29

2010-02-24 09:18:49

WCF Adapter

2009-03-25 09:43:51

開(kāi)發(fā)自定義托管WCF

2019-11-07 13:36:06

CIOIT主管工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)