2

我正在研究当前基于以下架构构建的项目:

1)第一个解决方案

  • 具有基于 Entity Framework 5 的所有数据库逻辑 (DAL) 的项目
  • WebAPI 项目负责向客户门户网站和智能手机应用程序提供数据

2)第二种解决方案

  • 用作客户 Web 门户的 MVC4 项目

客户 Web 门户和 WebAPI 位于同一台服务器上。WebAPI 直接访问数据库,而客户门户网站通过 WebAPI 访问它。选择此架构的原因是为了缩短开发时间,因为 Web Portal 和智能手机应用程序调用了 85% 的相同 Web 服务。但是,我非常担心这是多么好的性能架构。我认为客户门户网站应该直接访问数据库,这将是更有效的方式。

对此有什么想法吗?

4

1 回答 1

2

架构总是很棘手,它总是在开发速度、可维护性、性能和可扩展性等不同因素之间进行折衷。所以,你需要权衡所有的利弊。

通过 WebAPI 访问数据库

1. 肯定会在性能上引入一些开销。但是多少钱?假设通过额外的包装器 (WebAPI) 传递您的调用,每次调用将花费您大约 2-3 额外毫秒,以及大约 200MB 的额外 RAM。我认为,这不是一个真正的问题,但您会更好地了解所有细节,这取决于您。

2. 该解决方案可以从使用缓存中获得一些好处。如果将 IIS 配置为缓存对 WebAPI 的请求,那么:WebAPI 客户端和门户都会提高性能。

直接通过 DAL 访问数据库

1. 从理论上讲,您正在为您的数据库引入两个需要处理的入口点。如果您需要添加一些逻辑,WebAPI 客户端和您的门户必须使用这些逻辑,并且该逻辑是特定于 Web 的(例如,与用户会话相关的内容),该怎么办?您不应该将其添加到 DAL,而是需要添加具有另一个库的另一个层,这将被两者使用:WebAPI 和您的门户。如果您唯一的访问点是 WebAPI,那么您可以只修改 WebAPI 以获得结果。

总结一下:

这些只是一些优点和缺点。但是,如果您的项目不是很大,如果它不打算承受很高的负载,那么我会考虑的唯一因素是开发成本。如果使用 WebAPI 作为单个入口点更快,那么就使用它。

于 2012-11-17T17:08:22.590 回答