扩展MVC与扩展多层应用程序

时间:2011-04-15 12:28:51

标签: architecture scalability distribution

据我所知,可以分发多层应用程序以利用可伸缩性。也就是说,当您的Web应用程序需要的资源多于单个服务器可以提供的资源时,您只需分发您的应用程序。

您可以将持久层放在一个服务器中,将业务层放在另一个服务器中,将演示文稿放在第三个服务器中。

此外,您可以将业务层划分为多个服务,并将每个服务放在单独的服务器中以应对这些请求。

因为多层应用程序本质上是由SOAP,Sockets,.Net Remoting或RMI等中间件一起通信的组件,所以通过进一步分发其组件来扩展应用程序相当容易。

问题是,使用MVC架构而不是N层架构设计的应用程序怎么样?据我所知,模型,视图和控制器驻留在一台机器上,那么有人如何分发MVC架构的Web应用程序?

此致

3 个答案:

答案 0 :(得分:7)

如果您可以在控制器中调用Web服务来获取阻止您调用另一个系统上的业务层的数据。我对mvc的理解是,它旨在模式化系统的应用程序流程。它并不意味着业务层结束或不必将业务和域层放在同一系统上。

答案 1 :(得分:5)

应用程序的所有部分必须位于一台服务器上。使用MVC应用程序,您可以通过复制iis实例来扩展体系结构。例如,默认情况下,您有一台带有iis服务器的计算机和一台站点。对于您需要重新组织实例的规模,例如添加一些iis服务器(默认的副本)(它的呼叫后端服务器)并添加服务器平衡负载到后端(它的呼叫前端)

enter image description here

答案 2 :(得分:1)

我目前正在与CakePHP合作,这是一个MVC框架。我已经为系统分析了数据库,这最终是扩展的瓶颈。

在应用程序级别,模型,视图和控制器代码存在于应用程序服务器的每个实例上。控制器和视图级别正常工作。所有的魔力都发生在模型的代码中。在进行读取或写入之前,模型将向目录服务器发出请求,以确定数据存储在哪个分片上,或者在新条目的情况下,应该添加哪个分片。

如何存储数据会有所改变。我使用MySQL作为键/值存储,我不使用类似what FriendFeed did的连接。

最终,这使得熟悉MVC设计范例的人能够在系统上快速加速。在控制器和视图级别工作的开发人员甚至不需要了解系统如何分片(大多数情况下)。