繁体   English   中英

如何为 WCF 创建客户端库

[英]How do I create a client-side library for WCF

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

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

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

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

任何人都可以向我指出可以帮助我推进研究的进一步阅读材料、示例或教程吗? (我意识到我什至可能不会尝试做一些明智的事情!)

背景:我真正想做的事

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

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

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

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

但是为什么您需要对 3rd 方应用程序/用户隐藏服务详细信息? 服务详细信息不是您不想向最终用户公开的内容。 为什么不简单地公开具有足够WCF 安全性的服务并让他们调用相关服务。

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

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

另一种选择是在部署之前加密内容 app.config 文件

这完全是在您希望配置客户端的方便程度与您希望篡改客户端的难度之间进行权衡。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM