ASP.NET Web API 适合解决方案架构的哪些方面?
Where does ASP.NET Web API fit in terms of solution architecture?
周末我参加了 ASP.NET 网络 API 的课程,但我很难理解它在使用方面的适用范围。做了一些 google 研究,但仍然感到困惑。
我可以看到它很适合在数据库上实现 CURD 操作,但我应该在 Web 中实现业务逻辑吗api?
说我有一个工作单位。检查数据库中是否存在客户,如果存在,则获取最后 10 个订单。这应该在 web-api 中采用单一方法还是两种方法,一种用于检查客户,另一种用于获取订单?到目前为止,我已经看到了在单个数据库资源上实现 CURD 的示例。
如果我不得不想象一个使用 web-api 的应用程序架构,我认为
前端 - 在 MVC 中
业务逻辑 - 单独的业务逻辑 class 库从控制器调用,然后又调用 Web API?
数据库逻辑 - 使用 Web -API 来实现 CURD?
最好保持简单,这是我在大型(1000 个用户)企业应用程序上的结构:
2 ASP.net 个项目,还有 3 个 class 库。
1st asp.net Project - 是一个标准的 MVC 应用程序,但大多数情况下它只是用作所有 HTML/cshtml、javascript 和 css 资产。我们几乎不使用 razor/controller MVC 语法。这个 "Front end" 项目非常 javascript 使用 angular.js(单页应用程序-SPA 架构)驱动,回调到第二个 Asp.net web api 项目来收集和收集所有数据。
2nd asp.net 项目 - 正在使用 ASP.net Web API 2 模板。该项目负责所有数据收集。这个项目从多个地方调用,mobile/tablet 应用程序,第一个 asp.net 项目并暴露给第 3 方公司以集成到我们的平台中。
Class lib 1(可移植的class库)- 是我们的数据模型项目,它跨多个层共享,包括业务层、数据层,web api 层,并且因为它是一个可移植的 class 库,所以在我们的移动项目中共享。在可能的情况下,我们重用从数据库到 API 层的相同模型,有时这是不可能的,我们使用业务层在模型之间进行映射。
Class Lib 2 - 从 API 和 MVC 项目中引用。这个 dll 包含我们所有的业务逻辑,有时这只是一个传递层,在 CRUD 操作的情况下只做很少的逻辑,只调用数据层,但大多数时候所有业务逻辑都与检查字段输入相关,像上面描述的那样对数据库的多次调用都包含在 this 后面。正如我之前所说,我们的第一个 asp.net 项目几乎没有逻辑,我们从前端项目中引用它的唯一原因是因为这一层包含所有身份验证、授权和权限逻辑,用于建立用户有权访问给定的页。
Class Lib 3 - 仅从我们的业务层引用,该层与多个数据库平台进行所有数据库和中间件交互。
通过上述结构,它可以将事物分开以允许注入 MOQ 接口,允许更轻松的测试,并允许在多个项目甚至多个设备(iOS/android/windows 应用程序)之间实现最佳重用。我们将 2 asp.net 项目分开的唯一原因是出于基础设施原因,每个项目的流量概况完全不同,因此它允许我们优化适合流量概况的硬件 - 许多人将能够将这些组合成1 个项目。
周末我参加了 ASP.NET 网络 API 的课程,但我很难理解它在使用方面的适用范围。做了一些 google 研究,但仍然感到困惑。
我可以看到它很适合在数据库上实现 CURD 操作,但我应该在 Web 中实现业务逻辑吗api?
说我有一个工作单位。检查数据库中是否存在客户,如果存在,则获取最后 10 个订单。这应该在 web-api 中采用单一方法还是两种方法,一种用于检查客户,另一种用于获取订单?到目前为止,我已经看到了在单个数据库资源上实现 CURD 的示例。
如果我不得不想象一个使用 web-api 的应用程序架构,我认为
前端 - 在 MVC 中 业务逻辑 - 单独的业务逻辑 class 库从控制器调用,然后又调用 Web API? 数据库逻辑 - 使用 Web -API 来实现 CURD?
最好保持简单,这是我在大型(1000 个用户)企业应用程序上的结构:
2 ASP.net 个项目,还有 3 个 class 库。
1st asp.net Project - 是一个标准的 MVC 应用程序,但大多数情况下它只是用作所有 HTML/cshtml、javascript 和 css 资产。我们几乎不使用 razor/controller MVC 语法。这个 "Front end" 项目非常 javascript 使用 angular.js(单页应用程序-SPA 架构)驱动,回调到第二个 Asp.net web api 项目来收集和收集所有数据。
2nd asp.net 项目 - 正在使用 ASP.net Web API 2 模板。该项目负责所有数据收集。这个项目从多个地方调用,mobile/tablet 应用程序,第一个 asp.net 项目并暴露给第 3 方公司以集成到我们的平台中。
Class lib 1(可移植的class库)- 是我们的数据模型项目,它跨多个层共享,包括业务层、数据层,web api 层,并且因为它是一个可移植的 class 库,所以在我们的移动项目中共享。在可能的情况下,我们重用从数据库到 API 层的相同模型,有时这是不可能的,我们使用业务层在模型之间进行映射。
Class Lib 2 - 从 API 和 MVC 项目中引用。这个 dll 包含我们所有的业务逻辑,有时这只是一个传递层,在 CRUD 操作的情况下只做很少的逻辑,只调用数据层,但大多数时候所有业务逻辑都与检查字段输入相关,像上面描述的那样对数据库的多次调用都包含在 this 后面。正如我之前所说,我们的第一个 asp.net 项目几乎没有逻辑,我们从前端项目中引用它的唯一原因是因为这一层包含所有身份验证、授权和权限逻辑,用于建立用户有权访问给定的页。
Class Lib 3 - 仅从我们的业务层引用,该层与多个数据库平台进行所有数据库和中间件交互。
通过上述结构,它可以将事物分开以允许注入 MOQ 接口,允许更轻松的测试,并允许在多个项目甚至多个设备(iOS/android/windows 应用程序)之间实现最佳重用。我们将 2 asp.net 项目分开的唯一原因是出于基础设施原因,每个项目的流量概况完全不同,因此它允许我们优化适合流量概况的硬件 - 许多人将能够将这些组合成1 个项目。