2012-09-15 199 views
2

我有一个服务,我需要与它沟通,所以我开始调查WCF。我设置服务来侦听并创建一个客户端。所有的沟通工作正常。WCF客户端包装

该服务将由多个客户使用。而不是让他们设置一个客户端并通过WCF学习曲线,我想我会包装客户端并隐藏所有的WCF实现。我发现为了得到这个工作,他们仍然必须在他们的app.config文件中包含带有端点信息的服务模型。

是否有办法完全隐藏服务模型信息?我宁愿他们简单地引用我的dll并开始拨打电话。我的客户以外的图书馆似乎没有必要了解端点信息。

感谢

回答

2

您可以创建端点编程,而不是通过配置,如示例所示回答这个问题SO:How do I add WCF client endpoints programmatically?

+1

这只是从配置转移到代码。我想隐藏所有客户的WCF实现,所以他们所要做的就是引用我的dll,创建我的客户端包装实例,并调用一个方法。在客户端包装中,我想处理所有绑定和地址WCF细节(我很高兴将它留在app.config或web.config文件中)。谢谢。 – JSolberg

+0

我并不是建议您的代码的使用者需要以编程方式自己设置端点。我认为你应该在你的自定义客户端的构造函数中这样做。然后你可以像例子中那样实例化一个WCF通道,并委托给它所有的客户端调用。 – luksan

+0

我在你的重播之后挖得更深一点,并能够得到它的工作,谢谢!当我最初回复我试图创建客户端和包装在一个DLL中。这没有奏效。然后,我将客户端封装分解为第三个项目,并在那里创建了频道并且一切正常!再次感谢! – JSolberg

2

如果你不希望有WCF内部客户端设置您的网络配置您需要使用代码创建设置。下面是示例代码如何(在这种情况下使用basicHttpBinding的),而web.config中创建实例WCF客户端:

BasicHttpBinding binding = new BasicHttpBinding(); 
    EndpointAddress address = new EndpointAddress("http://someServer/DemoWcfService");   
    TestServiceClient client = new TestServiceClient(binding, address) 

但我建议你留在web.config中WCF客户端的配置,因为它很容易重新配置。

+0

与luksan的回答相同,请参阅回复。谢谢。 – JSolberg