【问题标题】:Consuming multiple APIs and WebServices using the onion architecture使用洋葱架构使用多个 API 和 WebServices
【发布时间】:2012-09-13 22:42:32
【问题描述】:

我目前正在使用洋葱架构设置 Visual Studio 解决方案。我对如何构建解决方案有很好的理解,但我遇到了一些麻烦。我的解决方案是使用多个 API。这些 API 使用 WCF、Soap Web 服务和 RESTSharp 用于 REST 服务。我不确定如何构建它。

最大的困惑在于 REST 服务,因为它不仅使用 RESTSharp,还使用一些用于序列化的 POCO 类。我也有:

ApiResult<T> where T is any of the POCO classes.

我的第一个想法是创建 Infrastructure.RestSharp,我将在其中实现所有返回 ApiResult 的接口,但问题是我将这些 POCO 类和 ApiResult 放在哪里?由于接口正在使用它们,它们将不得不进入核心的某个地方,但是放置它们的好地方是哪里?

WCF 和肥皂服务怎么样?我会创建一个 Infrastructure.WebServices 吗?

【问题讨论】:

  • 如果我理解得很好,您的解决方案会通过 WCF/Soap/Rest Services 公开 API 吗?
  • 不,我使用多个 API。有些是 WCF,有些是旧版 SOAP,有些是 REST 服务。我不确定它们在洋葱架构中的位置。

标签: c# design-patterns domain-driven-design onion-architecture


【解决方案1】:

也许这会有所帮助。这是我用于使用 Onion Architecture 设置 Visual Studio 项目的图表。箭头显示哪些项目引用了其他项目。蓝框是我创建的项目。橙色项目是第 3 方项目或 .NET API。

  • UnitTests、Web (UI) 以及依赖注入和数据访问层项目都位于洋葱的外层。
  • 所有参考都向内指向核心(外部层除外,它可以指向侧面)。
  • 所有 API 都通过外层项目访问。

【讨论】:

  • 出于好奇,假设您使用 5 个单独的 API。两个是基于 REST 的,你使用类似 RESTSharp 的东西,两个是 WCF,一个是使用 asmx 的常规 SOAP。您会为每个 API 创建一个项目(共 5 个)还是每种技术创建一个项目(共 3 个,一个用于 REST、WCF 和 SOAP)?或者您会创建一个 API 项目并将它们全部转储到那里吗?请记住,使用的 API 数量会增加吗?
  • 我可能会将所有 API 保留在同一个项目中,这可能是 UI。我会尝试将业务代码分开在不同的项目中。这个想法是将其分开,以便可以重复使用这些部分。您可以编写桌面应用程序、Web 应用程序或其他所有使用相同业务代码 DLL 而不必重写应用程序的那部分的东西。更新可以像替换这些应用程序中的 DLL 一样简单。
猜你喜欢
  • 2011-10-09
  • 2014-01-25
  • 2014-10-15
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 2014-06-22
  • 2015-03-17
  • 1970-01-01
相关资源
最近更新 更多