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

如何解决扩展MVC与扩展多层应用程序

|| 据我所知,可以分布多层应用程序以利用可伸缩性。也就是说,当您的Web应用程序需要的资源超过单个服务器可以提供的资源时,您只需分发应用程序即可。 您可以将持久性层放在一台服务器中,将业务层放在另一台服务器中,将表示放在第三台服务器中。 此外,例如,您可以将业务层划分为许多服务,然后将每个服务放在单独的服务器中以应对这些许多请求。 因为从本质上讲,多层应用程序是通过诸如SOAP,套接字,.Net Remoting或RMI之类的中间件进行通信的组件,所以通过进一步分发其组件来扩展应用程序将相当容易。 问题是,使用MVC架构而不是N-Tier架构设计的应用程序如何?据我所知,模型,视图和控制器位于一台机器上,那么有人如何分发MVC架构的Web应用程序呢? 问候,     

解决方法

应用程序的所有部分都必须在一台服务器上。使用MVC应用程序,您可以通过复制iis实例来扩展体系结构。例如,默认情况下,您有一台装有iis服务器的计算机和一台站点。为了扩展规模,您需要重新组织实例,例如添加一些iis服务器(默认副本)(称为后端服务器),并将服务器负载均衡负载添加到后端(称为前端服务器)。结束)     ,如果您可以在控制器中调用Web服务以获取数据,那么您将无法调用另一个系统上的业务层。我对mvc的理解是,它旨在模式化系统的应用程序流。这并不意味着业务层结束或不必将业务层和域层放在同一系统上。     ,我目前正在使用CakePHP(这是一个MVC框架)进行此工作。我已经为系统分配了数据库,这最终是扩展的瓶颈。 在应用程序级别上,模型,视图和控制器代码存在于应用程序服务器的每个实例上。控制器和视图级别按正常方式工作。所有的魔术都发生在模型的代码中。在进行读取或写入之前,模型将向目录服务器发出请求,以弄清楚数据存储在哪个分片上,或者在新条目的情况下,应将数据添加到哪个分片上。 数据的存储方式虽然有所变化。我使用MySQL作为键/值存储,但不使用联接,这与FriendFeed相似。 最终,这使熟悉MVC设计范式的任何人都能在系统上非常快地加快速度。在控制器和视图级别工作的开发人员甚至不需要了解系统如何分片(大部分情况下)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?