2012-07-27 82 views
1

我在Web服务新我开发是从另一家公司调用外部服务得到一些客户的数据(例如C#WCF服务:姓名,地址,电话等),这部分工作到目前为止还不错。添加类似于Web服务到.NET C#应用程序

外部服务是基于标准的XML Schema和其他企业将不得不很快从相同的XML模式生成相同的服务,使用相同的名称的方法和返回同一类型的XML文件。

我的第一个问题是,在我完成这个第一个实现后,有任何方法可以动态地添加其他外部公司服务,具有URL/Ports/etc的信息,还是必须插入他们手动作为我的内部服务项目中的服务引用每当我需要添加一个新的,然后编译和重新部署?

我的第二个问题是与数据合同/成员的关系,我的理解是,即使他们返回相同的XML文件,它们的数据合约/成员将是不同的,是真的吗?因此,我必须制定一个特定的代码,从每个新的外部公司的数据合同中读取我需要的信息。如果这是真的,我一直在考虑做一个通用的代码来读取原始的XML,这是最好的选择?

回答

1

尽管C#是一种编译语言,但它通过MEF支持插件架构。您可以使用它并为每个源添加一个小插件.dll。

话虽这么说,这很可能是你所需要的是包含为您的每个源连接的详细信息,并连接到他们动态的配置列表。这只有在他们使用完全相同的模式时才有效,以便他们所服务的对象将序列化所有来源的相同。当然,您必须通过使用该配置的代码动态地实例化代理。

我应该为你的第二个问题添加一些东西。只要你是定义合同的人,他们的实际对象是不同的并不重要。您关心的所有内容都是他们所服务的xml,并且您可以使用您的表示进行连接。实际上,您可以将合同生成为.wsdl文档。每个服务实现者都可以从中生成域对象。另一方面,如果你不是“拥有”合同的人,那么一些来源可能会做出稍微不同的决定,这会让你头痛。但希望这不是你的情况。

祝你好运! :)

+0

非常感谢你,这里有很多非常有用的信息! – user1558528 2012-07-27 20:16:20

+0

@ user1558528非常欢迎。为您添加了一些奖励信息。 :) – Mithon 2012-07-27 21:30:17

0

我的第一个问题是,我完成这个首次实施后,有什么办法增加“动态”的其他外部公司服务,有他们的网址/端口/信息等

不幸的是,是的,你将有附加服务,编译和部署每

我的第二个问题是与数据合同/成员相关的时间,我的理解是,即使他们返回相同的XML文件,其数据合同/成员将有所不同,即那是真的吗?

如果要使用自动生成的每个服务将创建不同的合同。我会考虑创建你自己的类并使用反射和扩展方法转换外部类

+0

谢谢你的回答! – user1558528 2012-07-27 20:17:31

相关问题