将现有类库公开给WCF服务

时间:2010-07-05 06:16:45

标签: c# .net wcf class

我有一个现有的类库,其中包含与我的服务器通信的所有类。 我已经创建了一个WCF服务,它将作为不同应用程序域的一部分托管在我现有的服务器上。由于我已经有了这些类,我认为它可以在我的WCF服务上公开,以减少我的开发时间。

我成功托管了我的WCF服务,并在我的开发者电脑上运行。问题是在客户端添加我的Web服务。他们只能使用我的库的基类。

如何在我的网络服务上提供我的库的基类以外的所有类?例如辅助类,从我的基类继承的子类以及在我的泛型集合中使用的其他类。

我的所有课程都使用Serializable和DataContract属性。

顺便说一下,我的类库是3年前创建的,我只修补了一些新属性,以便在我的Web服务上使用它。

1 个答案:

答案 0 :(得分:1)

不属于操作合同一部分的层次结构的辅助类永远不会暴露。对于子类,您可以使用web.config中的<knownType>部分来指示序列化程序给定基类型的可能子类:

<system.runtime.serialization>
    <dataContractSerializer>
      <declaredTypes>
        <add type="SomeNs.MyBaseType, SomeNs">
          <knownType type="SomeNs.MyChildType1, SomeNs"/>
          <knownType type="SomeNs.MyChildType2, SomeNs"/>
        </add>
        <add type="SomeNs.MyBaseType2, SomeNs">
          <knownType type="SomeNs.MyChildType3, SomeNs"/>
        </add>
      </declaredTypes>
    </dataContractSerializer>
</system.runtime.serialization>

WCF将查看作为操作契约一部分的类型(标有[OperationContract]的方法),它将自动在元数据(WSDL)中公开这些类,以便客户端可以看到它们。可能需要明确指定可能的子类。

此外,您可能会发现此blog post有用。

相关问题