将WCF合并到MVC中间层的最佳实践

时间:2011-05-03 19:13:25

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

我想知道是否有人使用MVC和WCF作为中间层实现了3层应用程序?是否有任何性能问题/缺点,而不是使用.dll实现典型的中间层。我正在设想一个可以访问DAL(linq to SQL)的WCF中间层,非常感谢任何建议/链接!

2 个答案:

答案 0 :(得分:6)

使用MVC和WCF的3层应用程序通常意味着:

  • 字体结束ASP.NET MVC,其中最简单的场景控制器调用WCF服务的代理。
  • 后端/中间层WCF暴露您的业务逻辑/数据访问
  • 托管数据库的数据库服务器

你应该在哪里使用它? Only when you really have to - 你有严格的要求。这当然会产生巨大的性能影响,因为前端对每个业务操作都使用远程调用。远程呼叫可以在同一台机器上的进程之间进行,但最常见的是在另一台服务器上的进程之间(在另一个网络中)。它还需要better design of interactions将调用次数减少到最小,并且如果需要,可以使用异步通信在同一时间调用多个调用。

答案 1 :(得分:0)

如果您开发了密集使用AJAX的网站(例如,根据jQuery.ajax),您可以通过以下方式实现它:

  • 可以针对ASP.NET MVC制作前端。每个AJAX都会请求相应视图的数据。
  • 在与ASP.NET MVC相同的结婚网站上发布的WCF(参见here示例)可以为所有AJAX请求提供JSON数据。 WCF可以看作是实现业务逻辑并从数据库服务器获取所需数据的中间层组件。

在应用程序的这种体系结构中,ASP.NET MVC将使用母版页缩减为V(视图)。它可以根据用户角色生成不同的视图。模型和大多数Controller操作将在WCF中移动。可以使用与控制器操作完全一样的单元测试来测试WFC方法。如果您需要一些其他数据,如动态生成的图片(例如图表)或动态生成的Excel或WinWord文件,您可以从MVC控制器操作中完全轻松地返回WFC方法中的所有数据。

在您的应用程序的这种设计中,我发现没有性​​能或其他缺点。 ASP.NET MVC和WFC的View都有许多可以按需使用的缓存可能性。