在当前模型驱动设计DDD和share nothing架构驱动下,以及基于分布式CAP定律和BASE理论的普及,Web本质上作为一个分布式系统的认识越来越受到很多人注意,因此,基于浏览器的RIA应用越来越普及,如google的GWT等等。
将这么多概念揉合在一起,可能你有点茫然,他们之间有关系吗?浏览器作为富客户端,越来越有必要做更多的事情,包括和Client操作有关的一切,例如 Session等,这样,减轻服务器端负担,使服务器端不必被客户端Session绑架(Stick to session),从而实现更好的可伸缩性Scalable。
为了实现这点,曾经天经地义在服务器端实现的MVC模式也被搬到RIA浏览器中,当然主要是VC两个部分,和服务器端交互的就是Model,而服务器端摆脱了客户端Session约束,专注对Domain Model实现伸缩性,这种分布式的分工俨然是合适的,如果再结合BASE理论,如果我们需要高一致性,就将数据作为Model的字段,否则,由RIA浏览器通过AJAX再次实现读取,或者通过Web Sockets由服务器端推到客户端。
所以,Web架构两个趋势:胖客户端RIA + 胖领域模型(也就是服务器端的充血模型)。
在浏览器客户端实现MVC好像只有Swing或VB专有语言才能实现,实际上现在基于Javascript的MVC框架非常多,这里介绍一个基于JQuery的MVC框架coreMVC,使用起来比较简单易行。
corMVC: An jQuery-based MVC Framework一文介绍了coreMVC如何使用?
下面是coreMVC架构:
以contact应用为例,实现步骤:
1.建立一个“contact” model,取名为 “contact.js”
2.建立controller MVC中的控制器,在这个控制器中实现contact模型的增删改查CRUD流程划转。addContact, editContact, deleteContact等方法分别是新增 编辑和删除,与服务器的RESTful接口交互,如下代码:
function Controller(){
// Route URL events to the controller's event handlers.
this.route( "/", this.index );
this.route( "/contacts/", this.index );
///contacts/add/很REST
this.route( "/contacts/add/", this.addContact );
this.route( "/contacts/edit/:id", this.editContact );
this.route( "/contacts/delete/:id", this.deleteContact );
.....
};
更多Controller代码可见原文。
3. 建立MVC的视图,比如 “Contact List“(Contact列表), “Contact Form”(单个Contact表单) , 个人感觉coreMVC实现View比较复杂了些,View视图实际直接使用html实现即可,js只是将Model数据填入到html的表单form或相应的html字段中即可。
更多服务器体验搬迁到客户端,可见这个视频,当然只是展示一个新的idea。
[该贴被banq于2009-12-23 13:15修改过]
itian
发表文章: 3
注册时间: 2008年10月05日 15:12
悄悄话
个人博客
我要关注该作者发言
基于客户端的MVC架构 2009年12月24日 11:32 收藏关注本主题 到本帖网址 加入本帖到收藏夹 引用该主题回复 回复该主题
1
顶一下
我现在也特迷信 胖客户端 之前的项目都是用 css + js 实现的客户端,整体作下来对 html, css, js 的胖客户端挺失望,(没实际开始做,只是猜想)相比插件式(Flash, Applet)的 胖客户端 来说, 前者要解决的问题又多又麻烦,光是一个页面的浏览器兼容就搞死一帮人,然后有些系统需要服务器主动往客户端发信息,js没辙,最后用了tomcat comet的实现才完成这个系统,最近也看到banq发的WebSocket信息,好像给js带来了一些希望,但我却是觉得绝望,浏览器之间的统一,到什么时候各大浏览器才能全都支持,而现在插件式的胖客户端N年前已经能用Socket了,前段时间也看到篇文章说WebGL,我也是差不多的想法,js写 opengl,而且现在还是在构想阶段,插件式的胖客户端的现在已经可用了,Flash10开始支持opengl, java这块我所知道的就有2个opengl的实现,而且才好几年前就已经有基于Java3D浏览器上的Applet的Web3DGame了。
[该贴被itian于2009-12-24 11:34修改过]
分享到:
相关推荐
这个项目不仅包含了服务器端(chat_server)和客户端(chat_client)的源代码,还附带了一份关于MVC架构模式的PDF说明文档,方便开发者深入理解其工作原理。 MVC架构模式是软件工程中的一种经典设计模式,广泛应用...
综上所述,基于Java MVC架构的企业员工信息管理系统是一个集成了多种Java Web技术的复杂应用。它通过模型、视图和控制器的分离,实现了良好的代码组织和模块化设计,同时具备文件管理、信息统计和可视化展示等功能,...
基于MVC架构的小学社团申请系统设计 本文将介绍基于MVC架构的小学社团申请系统设计,旨在解决中学社团管理中存在的问题。本系统采用B/S架构,客户端实现社团列表的查看、申请和审核结果的查询,服务端实现社团上线...
本系统“MVC架构的考试系统”是基于Java语言实现的,旨在提供一个高效且易于维护的考试平台。让我们深入探讨MVC架构及其在Java中的应用。 **1. Model(模型)** 模型层是应用程序的核心部分,负责处理业务逻辑和...
这个“mvc三层架构应用案例简单代码”提供了一个基于Mybatis、Maven、MySQL、JSP、HTML、Servlet和JavaScript的示例,下面将对这些技术和MVC架构进行详细阐述。 **1. MVC模式介绍** - **模型(Model)**:模型层负责...
**.NET MVC架构详解** .MVC(Model-View-Controller)是Microsoft开发的一种Web应用程序框架,主要用于构建可维护性高、结构清晰的Web应用。它基于.NET Framework,为开发者提供了强大的设计模式支持,使得开发过程...
基于MVC架构的数据挖掘平台的设计与实现,主要讨论了数据挖掘软件的功能模块可扩展性和复用性问题。在文章中,作者首先分析了现有数据挖掘工具的优缺点,并结合数据挖掘过程的实际特点,提出了一个基于模型-视图-...
ASP.NET MVC是一个基于模型-视图-控制器(MVC)设计模式的开源框架,用于构建高效、可测试的Web应用程序。这个框架为开发者提供了一种更清晰的结构,使他们可以将业务逻辑、用户界面和数据访问有效地分离。在本文中...
6. **Larena2.0与3.0APP框架差异——pureMVC架构的解析与仿制.ppt**:这个文件可能详细分析了Larena应用程序框架在2.0和3.0版本中如何采用PureMVC架构,并可能讨论了它们之间的差异和改进之处。 7. **pureMVC类成员...
对于这个项目,开题报告可能阐述了选择MVC架构和JSP的原因,以及系统设计和实现的初步规划。 **8. 源码分析** 源码是理解系统运作的直接方式。通过阅读和分析源码,可以深入理解MVC模式在实际项目中的应用,以及...
**基于SpringMVC开发MapXtreme瘦客户端例子** 在现代Web应用开发中,SpringMVC作为Spring框架的一部分,提供了一种强大的Model-View-Controller(MVC)架构模式实现方式,使得开发者能够构建可扩展且易于维护的Web...
【标题】"jsp简单的mvc架构新闻发布系统"是一个基于JavaServer Pages (JSP)技术实现的简单模型-视图-控制器(Model-View-Controller, MVC)模式的新闻信息发布平台。在MVC架构中,JSP主要负责展示视图,而业务逻辑和...
Spring MVC是Spring框架的一个模块,专为创建Web应用程序提供模型-视图-控制器(MVC)架构支持。这个项目涉及到的功能包括分页显示、单个或批量删除、动态数据修改以及登录和管理员主界面的设计,这些都是在Web开发...
通过这种方式,ExtJS 4的MVC架构提供了一种强大且灵活的工具,允许开发者构建复杂的应用程序,同时保持代码的清晰性和可维护性。它不是一个严格的设计模式,而是提供了一种框架,可以帮助开发者遵循最佳实践,提高...
【基于MVC架构的WEBSHOP管理系统的设计与实现】是一项针对现代电子商务的毕业设计项目,旨在构建一个高效、便捷的在线购物平台。MVC(Model-View-Controller)架构是一种广泛应用于Web开发的设计模式,它将应用程序...
"MVC架构下的ServletJSP在电子商务网站开发中的研究" MVC架构是软件设计模式的一种,主要用于分离应用程序的数据访问、用户界面和业务逻辑,以提高代码的可维护性和可重用性。MVC架构包括三个组件:模型(Model)、...
总的来说,"JSP MVC架构图书管理系统"是一个融合了JSP技术、MVC设计模式和MySQL数据库的实用项目,它展示了如何在Java Web环境中高效地开发和管理图书信息。通过学习和实践此类项目,开发者能够提升对JSP、MVC和...
【标题】"基于Spring Mvc的Java Web项目"涵盖了多个关键的IT知识点,主要涉及Web开发技术栈,包括Spring MVC、Spring Boot、Java、JavaScript以及MyBatis等。下面将逐一详细解析这些技术及其在项目中的应用。 1. **...
本项目——“基于MVC设计模式和三层架构的设备维护配送实时监控系统研究与实现代码”,旨在展示如何利用这两种主流的设计模式来构建一个功能完善的实时监控系统。下面将详细阐述这两个设计模式以及相关技术在系统中...
MVC(Model-View-Controller)设计模式是一种广泛应用于用户界面设计的经典架构模式。它将应用程序或其部分明确地划分为三个相互独立且功能清晰的组件:模型(Model)、视图(View)和控制器(Controller)。这种...