将类似的Web服务添加到.NET C#应用程序

时间:2012-07-27 19:23:43

标签: c# wcf web-services

我是Web服务的新手,我正在开发一个C#WCF服务,它从另一家公司调用外部服务来获取一些客户端数据(例如:姓名,地址,电话等),这部分工作正常到目前为止很好。

外部服务基于标准XML Schema,其他公司将很快使用相同的XML Schema生成相同的服务,使用相同的名称方法并返回相同类型的xml文件。

我的第一个问题是,在我完成第一次实施之后,有任何方法可以“动态”添加其他外部公司服务,拥有其URL / Ports / etc的信息,或者我是否必须在其上插入每个服务每当我需要添加一个新的,然后编译并重新部署时,我手动将其作为我的内部服务项目中的服务引用?

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

2 个答案:

答案 0 :(得分:1)

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

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

我应该为你的第二个问题添加一些东西。只要你是定义合同的那个,它们的实际对象是否不同就没有关系。你最关心的就是他们所服务的xml,你可以使用你的代表连接。实际上,您可以将合同生成为.wsdl文档。然后,每个服务实现者都可以从中生成域对象。另一方面,如果你不是那个“拥有”合同的人,有些消息来源可能会决定稍微不同,这会让你头痛。希望这不是你的情景。

祝你好运! :)

答案 1 :(得分:0)

  

我的第一个问题是,在我完成第一次实施后,有任何方法可以“动态”添加其他外部公司服务,获取其URL / Ports /等信息

不幸的是,您将每次都添加服务,编译和部署

  

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

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

相关问题