我有一个服务,我需要与它沟通,所以我开始调查WCF。我设置服务来侦听并创建一个客户端。所有的沟通工作正常。WCF客户端包装
该服务将由多个客户使用。而不是让他们设置一个客户端并通过WCF学习曲线,我想我会包装客户端并隐藏所有的WCF实现。我发现为了得到这个工作,他们仍然必须在他们的app.config文件中包含带有端点信息的服务模型。
是否有办法完全隐藏服务模型信息?我宁愿他们简单地引用我的dll并开始拨打电话。我的客户以外的图书馆似乎没有必要了解端点信息。
感谢
我有一个服务,我需要与它沟通,所以我开始调查WCF。我设置服务来侦听并创建一个客户端。所有的沟通工作正常。WCF客户端包装
该服务将由多个客户使用。而不是让他们设置一个客户端并通过WCF学习曲线,我想我会包装客户端并隐藏所有的WCF实现。我发现为了得到这个工作,他们仍然必须在他们的app.config文件中包含带有端点信息的服务模型。
是否有办法完全隐藏服务模型信息?我宁愿他们简单地引用我的dll并开始拨打电话。我的客户以外的图书馆似乎没有必要了解端点信息。
感谢
您可以创建端点编程,而不是通过配置,如示例所示回答这个问题SO:How do I add WCF client endpoints programmatically?
如果你不希望有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客户端的配置,因为它很容易重新配置。
与luksan的回答相同,请参阅回复。谢谢。 – JSolberg
这只是从配置转移到代码。我想隐藏所有客户的WCF实现,所以他们所要做的就是引用我的dll,创建我的客户端包装实例,并调用一个方法。在客户端包装中,我想处理所有绑定和地址WCF细节(我很高兴将它留在app.config或web.config文件中)。谢谢。 – JSolberg
我并不是建议您的代码的使用者需要以编程方式自己设置端点。我认为你应该在你的自定义客户端的构造函数中这样做。然后你可以像例子中那样实例化一个WCF通道,并委托给它所有的客户端调用。 – luksan
我在你的重播之后挖得更深一点,并能够得到它的工作,谢谢!当我最初回复我试图创建客户端和包装在一个DLL中。这没有奏效。然后,我将客户端封装分解为第三个项目,并在那里创建了频道并且一切正常!再次感谢! – JSolberg