如何为WCF创建客户端库

时间:2016-03-08 18:20:23

标签: c# .net wcf

我是.NET的新手,我正在研究实现客户端/服务器架构的选项。

我已经按照MSDN教程创建了一个简单的WFC Calculator客户端和服务器,但我想我想生成某种简单的客户端库,第三方可以使用它来调用我的服务。

我已经创建了一个类库项目,我添加了自动生成的代理编码,但发现app.config仍然需要包含在客户端应用程序而不是库中。

问题

在我的目标设计中,我更愿意将大多数(但不是全部)app.config数据封装在生成客户端的公司无法触及的内容中。 app.config包含一些我不希望第三方修改的信息和一些信息,例如我希望在安装时可以配置的服务的地址(包括端口)。

任何人都可以指点我进一步阅读,样本或教程,这将有助于我进步我的研究? (我意识到我甚至可能不想做一些明智的事情!)

背景:我真正想做的事情

我需要设计一个可以从.NET 3.5客户端调用的服务。我还不知道将使用什么技术进行服务(例如,它可以用Java而不是.NET编写)或者用于客户端和服务之间通信的协议。在初始部署之后,所使用的服务和通信协议的实施可能需要在大约一年左右的时间内进行更改。

但是,我知道我想要呈现给客户端的方法列表以及用于参数和响应的数据类型。我还需要将一个版本的客户端接口记录并提供给一个单独的公司,该公司将在项目早期将对我的服务的调用添加到他们现有的.NET客户端应用程序中。所以,我想开发一个客户端库,最初用于连接到服务的临时测试版本(可以用.NET编写)来返回模拟响应。客户端库的更高版本看起来与调用客户端应用程序相同,但改为连接到实际服务。

WCF看起来具有我需要的灵活性,允许我独立于服务的服务和连接协议来设计客户端接口。但正如我上面所说,app.config包含一些我不希望第三方修改的信息和一些信息,例如我希望在安装时可以配置的服务的地址(包括端口)。 p>

2 个答案:

答案 0 :(得分:1)

您可以选择ChennelFactory,您确实可以将大部分配置信息保存在数据库中(例如:端点地址),您的客户端库应该处理第三方客户端应用程序与您之间的通信service应从DB读取服务配置详细信息并调用所需服务并返回第三方应用程序的结果集。

但是为什么你需要隐藏第三方应用程序/用户的服务细节?服务详细信息不是您不希望向最终用户公开的内容。为什么不简单地将服务暴露在适当的WCF Security并让他们调用相关服务。

如果您要使用单独的客户端库/应用程序来封装服务详细信息,如果您需要在将来为此提供任何修复,并且如果用户群很大,那么您需要担心升级机制和所有。这将增加更多的复杂性。

答案 1 :(得分:0)

如果您可以控制客户端的安装,则可以锁定对某些用户帐户的app.config文件的访问权限。

在部署之前,另一个选择是encrypt the contents app.config file

所有这些都是关于您想要配置客户端的方便程度与您希望它被篡改的难度之间的权衡。

编辑: 如果您的目标是简单地隐藏您的端口号和地址,那么这实际上是不可能的。有人可以使用网络流量监控器来查找该信息。