大规模企业API设计

时间:2016-09-01 14:15:26

标签: asp.net-mvc api architecture

我需要建议如何最好地为大规模企业应用程序实现API,在根应用程序中运行一些子Web应用程序。例如Root,Child1和Child2

每个应用程序都有单独的MVP项目在IIS中托管。 MVC应用程序只有前端逻辑,业务和数据访问层托管在另一个WCF项目中(每个子项的单独WCF项目)。前端MVC应用程序仅将请求路由到目标WCF应用程序。

现在我计划为每个应用程序设计API。我无法决定是否应该创建一个单独的应用程序,该应用程序将保存所有子应用程序和根应用程序的API,或者应该在每个应用程序中添加API。与前端MVC项目一样,API也将重定向到集中式WCF应用程序。

有一个适用于所有API的常用逻辑(速率限制,身份验证等...),如果API在每个应用程序中,那么我将在所有三个应用程序中使用复制逻辑。

1 个答案:

答案 0 :(得分:0)

无论如何都需要权衡。

开发单独API的优势包括:

  1. 分离
  2. 更容易更改
  3. 可独立部署的I.e.可以独立扩展
  4. 如果不同的开发团队参与不同的API,可能会更容易
  5. 缺点包括:

    1. 需要决定是否要在每个API中重复公共代码或提取公共共享模块(这会降低隔离优势)
    2. 更多基础设施/操作处理
    3. 如果您希望在所有API的速率限制方面进行协调,这比它们是单个API更难
    4. 我的默认位置是开发单独的API,但你的特定用例(路由请求到其他东西)可能会被一些现有的工具解决,例如nginx - 我不知道这些,所以不能建议