WCF:包装遗留API问题

时间:2010-07-15 08:19:15

标签: .net wcf legacy-code

我必须使用WCF服务包装传统的.net程序集API(类和接口集)。服务被视为代理,可以将调用委托给现有的类,几乎不需要额外的工作。

所以我添加了[ServiceContract] interface,它公开了处理现有结构和类的方法。但是wcf-proxy-generator(svcutil)删除了一些字段(声明为只读),并且对于别名不够智能(例如:public bool Boolean1 { get { return Booleans[0] }}变为bool Boolean1 { get; set; })。

我决定复制这些遗留类以消除混淆。现在有一些现有类的合同安全版本& WCF服务具有额外的代码,可以将合同安全的类转换为传统的类。反之亦然。

您是否建议复制所有遗留类,或者仅针对问题类转换是否可以?可能是我错过了一些额外的代理生成器参数。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

代理不喜欢只读属性,因为它需要序列化对象,如果不能调用setter并将序列化值放回到对象中,则无法执行此操作。

将旧版本修改为对WCF友好的更容易,但通常不是一个选项。您为从遗留类转换为WCF安全类而创建的类看起来很好,但显然不太理想,因为您引入另一个层只是为了将这些类与WCF一起使用。