好的,不太确定怎么说,但会尽力而为。
我有许多WCF服务正在设置和运行,等待一个对象进入处理。
WCFServiceA
WCFServiceB
WCFServiceC
服务A将运行一些处理并决定将对象发送到服务B或C.
所以我的对象在其中的所有类上都有[DataContract]
属性,在所有属性上都有[DataMember]。
所以到目前为止一直很好。
但是现在我失去了对象的所有功能,因为现在它基本上是对象的序列化版本。
如果我想使用完整的复杂对象在所有3个服务中包含相同的程序集作为参考并以“KnownTypes
”方式发送内容,那么这是最佳实践吗?为使用不知道这些类型的服务的任何东西提供基本的DataContract
和DataMember
,这样他们仍然可以为要运行的服务创建这些对象吗?
希望我有正确的措辞,你在这里理解我的问题。
:编辑: 试着澄清一下。
我发送的对象可以附加一个“策略”,这个策略对象是一个类,可以是几种类型之一,车辆,房屋,生活,宠物政策等。
但是接收服务不会知道实际类型。因此需要KnownTypes。
我想我刚回答了自己的问题!! :)
答案 0 :(得分:1)
这是对问题的一个很好的解释。我在这种方法中看到的缺点是,如果要更新对象,比如添加新属性或删除一些属性,则需要使用新程序集更新所有3个服务。
如果要根据设置升级实时对象,使用已知类型有时会导致向后兼容性问题。
或者仅使用属性创建DTO(数据传输对象),并将其作为数据协定传递给服务,并将复杂逻辑剥离到可由服务引用的帮助程序类。