簡體   English   中英

WCF ServiceHost實例化與多個終結點合同的混淆

[英]WCF ServiceHost instantiation confusion with multiple endpoint contracts

當我有多個端點協定要添加到WCF ServiceHost時,我對確切地實例化什么感到有些困惑。

實例化包含一個typeof參數-似乎是合同,在我閱讀和完成的所有事情中都是如此。 但是,當我遇到增加額外合同的時候-這就是我對此感到困惑的地方。

ServiceHost shost = new ServiceHost(typeof(MyService), NetTcpBinding, xyz);

假設我有幾個合同-ProductService,BatchService,CustomerService,這些都是端點合同,每個合同都有一個接口。 讓我們保持簡單,在每個合同中都有一個Add方法和Get方法。

然后,我可以將這些作為合同的終結點添加到ServiceHost ..

shost.Endpoint.Add(ProductService);
shost.Endpoint.Add(BatchService);
shost.Endpoint.Add(CustomerService);

如果我使用MyService創建它,這是我的困惑,那么MyService是否需要並入我所有終結點合同的方法,還是只是在第一個終結點合同中傳遞只是為了實例化它,然后所有其他終結點合同都通過了(請原諒我的不足一種更好的說法)-由我的一個端點實例化的服務提供的其他服務?

我已經閱讀了SO的內容,但看起來似乎很相關而且很接近-但沒有對ServiceHost的實例化進行說明。 運行WCF ServiceHost具有多個合同

我的意思是實例化事物的目的是什么; 然后如果需要將所有終結點方法都放置到宿主契約中,則添加終結點,順便說一句,您也可以為該契約指定名稱空間..-看起來如此.. 在鏈接上找到的答案確實是可行的答案(每件事都聞到濕〜豌豆味-又不干)。

ServiceHost可以承載一項服務 -即一項服務類 (實現類)。 但是,該單個類可以實現多個 WCF服務合同。

因此,如果您具有三個服務協定(作為接口IProductServiceIBatchServiceICustomerService )和單個類MyServiceClass ,則該類將實現所有這三個接口協定

public class MyServiceClass : IBatchService, ICustomerService, IProductService

然后可以將此類托管在ServiceHost並且可以為這三個服務合同中的每一個定義終結點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM