簡體   English   中英

WCF中的動態通道工廠

[英]Dynamic Channel Factory in WCF

我在我的WCF服務中使用以下代碼來調用另一個可能是也可能不是WCF服務的Web服務。

 ChannelFactory<IService1> myChannelFactory = new ChannelFactory<IService1>
                                                  (myBinding, myEndpoint);

所以我希望在xml文件中有一些信息,我從中讀取各種服務端點,並希望將綁定信息傳遞給通道工廠,並根據配置XML文件中的信息調用其他服務。

所以我想每次使用不同的服務合同信息動態生成通道工廠。

是否可以在渠道工廠中使用各種服務具有不同的接口?

換句話說,從上面的代碼我有IService1但是當我從xml文件中讀取另一個服務信息時,我想用另一個接口創建一個通道?

是的,通過泛型可以:

public static T CreateProxyChannel<T>()
{
    string endpointUri = GetServiceEndpoint(typeof(T));

    ChannelFactory<T> factory = new ChannelFactory<T>(myBinding, new EndpointAddress(new Uri(endpointUri)));

    return factory.CreateChannel();
}

並且GetServiceEndpoint方法根據T的類型返回端點:

private static string GetServiceEndpoint(Type service)
{
    string serviceTypeName = service.Name;

    // Code to get and return the endpoint for this service type
}

請注意,在這種情況下,我希望配置文件具有與服務類型名稱關聯的端點(例如IService1http://localhost/Service1.svc )。

最后使用它:

IService1 serviceProxy1 = CreateProxyChannel<IService1>();
serviceProxy1.MyMethod();

IService2 serviceProxy2 = CreateProxyChannel<IService2>();
serviceProxy2.AnotherMethod();

暫無
暫無

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

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