一种一站式的Java Web框架的设计和实现

论坛 期权论坛     
选择匿名的用户   2021-5-30 01:56   139   0
<p><a href="http://zwchen.iteye.com/blog/47085">http://zwchen.iteye.com/blog/47085</a></p>
<div class="blog_content">
一个月前,我发表了一篇文章《一种快速开发的Java Web架构设计和实现》(
<a href="http://zwchen.iteye.com/blog/38278">http://zwchen.iteye.com/blog/38278</a>),匆匆发表,很欠成熟。经过一段时间的考虑,特别是吸取了Lucas Lee ,together ,lane_cn 等朋友的建议,重写了一份design文档,并且加一份tutorial文档,重构了所有代码,现在发表出来,听听大伙的意见。
<br>本来很想把上次那三篇文章删掉,但也许会删掉到别人的宝贵评论,所以最后还是觉得保留,但我还是不太希望别人在那上面浪费时间,因为这篇文章就够了。
<br>由于文章很长,而且javaeye论坛对word文档的paste支持不是很理想,我就
<strong><span style="color:#FFA500;">只贴出文章的很小一部分,其它的全部,都在附件里</span></strong>,对此主题感兴趣的朋友,可以下载下来评价评价。
<br>我在论坛潜水时,也不希望自己读到某些浪费时间的帖子(javaeye是我见过的文章质量最高的论坛),所以,我也不希望自己的帖子浪费大家宝贵的时间。想必上个帖子很浪费大家时间,深表歉意!
<br>本文是我阶段性的总结,我想肯定受限于
<strong>我的理论知识和项目经验</strong>,希望大家能够理解。
<br>上个帖子最大的问题是:
<br>[list&#61;]1、对Map简单化了,抽象为一个plain结构,现在是对象图、树状结构。
<br>2、原来所有持久化是spring jdbc,现在基本的CRUD是hibernate的dynamic-map方式。[/list]
<br>
<br>现在,使用此框架的开发思路,可以将一个一定复杂度的CRUD操作减少到100行代码左右。
<br>
<br>大家下载附件读吧,
<span style="color:#FFA500;"><strong>文章太长,我只贴出了很小一部分</strong></span>(附件文件夹下的docs目录里)。
<br>
<br>
<br>
<br>
<strong>MiniFramework有哪些核心思想,或是原理?</strong>
<br>1、 元数据编程
<br>这是MiniFramework中减少代码量和快速开发的一个很重要方面。
<br>MiniFramework中有两类元数据,都非常简单:
<br>Map和数据库映射 同时我们会避开Hibernate那种复杂的关联映射。而且这种映射可以自动生成。
<br>JSP页面表单元素类型映射 因为http GET和POST提交数据都是文本key-value键值对,它们和数据库字段类型不匹配,我们必须还原其本来类型,但这个过程是自动化的。我打算开发eclipse插件,让这个映射代码也自动生成。
<br>所有容易变更的信息,譬如sql,页面导航,对象实例引用…
<br>
<br>2、 领域对象的表示:Map和List
<br>MiniFramework里面没有具体的对象,譬如Account,Department,Book,而是以另外一种形式体现:Map,这是它最核心的思想。它可以实现所有具体对象的功能,包括对象图。并且易扩展、灵活。
<br>为什么Map这么关键呢?因为它是领域模型的载体,也是自动持久化的目标对象。了解JSON、YAML和REST对MiniFramework中的map载体理解很有帮助:
<br>REST:区别于Web Services SOAP协议的另外一种轻量级格式,更是一种Idea。REST和ajax协作开发,简直是绝配。REST是未来Web Services的发展趋势,更倾向于SOA,因为REST是以Resource为导向,而SOAP是以Action为导向,并且简单、易用。
<br>JSON:这是ajax流行起来后,一种轻量集的数据交换格式。参考http://www.json.org/json-zh.html
<br>YAML:在Ruby on Rails和Python这类动态语言最常用的一种文本数据格式,类似于Java最常用的XML,但更适合人读。参考:http: //wiki.nirvanastudio.org/wiki/YAML/5%B7%D6%D6%D3%C8%CF%CA%B6YAML
<br>从技术的角度考虑,所有的MIS系统,无非是CRUD增删改查,而CRUD的对象,一种载体形式,就可以是Map和List(Map的复数形式)。
<br>关于数据流的处理,可以参考《面向模式的软件架构:卷一》中的“管道模式”,异曲同工。
<br>当然,复杂的MIS就不只是数据流,更倾向于业务流,譬如ERP中的物料管理,SCM的进销存,OA中的工作流。但它们底层都需要数据流支持。
<br>
<br>3、 Map和List对象的展现技术:JSTL
<br>当然,我并没有提出什么新东西,我只是提出一种新用法。JSTL是map和list的最好展现方式。如user.department.name,通过具体对象,或是Map对象图,都可以实现。但后者很少人用,因为所有的教程上面都会演示对象模型,用map是忌讳,不OO嘛。 Really&#xff
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP