C# 建议通用服务的体系结构模式

C# 建议通用服务的体系结构模式,c#,design-patterns,C#,Design Patterns,我们正在连接不同的服务来描述一些Tase股票信息。 目前有三种服务。每个服务都以不同的方式返回信息:XML、Json、管道分隔字符串。在不久的将来,服务的数量可能会增加 我想以最灵活的方式实现它,最大限度地抽象。唯一的模式(我所熟悉的模式)是工厂模式或抽象工厂。甚至战略模式也可能是一种选择 也许你可以建议更好的实施方式 总结: StockInformationParser ->连接到服务1 | |服务2 | |或服务N ->解析和分析信息 ->返回StockInformationInfo。 关于

我们正在连接不同的服务来描述一些Tase股票信息。 目前有三种服务。每个服务都以不同的方式返回信息:XML、Json、管道分隔字符串。在不久的将来,服务的数量可能会增加

我想以最灵活的方式实现它,最大限度地抽象。唯一的模式(我所熟悉的模式)是工厂模式或抽象工厂。甚至战略模式也可能是一种选择

也许你可以建议更好的实施方式

总结:

StockInformationParser
->连接到服务1 | |服务2 | |或服务N
->解析和分析信息
->返回StockInformationInfo。

关于您的情况,我建议您应用更多的设计模式,并将其结合起来解决您的问题,如下所示: 1.Facade模式:它作为一个接触点类来减少连接多个服务时的复杂性

  • 对于返回每个服务的每个结果,您可能需要一个具有相同方法的解析引擎,但每种格式都是Json、Xml、rss。。。相同的方法但不同的格式,所以您应该应用策略模式来解决

  • 每个服务都需要一个方案工厂来连接,因此抽象工厂或工厂设计模式是合适的

  • 最后一件事,您希望结果是易于更改或扩展的抽象,稍后您可以在这里应用代理模式


  • 希望这对您有所帮助。

    关于您的情况,我建议您应用更多的设计模式,并将其结合起来解决您的问题,如下所示: 1.Facade模式:它作为一个接触点类来减少连接多个服务时的复杂性

  • 对于返回每个服务的每个结果,您可能需要一个具有相同方法的解析引擎,但每种格式都是Json、Xml、rss。。。相同的方法但不同的格式,所以您应该应用策略模式来解决

  • 每个服务都需要一个方案工厂来连接,因此抽象工厂或工厂设计模式是合适的

  • 最后一件事,您希望结果是易于更改或扩展的抽象,稍后您可以在这里应用代理模式


  • 希望这能有所帮助。

    我会有一些不同的方法。如何创建一个数据库并用这些服务填充它,然后您就可以用最常用的SQL轻松地查询数据库,并使用GROUPBY、Order和JOIN

    优点是,

    • 不需要重新设计查询适配器,毕竟您需要查询
    • 不需要担心不同的格式,一旦获取的数据保持为行 在数据库中
    • 改进了在服务失败或连接问题时的缓存,您仍然可以看到过去的数据

      • 我会有一些不同的方法。如何创建一个数据库并用这些服务填充它,然后您就可以用最常用的SQL轻松地查询数据库,并使用GROUPBY、Order和JOIN

        优点是,

        • 不需要重新设计查询适配器,毕竟您需要查询
        • 不需要担心不同的格式,一旦获取的数据保持为行 在数据库中
        • 改进了在服务失败或连接问题时的缓存,您仍然可以看到过去的数据

        我假设所有这些外部服务最终都映射到同一个域模型

        在这种情况下,您可以:

        • 创建一个内部服务,其中包含可由您的客户端使用的操作,并为这些客户端优化数据契约
        • 内部服务使用基础存储库和域模型
        • 存储库负责提取数据的检索方式。在内部,他们从外部提供者获取数据,并将这些数据映射到您的域对象。您可以为每个外部服务编写一个提供者,并使用存储库中的服务。如果添加了外部服务,则只需添加新的提供程序并将其添加到存储库逻辑中

        我个人喜欢IoC,因此我会为每个组件创建接口并注入具体实例;这使得它更加灵活和可测试。

        我假设所有这些外部服务最终都映射到同一个域模型

        在这种情况下,您可以:

        • 创建一个内部服务,其中包含可由您的客户端使用的操作,并为这些客户端优化数据契约
        • 内部服务使用基础存储库和域模型
        • 存储库负责提取数据的检索方式。在内部,他们从外部提供者获取数据,并将这些数据映射到您的域对象。您可以为每个外部服务编写一个提供者,并使用存储库中的服务。如果添加了外部服务,则只需添加新的提供程序并将其添加到存储库逻辑中

        我个人喜欢IoC,因此我会为每个组件创建接口并注入具体实例;这使得它更加灵活和可测试。

        我会选择工厂模式,它接受标准格式,然后是适配器模式来标准化每个不同的服务。我会选择工厂模式,它接受标准格式,然后是适配器模式来标准化每个不同的服务。谢谢您的回复,我会进一步调查。谢谢你的回复,我会进一步调查。最后,结果会保存到数据库。。。但我试图构建的是分析基础设施,我们从一些服务中获取一些信息,然后应用我们自己的分析系统,结果存储到数据库。我说的是在解析后直接从服务中存储信息,但在应用任何分析之前,只存储原始表转储。您的服务返回某种行,对吗?最后,结果将保存到数据库。。。但我试图建立的是分析基础设施,我们是