2015-03-13 119 views
0

我有一个标准的nteir设置: -ASP.NET MVC n层架构

Web服务器 - >应用服务器 - >数据库服务器

我有一个MVC 5 Web应用程序坐在控制器调用Web服务器上一个坐在App服务器上的WCF服务项目。 WCF服务项目使用EF6来封送数据库服务器上的数据。

我想知道如果WCF是矫枉过正?是否有更简单的方法来实现这个相同的架构?我想我应该在应用程序服务器上使用Web API,然后使用HTTPClient从控制器调用Web API?

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

回答

0

这取决于...

你必须明白每个设置的好处。这并非详尽无遗,只是一个快速转变。这应该给你一些提示,以便在野外世界看得更远,可能有更多的理由选择一个或另一个解决方案。

  • 为什么选择WCF。你将有不同的客户到你的后端?您需要在客户端和后端之间提供一些entreprisy安全性?借助WCF,您可以配置Http,TCP端点,设置消息或传输安全性等等。例如,如果你在做一个Intranet应用程序,并且你不仅希望拥有你的UI(MVC应用程序),而且还有其他系统需要它,那么可能需要它。如果这不需要,WCF似乎在这里矫枉过正。
  • 如果您希望构建更多面向REST的api,为不同客户端(不同媒体类型)启用内容协商,则Web Api也是非常不错的选择。构建REST不是关于发布JSON,更重要的是,这里解释它太长了。如果你的客户不仅仅是你的MVC应用程序,而且你可能需要一个用于其他移动设备的api,OAuth认证等等,这可能是一个很好的方法。
  • 平原MVC应用程序也适合,如果你没有任何特殊需求,去为它。没有需要的开销。 保持简单和愚蠢

我希望这有助于

0

我不会改变这一点。

WCF是Web Tier和App Tier之间沟通的好选择。我永远不会把我的App Tier暴露给外部世界,所以如果有任何来自外部世界的应用程序通信,它将仅通过Web层,并且如果需要支持多个客户端,我会在Web上创建一个WebAPI并揭露这一点。

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