ASP.NET MVC ntier架构

时间:2015-03-13 10:39:59

标签: asp.net-mvc architecture n-tier-architecture

我有一个标准的nteir设置: -

网络服务器 - >应用服务器 - >数据库服务器

我有一个位于Web服务器上的MVC 5 Web应用程序,控制器调用位于App服务器上的WCF服务项目。 WCF服务项目使用EF6来编组数据库服务器上的数据。

我想知道WCF是否过度杀伤?是否有更简单的方法来实现这种相同的架构?我想我应该在app服务器上使用Web API,然后只使用HTTPClient从控制器调用Web API?

或者,我甚至可以在App服务器上使用普通的MVC项目将JSONResults返回给Web服务器上的MVC控制器?

2 个答案:

答案 0 :(得分:0)

这取决于......

您必须了解每个设置的好处。这不是详尽的,只是一个快速的脑转储。这应该给你一些进一步展望的提示,因为在狂野的世界中,选择一种或另一种解决方案可能有更多的原因。

  • 为何选择WCF。你打算在你的后端拥有不同的客户吗?您需要在客户端和后端之间保持一定的安全性吗?使用WCF,您可以配置Http,TCP端点,设置消息或传输安全性等等。例如,如果您执行Intranet应用程序并且您不仅希望拥有UI(MVC应用程序)而且希望其他系统使用它,则可能需要它。如果不需要这样做,WCF似乎有点过分了。
  • 如果您想构建更多面向REST的API,为不同的客户端(不同的媒体类型)启用内容协商,Web Api也是一个非常好的选择。构建REST并不是要发布JSON,而是在这里解释它太长了。如果您的客户端不仅是您的MVC应用程序,而且您可能需要api用于其他移动设备,OAuth身份验证等等,这可能是一个很好的方法。
  • 如果您没有任何特殊需求,那么普通的MVC应用程序也适用。无需开销。 保持简单和愚蠢

我希望这会有所帮助

答案 1 :(得分:0)

我不会改变这一点。

WCF是Web Tier和App Tier之间通信的不错选择。我永远不会把我的App Tier暴露给外面的世界,所以如果我的应用程序与外界有任何通信,那将只通过Web层,如果需要支持多个客户端,我会在Web上创建一个WebAPI等级并揭露它。

我会保持App层仅供组织内部使用,并且使用WCF我可以灵活地编写服务代码和合同,然后可以通过各种绑定(传输,安全性等)公开。如果您正在构建服务您的组织并计划支持多种协议,或者只使用HTTP以外的协议(tcp,名称管道,udp等),那么WCF确实是一个不错的选择。