WebAPI服务架构

时间:2015-12-29 08:52:58

标签: rest architecture asp.net-web-api2 soa

我们有一个web api服务层(SL),其中业务层的每个部分都有自己的web api应用程序。目前,我们正在为我们的api添加管理功能。管理员功能可以与 Engine1 Engine2 等相关。

我考虑添加 SL.Admin 应用以公开admin api。业务层由" module"分隔,即BL.Main,BL.Engine1和BL.Engine2。由于我使用autofac作为工厂,我想将SL.Engine1注册分为两个模块,即Engine1Module和Engine1AdminModule。这样我就可以在SL.Admin中的SL.Engine1和Engine1AdminModule中注册Engine1Module。

  • SL.Main
  • SL.Engine1
  • SL.Engine2
  • ..
  • SL.Admin?

我们的api看起来像(使用反向代理)

/api/engine1/foo/bar/featureA?varX=x
/api/engine2/foo/bar/featureB?varY=y
/api/admin/engine1/foo/bar/featureC?varZ=z
/api/admin/engine2/foo/bar/featureD?varT=t

我想知道这是一个好策略还是我应该更仔细地做我的作业? :)

1 个答案:

答案 0 :(得分:1)

将内容保存在单独的服务中始终是一个很好的设计选择。在我看来,你可以更进一步(如果可能的话)使管理服务独立于引擎业务层,这意味着你在业务层上分离出管理功能。通过这种方式,您可以获得彼此更加独立的服务。