在当前模型驱动设计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修改过]
分享到:
相关推荐
ASP.NET权限管理MVC架构EasyUI框架源码带完整文档 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 开发语言 : C# 数据库 : SQL2008 开发工具 : VS2010 源码类型 : WebForm 1、基于 ASP.NET MVC +...
1、基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全摆脱了...
基于MVC的JavaScript Web富应用开发(构建下一代互联网富应用之最前沿技术),面向jQuery开发者的客户端应用开发指南,本书教你如何构建先进的富应用程序,书中给出的很多优秀的工具和最佳实践都是很多程序员和...
毕业设计,基于Java+MVC开发的车辆运输信息管理APP,包括PC端和安卓Anroid手机APP,内含Java源码,安卓客户端 安卓Android车辆运输信息管理App可升级Studio毕业源码案例设计 开发环境: Myclipse/Eclipse/Idea都...
基于MVC的JavaScript Web富应用开发(构建下一代互联网富应用之最前沿技术),面向jQuery开发者的客户端应用开发指南,本书教你如何构建先进的富应用程序,书中给出的很多优秀的工具和最佳实践都是很多程序员和...
毕业设计,基于Java+MVC开发的电影院订票App,包括PC端和安卓Anroid手机APP,内含Java完整源码,安卓客户端 安卓Android电影院订票app设计可升级Studio毕业源码案例设计 开发环境: Myclipse/Eclipse/Idea都可以...
毕业设计,基于Java+MVC开发的快递代拿跑腿APP,包括PC端和安卓Anroid手机APP,内含Java完整源码,安卓客户端 安卓Android快递代拿跑腿APP设计可升级Studio毕业源码案例设计 开发环境: Myclipse/Eclipse/Idea都...
毕业设计,基于Java+MVC开发的图书馆座位占座App,包括PC端和安卓Anroid手机APP,含Java完整源码,安卓客户端 安卓Android图书馆座位占座app设计可导入Studio毕业源码案例设计 开发环境: Myclipse/Eclipse/Idea都...
基于 JSP、Servlet 和 JavaBean 的 MVC(Model-View-Controller)架构是一种常见的 Java Web 应用程序设计模式,它将应用程序分为模型、视图和控制器三个核心部分,以实现代码的分层和解耦。以下是基于该架构实现的 ...
一个使用Python基于socket开发的MVC架构的Web框架。 项目介绍 基于socket实现多线程的Web服务器的内置。 采用MVC架构,减少系统重组,提高系统集成以及代码可重用性。 实现对HTTP请求的解析以及HTTP响应的生成。 ...
您刚刚下载EnterpriseExtjs.rar中,包含WMC2.0-Client.zip文件,... 并且WMC2.0-Client.zip作为客户端开发框架,您是不需要写任何代码的,我们提供代码生成器帮助你实现基于EntityFramework+Extjs+MVC架构的快速开发。
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...
node-RESTful-api 基于 Express Router 中间件、Mongoose 和 ...API 的 MVC 架构。 node-RESTful-api ├── app.js ├── controllers │ └── profiles.js ├── models │ └── profile.js └── route
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...
系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动...