c# - 将类库公开为 WCF 服务

标签 c# wcf

我有一个类库,我想将其作为 WCF 服务公开给外界。我的类包含抽象类、普通类、枚举等。

我简单地希望人们可以在他们的项目中对我的类库进行“服务引用”,然后他们就开始使用它。

我如何实现这个目标?

最佳答案

如果您还没有完成此操作,那么不开始就可以避免犯下大错误。

类库被设计为类库。服务被设计为服务。它们是两个不同的事物,有着不同的目标。

例如,您可能定义了一个枚举、一个具有该枚举类型属性的 EventArgs 派生类、一个采用该 EventArgs 类型的事件处理程序委托(delegate),并且您可能有一个或多个公开事件的类使用该委托(delegate)类型。

这些东西在服务中公开都没有任何意义!

相反,您应该做的是设计您的服务来公开您想要公开的功能。为此,该服务当然会使用您的类库。

类库和服务之间的一个不同之处是服务应该设计为可跨平台使用。考虑一下当 Java 客户端使用您的服务时会发生什么:它将有一个与您的服务公开的操作相对应的代理类。这些代理方法将具有原始类型的参数,以及与传入和传出服务的数据结构相匹配的代理类型的参数。

Java 客户端显然不会使用与服务器端操作相同的 .NET 类型!

构建 .NET 客户端的默认方法的工作方式完全相同 - 通过代理类。您的问题表明您希望公开类库会将实际的类导出到客户端。事实并非如此。如果您决定将客户端与服务器使用的确切 .NET 类耦合,那么客户端将需要具有服务器端程序集,就像客户端使用普通的类库一样。

关于c# - 将类库公开为 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1276850/

相关文章:

c# - 反编译大型代码库时的 CallSite <>p__site

c# - Vim - 如何高亮模式的一部分

c# - 无法添加对我的项目的引用 - 它根本没有检测到它

WCF 使用 Windows 服务

c# - 在 WCF 服务中使用语句

c# - LINQ 与 OR 连接

c# - 我应该使用什么类型的变量?

WCFExtras - 元素行为具有无效的子元素 'wsdlExtensions' ?

.net - 带有动态参数的 ChannelFactory 错误

WCF - 如何在开始和结束调用之间保留 channel /代理