2016-03-08 137 views
-1

我是.NET新手,正在研究实现客户端/服务器体系结构的选项。如何创建WCF客户端库

我跟着MSDN教程创建一个简单的WFC计算器客户端和服务器,但我觉得我要产生一些那种第三方可以使用打电话给我服务的简单的客户端库。

我做出决定,我添加自动生成的代理编码,但发现在app.config仍然需要包含在客户端应用程序,而不是库中的类库项目。

问题

在我的目标设计,我更愿意封装大多数(但不是全部)在app.config数据的内在的东西,该公司生产的客户端不能碰。 app.config包含了一些我不希望第三方修改的信息,以及一些信息,比如我希望在安装时可配置的服务的地址(包括端口)。

任何人都可以点我在进一步阅读,样品或教程,将帮助我进步我的研究? (我知道我可能甚至试图做一些合理的!)

背景:我真正想要做

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

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

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

回答

0

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

另一种方法是在部署前选择encrypt the contents app.config file

这一切都与你想怎么方便,使配置客户端与你想有多难它是篡改权衡。

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

+0

感谢您的回复,但并不是我想保持信息的秘密。我希望能够通过重新传送客户端库来更改连接底层中使用的协议,而无需重新构建客户端可执行文件。至于地址信息,它必须可以作为配置参数定期更改,而无需重新传送服务器或客户端。 – user358795

+0

如果您想使用配置文件进行更改,则可以加密您不希望其他人修改的部分。否则,您可能需要考虑使用数据库进行设置,或者改变架构以使用模板方法和/或策略设计模式。 – Robert

1

你可以去ChennelFactory,你确实可以将大部分配置信息保存在数据库中(例如:端点地址),你的客户端库应该处理第三方客户端应用程序和你的服务之间的通信应该阅读来自DB的服务配置细节并调用所需的服务并返回结果集第三方​​应用程序。

但是为什么您需要隐藏第三方应用程序/用户的服务细节?服务细节不是你不想公开给最终用户的东西。为什么不简单地使用适当的WCF Security来暴露服务,并让他们致电相关服务。

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