【发布时间】:2011-09-02 06:45:51
【问题描述】:
我在组织内托管 WCF 服务,我希望将客户端构建到程序集 DLL 中以打包并提供给任何想要使用该服务的人。
我可以创建一个类库,然后简单地添加一个服务引用、构建它并分发它。关于替代方法的任何建议?
【问题讨论】:
标签: c# .net wcf .net-assembly
我在组织内托管 WCF 服务,我希望将客户端构建到程序集 DLL 中以打包并提供给任何想要使用该服务的人。
我可以创建一个类库,然后简单地添加一个服务引用、构建它并分发它。关于替代方法的任何建议?
【问题讨论】:
标签: c# .net wcf .net-assembly
我只想提供一个包含所有必需合同的库。就是这样 - 他们可以编写自己的客户端代理。
您的用户知道如何使用 WCF 吗?如果没有,请包含一个实例化通道并调用服务的代理类。
我真的认为提供只包含由 svcutil 生成的代码的程序集没有任何意义。为什么不给您的用户一个 WSDL,然后他们可以自己生成该代码?分发样板文件似乎不是一个好主意。
【讨论】:
我在以前的组织中做过类似的事情。我还要求库应该是 COM 可见的,以便旧版 C++ 应用程序可以使用 API。
我什至没有要求客户端提供任何 WCF 配置,除了通过 API 传递一堆参数(服务 URL、超时等...)。 WCF 以编程方式配置。我处于一个非常严格控制的环境中,在那里我完全了解图书馆的客户并且可以影响他们的设计。这种方法对我有用,但正如他们所说,您的里程可能会有所不同。
【讨论】:
服务主机是什么?如果它是一个基于 HTTP 的应用程序,那么将其放入 ASP.NET 应用程序是很有意义的。否则,是的,启动类库。
根据评论更新
客户端打包真的取决于接收者要做什么。如果您的目标是开发人员或现有的内部应用程序,那么该库是一个不错的选择(尽管我可能会将其包装在 .msi 中以使用户熟悉该体验)。如果需要 UI,那么显然您需要考虑一个合适的 UI 框架(WPF、Silverlight、WinForms 等)
【讨论】:
在我之前的工作中,我们总是这样做。我们将有一个库项目,其中只包含一个 SVCUTIL 代理生成和与之配套的配置文件。
通过这种方式,我们的其他项目可以使用这个库,并且我们只会有一个代理生成。非常适合 SOA 模型。
在您的情况下,您可以根据需要分发此程序集。就个人而言,我发现您控制的内部案例的好处更大,但我想如果您真的觉得慈善,分发一个 .NET 版本供客户使用将是有益的。
【讨论】: