gpt4 book ai didi

c# - WCF - 复杂对象 - 已知类型

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:53 25 4
gpt4 key购买 nike

好吧,不太确定怎么说,但我会尽力的。

我有许多已设置和运行的 WCF 服务,等待对象进入进行处理。

WCFServiceA
WCFServiceB
WCFServiceC

服务 A 将运行一些处理并决定将对象发送到服务 B 或 C。

所以我的对象在所有类上都有 [DataContract] 属性,在所有属性上都有 [DataMember]。

到目前为止一切顺利。

但现在我失去了对象的所有功能,因为这基本上是对象的序列化版本。

那么,如果我想使用一个完整的复杂对象在所有 3 个服务中包含相同的程序集作为引用,并将内容作为“KnownTypes”发送,这是否是最佳实践?为使用不知道这些类型的服务的任何事物提供基本的 DataContractDataMember,以便他们仍然可以创建这些对象供服务运行?

希望我的措辞是正确的,并且你能理解我的问题。

:编辑:尝试澄清。

我发送的对象可以附加一个“政策”,这个政策对象是一个类,可以是几种类型之一,车辆、房屋、生活、宠物政策等。

但是接收服务并不知道实际的类型。因此需要 KnownTypes。

我想我刚刚回答了我自己的问题!! :)

最佳答案

这很好地解释了这个问题。我在这种方法中看到的缺点是,如果您要更新对象,比如添加新属性或删除一些属性,则所有 3 服务都需要使用新程序集进行更新。

当您想根据设置实时升级对象时,使用已知类型有时会导致向后兼容性问题。

或者创建一个仅包含属性的 DTO(数据传输对象),并将其作为数据契约在服务之间传递,并将复杂的逻辑剥离到服务可以引用的辅助类中。

关于c# - WCF - 复杂对象 - 已知类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com