首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨不同服务中继对象

跨不同服务中继对象
EN

Stack Overflow用户
提问于 2011-10-30 05:31:39
回答 2查看 39关注 0票数 0

我有一个例子,其中有3台主机: A、B和C。主机C定期向主机B发送心跳消息,主机B随后向A发送类似的心跳消息,其中包含C发送的数据包中的所有信息以及一些附加信息。显然,为了实现这一点,A向B公开服务,B向C公开服务。

传递给这两个类的可序列化类称为NodeInfo。基本上只是一个简单的数据成员集合,A和B的服务的服务定义都引用了NodeInfo

要点是:B接收的数据约定是B.ServiceForC.NodeInfo类型的。但是B需要中继到A的类型是A.ServiceForB.NodeInfo类型。所以我发现我需要做的是用B语言写很多重复的代码,把数据从入站NodeInfo复制到新创建的出站NodeInfo

我的问题是,有没有一个聪明的方法来处理这个问题?有没有一种方法可以将B.ServiceForC.NodeInfo对象强制转换为A.ServiceForB.NodeInfo对象,这样我就不必重新创建所有对象并复制它们的数据?因为它们在任何遗传意义上都没有血缘关系,这似乎是不可能的,但我不知道。

我做了很多搜寻,但似乎找不到任何有帮助的东西。任何建议,即使是明确的“你倒霉了”,都会很有帮助。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-30 05:38:35

默认情况下,WCF会生成服务接口的客户端副本,该副本包装了一个在代理代码中使用的命名空间。但你不是被强迫这样做的。将您的服务接口放在lib/dll中-从您的WCF生成的代理代码中删除WCF生成的接口,并使用您的lib命名空间中的接口。

这样,所有东西都可以只使用库/dll中定义的MyLibNamepace.NodeInfo接口。

如果您还没有用于公共代码的现有基础lib/dll,那么您也可以在自己的接口定义中直接编译到每个应用程序中。

票数 1
EN

Stack Overflow用户

发布于 2011-10-30 06:05:41

创建在这些主机之间共享的类库,并在其中保存DataContract,而不是自动生成它们。

如果你不能访问所有3段代码的源代码,你可以使用AutoMapper

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7941840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档