不久之前,我通过this question here了解了“在引用程序集中重用类型”WCF选项。我们的目标是使用此选项在客户端和服务器之间共享一组类库;这些库实现了我们的业务对象模型,暴露WCF服务的服务器和使用它们的客户端都需要使用它们。我们使用的是.NET 4和Visual Studio 2010。
我们运行一些测试场景,一切似乎都运行良好。但是,现在我们正处于产品开发的中间阶段,我们发现WCF显然需要将共享类标记为可序列化。我们没有在初步测试中标记它们,一切正常,所以我很困惑为什么我们现在得到WCF错误要求我们将它们标记为可序列化。从我所读到的,它似乎与一些没有无参数构造函数的类有关,但我不确定这一点。
我的问题是:我们是否需要使我们的共享类可序列化,还是有解决方法?是否有任何最佳实践或众所周知的策略来准备类库以便在WCF设置中在客户端和服务器之间共享?谢谢。
答案 0 :(得分:0)
另一种选择是根本不使用WSDL,而是通过将其添加为客户端的引用来共享相同的dll。查看您的代理代码(reference.cs)现在的样子。您可以留下特定的客户端类(继承自ClientBase),但主代码位于您的数据协定/可序列化类中,您可以通过添加dll参考获取。