将类库公开为WCF服务

时间:2009-08-14 09:13:30

标签: c# wcf

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

我很简单,人们可以在他们的项目中制作我的类库的“服务参考”,然后他们开始使用它。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

如果你还没有完成这项工作,那么你可以通过不开始来避免重大错误。

类库被设计为类库。服务旨在成为一项服务。它们是两个具有不同目标的不同事物。

例如,您可能已经定义了一个枚举,一个具有该枚举类型属性的EventArgs派生类,以及一个采用该EventArgs类型的事件处理程序委托,并且您可能有一个或多个暴露事件的类使用该委托类型。

在服务中暴露这些事情都没有任何意义!

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

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

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

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

答案 1 :(得分:1)

可以通过WCF公开类和枚举。然而,抽象类将是一个问题,但无论如何将它们作为服务公开是没有意义的。

对于枚举,您必须添加[EnumMember]属性,例如:

public enum Sex
{
    [EnumMember]
    Unknown,
    [EnumMember]
    Male,
    [EnumMember]
    Female
}

WCF的整个主题有点过于宽泛,无法覆盖所有内容。只要看看会发生什么,如果遇到麻烦,请提出更具体的问题。

答案 2 :(得分:1)