【问题标题】:Adding similar Web Services to .NET C# application将类似的 Web 服务添加到 .NET C# 应用程序
【发布时间】:2012-07-26 12:29:47
【问题描述】:

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

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

我的第一个问题是,在我完成第一个实现之后,有什么方法可以“动态地”添加其他外部公司服务,包括它们的 URL/端口/等信息,还是我必须在它们上插入每个服务每次我需要添加一个新的,然后编译并重新部署时,手动作为我的内部服务项目中的服务参考?

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

【问题讨论】:

    标签: c# wcf web-services


    【解决方案1】:

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

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

    我应该为您的第二个问题添加一些内容。只要您是定义合同的人,它们的实际对象是否不同都没有关系。您所关心的只是它们所服务的 xml,并且您可以使用您的表示进行连接。事实上,您可以将合同生成为 .wsdl 文档。然后,每个服务实施者都可以从中生成域对象。另一方面,如果您不是“拥有”合同的人,则某些消息来源可能会决定稍有不同,这会让您头疼。但希望这不是你的情况。

    祝你好运! :)

    【讨论】:

    • @user1558528 不客气。为您添加了一些奖励信息。 :)
    【解决方案2】:

    我的第一个问题是,在我完成第一个实现之后,有什么方法可以“动态”添加其他外部公司的服务,包括它们的 URL/端口/等信息

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多