﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-dorado技术园地</title><link>http://www.blogjava.net/dorado/</link><description>与您共同讨论dorado技术及其应用技巧</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 05:54:28 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 05:54:28 GMT</pubDate><ttl>60</ttl><item><title>Dorado与Struts、Hibernate、Spring的集成开发模式</title><link>http://www.blogjava.net/dorado/archive/2005/08/29/11464.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Mon, 29 Aug 2005 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/08/29/11464.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/11464.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/08/29/11464.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/11464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/11464.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是一套成熟的</SPAN><SPAN lang=EN-US>Web</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用开发套件，</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">其中包含了一个完整的具有下一代</SPAN><SPAN lang=EN-US>Web</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用特征的表现层解决方案。本文着重介绍了如何利用</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层与目前较为流行的</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">进行协同开发。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><SPAN lang=EN-US><FONT face=Verdana><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p></FONT></SPAN></P>
<P class=MsoCaption style="MARGIN: 15.6pt 0cm 7.8pt; TEXT-ALIGN: center; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm" align=center><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><IMG height=801 alt=mvc2.gif src="http://www.blogjava.net/images/blogjava_net/dorado/mvc2.gif" width=683 border=0><BR>图表</SPAN><SPAN style="FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体"> <SPAN lang=EN-US><SPAN style="mso-field-code: ' SEQ 图表 \* ARABIC '"><SPAN style="mso-no-proof: yes">1</SPAN></SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">基于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体">MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">模式的总体框架图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">上图是利用</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层与目前较为流行的</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">进行协同开发的总体框架图。从此图中我们不难看出与传统的</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发模式的最大区别在于</SPAN><SPAN lang=EN-US>View</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">部分</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层实现。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt 36pt; TEXT-INDENT: -36pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">1．<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">发起请求</SPAN></B><SPAN lang=EN-US><SPAN style="mso-tab-count: 1"> </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">从浏览器发出请求开始</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">如图中的</SPAN><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">号箭头</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。该请求首先将被</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>ActionServlet</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">接受，然后</SPAN><SPAN lang=EN-US>ActionServlet</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">会根据用户的</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">配置确定应触发哪一个具体的</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt 36pt; TEXT-INDENT: -36pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">2．<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">调用业务逻辑</SPAN><SPAN lang=EN-US><SPAN style="mso-tab-count: 1"> </SPAN></SPAN></B><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的主要任务是调用某一个业务逻辑对象</SPAN><SPAN lang=EN-US>BO(Business Object)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">已完成相应的业务操作。由于我们在此框架考虑引入了</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，因此</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将不必直接创建具体的</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。而是通过</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">框架利用反向注入的原理</SPAN><SPAN lang=EN-US>(Ioc)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来得到</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的实例。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当中我们应当通过数据访问对象</SPAN><SPAN lang=EN-US>DAO(Data Access Object)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来实现对数据的访问操作。由于我们考虑在开发模式中引入</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。因此，此处具体使用的</SPAN><SPAN lang=EN-US>DAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">实例也应通过</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来获取。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为了更好地实现业务逻辑的面向对象化，我们还可以考虑利用</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来作为</SPAN><SPAN lang=EN-US>DAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的具体实现方式。如此便有的了上图中所展示的</SPAN><SPAN lang=EN-US>Model</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层的架构。最终在整个系统中</SPAN><SPAN lang=EN-US>DAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">成为了唯一的数据库访问途经。通常我们可以将此图中的</SPAN><SPAN lang=EN-US>DAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">统称为数据持久层。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">另外，在某些情况我们也可以考虑简化此处的持久层设计。由于</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">本身就可以作为独立的持久层实现，因此也可以将此处的</SPAN><SPAN lang=EN-US>DAO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象省去，直接在</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中利用</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">完成数据访问。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当我们的</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">完成了对</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的调用之后，我们应当将业务逻辑个直接结果存入到上下文对象</SPAN><SPAN lang=EN-US>(Context)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当中，以便于稍后的</SPAN><SPAN lang=EN-US>View</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">能够得到这些数据并用于界面的绘制和展现。在通常模式下</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的执行结果都是以</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（</SPAN><SPAN lang=EN-US>Value Object</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">）的方式返回的。</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">既可以可以独立的</SPAN><SPAN lang=EN-US>JavaBean</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">也可以是</SPAN><SPAN lang=EN-US>JavaBean</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的集合</SPAN><SPAN lang=EN-US>(Collection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">例如：</SPAN><SPAN lang=EN-US>List </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Set) </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt 36pt; TEXT-INDENT: -36pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">3．<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转发请求</SPAN><SPAN lang=EN-US><SPAN style="mso-tab-count: 1"> </SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">完成上述操作之后</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应根据</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的执行结果和用户的配置将请求转发给某个具体的</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来实现界面的展现。由于此处引入了</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层，因此</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的作用已被弱化为了单一的对视图模型</SPAN><SPAN lang=EN-US>(ViewModel)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的各种可视化对象进行布局。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">视图模型是一种用户描述视图逻辑的对象。例如我们将表格要如何显示、单击按钮后要完成什么动作、下拉框如何进行赋值等信息都归纳为视图逻辑。视图模型只负责声明和描述对象，而不负责对象具体的摆放位置。视图模型无法独立的访问</SPAN><SPAN lang=EN-US>View</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层之外的数据，视图模型只能引用在数据模块</SPAN><SPAN lang=EN-US>(Module)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中定义的数据。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据模块是</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层中专门用于访问外部数据的一种对象。例如在此处的开发模式当中我们就利用数据模块来访问</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">返回的执行结果。</SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><o:p></o:p></SPAN></B></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt 36pt; TEXT-INDENT: -36pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">4．<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">值对象</SPAN><SPAN lang=EN-US>(VO)</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的传递</SPAN><SPAN lang=EN-US><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </SPAN></SPAN></B><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">由于我们不能把数据模块的激活和</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的调用看作是一个同步的过程。因此数据模块无法直接得到</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">返回的执行结果，而只能通过上下文对象来获取</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">返回的</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。此处的上下文对象一般是指</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象的</SPAN><SPAN lang=EN-US>Attributies</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">属性集。</SPAN></FONT><SPAN lang=EN-US><BR clear=all></SPAN><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据模块在得到</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">之后需要自动将</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中包含的信息反射成</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的数据集</SPAN><SPAN lang=EN-US>(Dataset)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。由于此种数据转化在某些极端的情况是非常复杂的</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">例如</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的多级集合嵌套</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，因此我们必要定义一些描述信息来辅助</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">按照正确的方式进行数据转换。值得庆幸的是</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Studio</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可以自动生成绝大部分的描述信息。我们只需要根据实际情况的在必要的时候对这些描述信息做少量的调整就可以了。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt 36pt; TEXT-INDENT: -36pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">5．<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">反馈</SPAN><SPAN lang=EN-US><SPAN style="mso-tab-count: 1"> </SPAN></SPAN></B><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的信息被正确的转化到</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中之后，</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US>ViewModel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将按照其标准的方式运行，并最终通过</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将视图信息反馈给浏览器。此处，</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的表现层之所以需要数据模块、视图模型和</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的协同工作是为了更好的实现代码的重用。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">综上</SPAN><SPAN lang=EN-US>5</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">个步骤，我们不难看出</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">与</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这些产品进行整合的关键在步骤</SPAN><SPAN lang=EN-US>4</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，即如何将</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转换成</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。而且事实上</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对象本身完全不需要对</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的任何对象进行直接调用。这种松耦合的结合方式可以充分的保证系统架构将来的灵活性和扩展性。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">结论</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></B></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">此种开发模式与传统的开发模式比较，其最大的优势在于可以利用</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">大大的节省开发人员在开发</SPAN><SPAN lang=EN-US>Web</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用表现层式的工作量，同时又为我们的应用提供非常友好、易用的用户交互界面，将应用直接升级成新一代的富客户端网络应用</SPAN><SPAN lang=EN-US>(Rich Internet Application)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">此种开发模式与标准的</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发相比将会带来开发工作量的明显加大，不过同时在开发模式上的标准化也可以在另外一些方面为我们带来好处。例如可以系统架构具有更好的扩展性，使得将来在需要的时候引入其他框架类产品的变得相对容易。</SPAN></FONT></P>
<TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="mso-yfti-irow: 0">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 149.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" vAlign=top width=199>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN lang=EN-US><o:p><FONT face=Verdana>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>工作量</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>界面</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>扩展性</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 149.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=199>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">传统</SPAN><SPAN lang=EN-US>MVC</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（使用上述开发模式中除</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">外的所有技术）</SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>最大</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>简陋</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>好</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 149.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=199>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">引入</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">架构</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（使用本文介绍的开发模式）</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>较大</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>友好</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">富客户端</SPAN><SPAN lang=EN-US>)</SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>好</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 149.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=199>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的标准开发模式</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（不包含</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Hibernate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">、</SPAN><SPAN lang=EN-US>Spring</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">）</SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>较小</FONT></SPAN></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 81pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=108>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>友好</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face=Verdana><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">富客户端</SPAN><SPAN lang=EN-US>)</SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 108pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=144>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>较好</FONT></SPAN></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 15.6pt 0cm 7.8pt; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: .5gd; mso-para-margin-left: 0cm"><FONT face=Verdana><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">除可以帮我们改善界面之外，还可以为我们提供国际化、性能分析、权限配置等等诸多实用的功能，由此可见引入</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">作带来的好处是不言而喻的，此处不做过多累述。但是对于上表中的后两种开发方式的取舍应根据多方面的实际情况来决断。一般而言，对于规模不是特别大，参与开发的人员不多且预计系统将来升级和扩展不是很频繁的项目，我们仍推荐选用相对简单且快速的第三种方式，即直接使用</SPAN><SPAN lang=EN-US>dorado</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana>标准的开发模式。<BR></FONT></SPAN><SPAN lang=EN-US><o:p><BR><FONT face=Verdana>与了解更多详情请浏览一下网址:<BR></FONT><A href="http://61.151.239.187/doradosample/hibernate2.show.d"><FONT face=Verdana>http://61.151.239.187/doradosample/hibernate2.show.d</FONT></A><BR><A href="http://61.151.239.187/doradosample/hibernate3.show.d"><FONT face=Verdana>http://61.151.239.187/doradosample/hibernate3.show.d</FONT></A></o:p></SPAN></P><img src ="http://www.blogjava.net/dorado/aggbug/11464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-08-29 16:49 <a href="http://www.blogjava.net/dorado/archive/2005/08/29/11464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用Dorado中的JDBC事务?</title><link>http://www.blogjava.net/dorado/archive/2005/07/25/8369.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Sun, 24 Jul 2005 16:46:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/25/8369.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/8369.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/25/8369.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/8369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/8369.html</trackback:ping><description><![CDATA[<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在</SPAN><FONT face=宋体><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提供默认的提交操作中，用户可能会有其他自定义的数据更新操作，如何使他们都处于一个事务中呢？</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法一</SPAN><SPAN lang=EN-US><FONT face=宋体>: </FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用标准的</SPAN><SPAN lang=EN-US><FONT face=宋体>JDBC</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象完成数据操作</SPAN><SPAN lang=EN-US><FONT face=宋体>.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></B></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><FONT face=宋体><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提供了一个工具类，</SPAN><SPAN lang=EN-US>com.bstek.dorado.common.TransactionManager</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，该类提供一个静态方法：</SPAN></FONT><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 31.5pt; TEXT-ALIGN: left; mso-para-margin-left: 3.0gd" align=left><SPAN lang=EN-US><A title="interface in com.bstek.dorado.common" HREF="/dorado/dorado4.0.0-dev/doc/server-api/com/bstek/dorado/common/Transaction.html"><SPAN style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><FONT face=宋体 size=2></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">Transaction&nbsp;getTransaction(DoradoContext&nbsp;context)&nbsp;throws&nbsp;java.lang.Exception</SPAN></DIV></DIV>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 31.5pt; TEXT-ALIGN: left; mso-para-margin-left: 3.0gd" align=left></FONT></SPAN></A></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">获取与指定的上下文</SPAN><FONT face=宋体><SPAN lang=EN-US>(DoradoContext)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">相关的事务对象</SPAN><SPAN lang=EN-US>. <o:p></o:p></SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这样我们得到一个默认的处理事务对象，通过该事务对象提供的方法：</SPAN></FONT><SPAN lang=EN-US><FONT face=宋体><FONT size=2></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">Connection&nbsp;getConnection(java.lang.String&nbsp;dataSource)&nbsp;throws&nbsp;java.lang.Exception</SPAN></DIV></DIV>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 31.5pt; TEXT-ALIGN: left; mso-para-margin-left: 3.0gd" align=left></FONT></FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">获取一个与本事务相关的</SPAN><FONT face=宋体><SPAN lang=EN-US>Connection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，自定义的更新就通过这个</SPAN><SPAN lang=EN-US>Connection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象处理，最后系统会自动管理整个事务。</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">代码示例</SPAN><SPAN lang=EN-US><FONT face=宋体>:</FONT></SPAN></FONT><SPAN lang=EN-US><o:p><FONT face=宋体 size=2>&nbsp;</P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">Transaction&nbsp;transaction&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;TransactionManager.getTransaction(context);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>Connection&nbsp;connection&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;transaction.getConnection(</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">);<BR><IMG id=Codehighlighter1_131_159_Open_Image onclick="this.style.display='none'; Codehighlighter1_131_159_Open_Text.style.display='none'; Codehighlighter1_131_159_Closed_Image.style.display='inline'; Codehighlighter1_131_159_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_131_159_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_131_159_Closed_Text.style.display='none'; Codehighlighter1_131_159_Open_Image.style.display='inline'; Codehighlighter1_131_159_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_131_159_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_131_159_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;利用connection对象进行数据操作.</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_169_192_Open_Image onclick="this.style.display='none'; Codehighlighter1_169_192_Open_Text.style.display='none'; Codehighlighter1_169_192_Closed_Image.style.display='inline'; Codehighlighter1_169_192_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_169_192_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_169_192_Closed_Text.style.display='none'; Codehighlighter1_169_192_Open_Image.style.display='inline'; Codehighlighter1_169_192_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">finally</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_169_192_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_169_192_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;connection.close();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left></FONT></o:p></SPAN></P>
<TABLE class=dorado0 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid silver .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid silver; mso-border-insidev: .5pt solid silver" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 68.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; mso-border-alt: solid silver .5pt" vAlign=top width=91>
<P class=1 style="MARGIN: 12pt 0cm; TEXT-ALIGN: center; mso-yfti-cnfc: 4; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: 1.0gd; mso-para-margin-left: 0cm" align=center><B style="mso-bidi-font-weight: normal"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">注意</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></B></P></TD>
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 357.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; mso-border-alt: solid silver .5pt; mso-border-left-alt: solid silver .5pt" vAlign=top width=477>
<P class=1 style="MARGIN: 12pt 0cm; TEXT-ALIGN: left; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: 1.0gd; mso-para-margin-left: 0cm" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">该</SPAN><FONT face=宋体><SPAN lang=EN-US>Connection </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象，你可以执行</SPAN><SPAN lang=EN-US>close</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">操作，但是不允许执行</SPAN><SPAN lang=EN-US>commit</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或</SPAN><SPAN lang=EN-US>rollback</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">操作。因为</SPAN><SPAN lang=EN-US>commit</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或</SPAN><SPAN lang=EN-US>rollback</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">操作将在系统所有更新完成之后才允许进行</SPAN><SPAN lang=EN-US>, commit</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或</SPAN><SPAN lang=EN-US>rollback</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">操作是由</SPAN><SPAN lang=EN-US>Transaction</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象管理的。</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 12pt 0cm; TEXT-ALIGN: left; mso-para-margin-top: 1.0gd; mso-para-margin-right: 0cm; mso-para-margin-bottom: 1.0gd; mso-para-margin-left: 0cm" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">即使您在</SPAN><FONT face=宋体><SPAN lang=EN-US>Transaction</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">执行</SPAN><SPAN lang=EN-US>commit</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">之前对</SPAN><SPAN lang=EN-US>Connection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">执行了</SPAN><SPAN lang=EN-US>close</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">操作也不会影响到你在该</SPAN><SPAN lang=EN-US>Connection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">上所作得数据修改</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">您不必担心由于提前关闭了</SPAN><SPAN lang=EN-US>Connection</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而导致所作的数据修改脱离了事务</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P></TD></TR></TBODY></TABLE>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法二</SPAN><SPAN lang=EN-US><FONT face=宋体>: </FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用标准的</SPAN><SPAN lang=EN-US><FONT face=宋体>dorado</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US><FONT face=宋体>Dataset</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US><FONT face=宋体>DBStatement</FONT></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象完成数据操作</SPAN><SPAN lang=EN-US><FONT face=宋体>.<o:p></o:p></FONT></SPAN></B></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">除了使用上面的方法之外</SPAN><FONT face=宋体><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们还可以使用</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中提供的</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US>DBStatement</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象完成数据操作</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种做法优点在于</SPAN><SPAN lang=EN-US>:</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt" align=left><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=宋体>1.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可直接集成</SPAN><FONT face=宋体><SPAN lang=EN-US>Context</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的当前事务</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">代码量小</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt" align=left><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=宋体>2.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">支持命名参数</SPAN><FONT face=宋体><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用方便</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用</SPAN><FONT face=宋体><SPAN lang=EN-US>SqlDataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">添加记录的代码示例</SPAN><SPAN lang=EN-US>:<BR><BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">AutoSqlDataset&nbsp;dataset&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;AutoSqlDataset();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.setOriginTable(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">设置要操作的数据库表名</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">dataset.setKeyFields(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee_id</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">设置该表的主键(在更新或删除记录时必须设置)&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.insertRecord();&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">插入一条空记录<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;以下代码设置新记录的值</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">dataset.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee_id</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">GUOLIWEI</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee_name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">国莅伟</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.setBoolean(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sex</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.insertRecord();&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">插入另一条空记录<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;以下代码设置新记录的值</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">dataset.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee_id</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">PANLONG</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">employee_name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">盘龙</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.setBoolean(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sex</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>dataset.update(context);&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">将所做的修改更新到数据库中<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P class=1 style="MARGIN: 15.6pt 0cm 15.6pt 21pt; TEXT-ALIGN: left" align=left><BR></SPAN></FONT></FONT><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">使用</SPAN><FONT face=宋体><SPAN lang=EN-US>DBStatement</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象的代码示例</SPAN><SPAN lang=EN-US>:<BR><BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">DBStatement&nbsp;statement&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DBStatement(<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">INSERT&nbsp;INTO&nbsp;LOG&nbsp;(MSG_TIME,&nbsp;MSG)&nbsp;VALUES&nbsp;(:timestamp,&nbsp;:message)</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>ParameterSet&nbsp;parameters&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;statement.parameters();&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">添加一条记录</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">parameters.setDate(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">timestamp</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Date());<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>parameters.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">message</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">XXX&nbsp;XXX&nbsp;XXX</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>statement.execute(context);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">添加另一条记录</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">parameters.setDate(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">timestamp</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Date());<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>parameters.setString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">message</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">YYY&nbsp;YYY&nbsp;YYY</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>statement.execute(context);</SPAN></DIV></DIV></SPAN></FONT></FONT><img src ="http://www.blogjava.net/dorado/aggbug/8369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-25 00:46 <a href="http://www.blogjava.net/dorado/archive/2005/07/25/8369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dorado的总体技术架构</title><link>http://www.blogjava.net/dorado/archive/2005/07/25/8367.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Sun, 24 Jul 2005 16:36:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/25/8367.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/8367.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/25/8367.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/8367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/8367.html</trackback:ping><description><![CDATA[<P align=center><FONT size=2><IMG height=741 alt=architecture.jpg src="http://www.blogjava.net/images/blogjava_net/dorado/architecture.jpg" width=607 border=0></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><BR><BR><FONT size=2>以下的说明基于利用</FONT></SPAN><FONT size=2><SPAN lang=EN-US><FONT face=Verdana>Dorado</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US><FONT face=Verdana>MVC</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">框架的基本开发方式</SPAN><SPAN lang=EN-US><FONT face=Verdana>:</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>1.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=Verdana>Request(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">请求</SPAN><SPAN lang=EN-US><FONT face=Verdana>)</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">：</SPAN><FONT face=Verdana> </FONT><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当</SPAN><SPAN lang=EN-US><FONT face=Verdana>Client</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端</SPAN><SPAN lang=EN-US><FONT face=Verdana>(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">浏览器</SPAN><SPAN lang=EN-US><FONT face=Verdana>)</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">发起请求时</SPAN><SPAN lang=EN-US><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">改请求将首先被</SPAN><SPAN lang=EN-US><FONT face=Verdana>Dorado</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的控制层</SPAN><SPAN lang=EN-US><FONT face=Verdana>(Mapping)</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">接受</SPAN><SPAN lang=EN-US><FONT face=Verdana>.</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>2.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=Verdana>Dispatch(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">分发</SPAN><SPAN lang=EN-US><FONT face=Verdana>): </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">控制层会跟据用户的配置决定激活哪一个</SPAN><SPAN lang=EN-US><FONT face=Verdana>Action. </FONT></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>3.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=Verdana>Forward(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转向</SPAN><SPAN lang=EN-US><FONT face=Verdana>): </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">商业逻辑执行完成后</SPAN><SPAN lang=EN-US><FONT face=Verdana>Action</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将根据商业逻辑的执行结果将</SPAN><SPAN lang=EN-US><FONT face=Verdana>Request</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转向给具体的视图</SPAN><SPAN lang=EN-US><FONT face=Verdana>(ViewModel). </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">具体的转向方式由</SPAN><SPAN lang=EN-US><FONT face=Verdana>Action</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的用户配置信息决定</SPAN><SPAN lang=EN-US><FONT face=Verdana>.</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>4.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=Verdana>Extract(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提取</SPAN><SPAN lang=EN-US><FONT face=Verdana>): </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">视图</SPAN><SPAN lang=EN-US><FONT face=Verdana>(ViewModel)</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">被激活后会通过其中的</SPAN><SPAN lang=EN-US><FONT face=Verdana>Dataset</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象到</SPAN><SPAN lang=EN-US><FONT face=Verdana>Module</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中提取业务数据</SPAN><SPAN lang=EN-US><FONT face=Verdana>. </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">同时视图也会根据配置信息自动创建各种可视化的控件用于展现提取到的业务数据</SPAN><SPAN lang=EN-US><FONT face=Verdana>.</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>5.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=Verdana>Response(</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">反馈</SPAN><SPAN lang=EN-US><FONT face=Verdana>): </FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">视图的</SPAN><SPAN lang=EN-US><FONT face=Verdana>Server</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端准备工作完成后会自动将各种信息输出到</SPAN><SPAN lang=EN-US><FONT face=Verdana>Response</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象中反馈给</SPAN><SPAN lang=EN-US><FONT face=Verdana>Client</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端</SPAN><SPAN lang=EN-US><FONT face=Verdana>.</FONT></SPAN></FONT></P>
<P align=center>
<TABLE class=dorado style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid silver .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid silver; mso-border-insidev: .5pt solid silver" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 34.05pt; mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 59.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 34.05pt; mso-border-alt: solid silver .5pt" vAlign=top width=79>
<P class=a style="MARGIN: 12pt 0cm; TEXT-ALIGN: center; mso-yfti-cnfc: 4" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><STRONG><FONT size=2>注意</FONT></STRONG></SPAN></P></TD>
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 366.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 34.05pt; mso-border-alt: solid silver .5pt; mso-border-left-alt: solid silver .5pt" vAlign=top width=489>
<P class=a style="MARGIN: 12pt 0cm"><FONT size=2><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">上图中以虚线标出了</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>MVC</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">架构与传统</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>MVC</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的不同点</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种不同主要是由</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">强大的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Client</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">带来的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></FONT></P>
<P class=a style="MARGIN: 12pt 0cm 12pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-WEIGHT: normal; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>1.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">由于</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Client</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">不再以传统的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>HTML FORM</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">作为与</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Server</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">交互的途径</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而是以</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>XML</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">替代</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. XML</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">所能构承载的信息量和复杂度远远高于</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>HTML FORM. </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">所以在</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发模式中往往不在</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Action</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中直接调用业务逻辑</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而是等到</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>ViewModel</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Module</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将这些</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>XML</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">解析成对象后再调用业务逻辑</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>.<o:p></o:p></FONT></SPAN></FONT></P>
<P class=a style="MARGIN: 12pt 0cm 12pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt"><FONT size=2><SPAN lang=EN-US style="FONT-WEIGHT: normal; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore"><FONT face=Verdana>2.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Client</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中除了有普通的类似</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>FORM</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提交的操作之外</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">还存在着一种数据请求操作</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">例如在不刷新页面的情况下下载数据集的分页信息、远程方法调用等</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种请求与普通的提交的操作的处理方式有着很大的不同</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">也同样难以通过</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>Action</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">进行统一的处理</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>. </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而且利用</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>MVC</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">开发方式却可以很好解决这一问题</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>.<o:p></o:p></FONT></SPAN></FONT></P>
<P class=a style="MARGIN: 12pt 0cm"><FONT size=2><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">以上变化</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">经过锐道公司</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>extra</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>dorado</FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">两代产品的数十家不同类型、层次的开发的实践证明是完全可行</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>, </FONT></SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">且对系统的扩展性、复用性、安全性完全无害的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><FONT face=Verdana>.<o:p></o:p></FONT></SPAN></FONT></P></TD></TR></TBODY></TABLE></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt" align=center><SPAN lang=EN-US><o:p><FONT face=Verdana><FONT size=2>
<HR>
&nbsp;<BR>
<P align=center><IMG height=834 alt=model.jpg src="http://www.blogjava.net/images/blogjava_net/dorado/model.jpg" width=532 border=0></P><BR><BR></FONT>
<P></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">上图解释了数据如何通过各个功能层从数据库中转换到可是化控件中的过程</SPAN><SPAN lang=EN-US>.<o:p></o:p></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>ViewMode</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">用于定义一个视图的模型，包括数据模型（</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">）和可视化组件（</SPAN><SPAN lang=EN-US>Control</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">）的模型。</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是一种用于为</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">服务的二维数据表。</SPAN><SPAN lang=EN-US>Control</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可以绑定到</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，用于展示和操作</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中管理的数据。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>DatasetRefrence</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是一种对</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的引用，用于使用</SPAN><SPAN lang=EN-US>ViewModel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">之外的其它的</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的数据。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">3.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">一般用于描述一组相关的商业逻辑或作为后台的商业逻辑的前端（商业逻辑前端也称为：</SPAN><SPAN lang=EN-US>BusinessDelegate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">）。</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可通过</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的事件来将</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中数据的操作翻译成真正的业务逻辑操作。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">4.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在默认模式下，用户可通过</SPAN><SPAN lang=EN-US>SQL</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">进行数据库操作，此时用户可利用</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的</SPAN><SPAN lang=EN-US>Dataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象直接对数据库进行操作。</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt" align=center><FONT size=2></FONT></P></FONT></o:p></SPAN><img src ="http://www.blogjava.net/dorado/aggbug/8367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-25 00:36 <a href="http://www.blogjava.net/dorado/archive/2005/07/25/8367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dorado是什么?</title><link>http://www.blogjava.net/dorado/archive/2005/07/25/8366.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Sun, 24 Jul 2005 16:36:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/25/8366.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/8366.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/25/8366.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/8366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/8366.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>首先介绍一下什么是dorado吧! 详细情况也可以到<A href="http://www.bstek.com/">http://www.bstek.com</A>看个究竟<BR>dorado全称"Dorado Web应用开发套件"<BR><BR></P>
<P align=center><IMG height=467 alt=product.jpg src="http://www.blogjava.net/images/blogjava_net/dorado/product.jpg" width=624 border=0></P>
<P><BR><BR></P></FONT><FONT size=2><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore"><FONT size=3>
<P class=2 style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>l</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US><FONT size=2>Dorado Web UI</FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体">控件集及</SPAN><SPAN lang=EN-US>UI</SPAN><SPAN style="FONT-FAMILY: 宋体">引擎（</SPAN><SPAN lang=EN-US>Dorado Web UI Components and UI Engine</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>）</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>包含各种常用的界面控件，如</FONT></SPAN><FONT size=2><SPAN lang=EN-US>:</SPAN><SPAN style="FONT-FAMILY: 宋体">可编辑的表格、树、下拉框等</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">可轻松构造出令人耳目一新的，具有</SPAN><SPAN lang=EN-US>RIA(Rich Internet Application) </SPAN><SPAN style="FONT-FAMILY: 宋体">特征的</SPAN><SPAN lang=EN-US>Web</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>应用界面。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>无需下载安装任何浏览器插件</FONT></SPAN><FONT size=2><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">即能实现类似</SPAN><SPAN lang=EN-US>C/S</SPAN><SPAN style="FONT-FAMILY: 宋体">应用的界面风格和操作习惯，根除</SPAN><SPAN lang=EN-US>B/S</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>应用难以满足用户体验的顽症。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>可扩展的</FONT></SPAN><FONT size=2><SPAN lang=EN-US>UI</SPAN><SPAN style="FONT-FAMILY: 宋体">数据层</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">可快速地与各种第三方的开发框架或应用整合</SPAN></FONT><SPAN lang=EN-US><FONT size=2>.</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>独树一帜的</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体">端</SPAN><SPAN lang=EN-US> / Server</SPAN><SPAN style="FONT-FAMILY: 宋体">端事件编程机制</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">充分保证</SPAN><SPAN lang=EN-US>Web</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>界面的扩展性和灵活性。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>利用</FONT></SPAN><FONT size=2><SPAN lang=EN-US>XMLHttp</SPAN><SPAN style="FONT-FAMILY: 宋体">技术实现数据交互</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">可大大降低</SPAN><SPAN lang=EN-US>Web</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>页面的刷新频率。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>支持皮肤切换。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>l</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US><FONT size=2>Dorado</FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体">可视化集成开发工具</SPAN> <SPAN style="FONT-FAMILY: 宋体">（</SPAN><SPAN lang=EN-US>Dorado Studio</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>）</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>全面支持基于</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体">套件开发的各个环节的可视化配置、管理</SPAN><SPAN lang=EN-US>. </SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>如界面设计、可视化数据连接配置、可视化数据层定义、可视化控制层配置、国际化资源配置等。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>对</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Web</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>应用以项目方式管理，同时可以完成对项目的编译、部署、测试的全过程。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>提供多种向导帮助用户快速上手。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>支持</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Java</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>JavaScript</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>HTML</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>SQL</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>的高亮编辑。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>支持对数据视图进行预览同时提供可视化的</FONT></SPAN><FONT size=2><SPAN lang=EN-US>SQL</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>的查询向导。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>l</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US><FONT size=2>Dorado MVC</FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体">开发框架</SPAN> <SPAN style="FONT-FAMILY: 宋体">（</SPAN><SPAN lang=EN-US>Dorado MVC Framework</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>）</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>提供类似</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体">的</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体">开发框架</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">以便于更加方便地利用</SPAN><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体">套件进行基于</SPAN><SPAN lang=EN-US>MVC</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>架构的开发。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>提供性能监控控制台</FONT></SPAN><FONT size=2><SPAN lang=EN-US>, </SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>可方便的对系统运行过程中各功能点的运行效率进行统计和分析。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>支持国际化资源配置。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>支持模块化配置。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US><FONT size=2>&nbsp;(</FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体">注</SPAN><SPAN lang=EN-US>: Dorado MVC</SPAN><SPAN style="FONT-FAMILY: 宋体">开发框架是一个可选件。</SPAN><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体">套件完全支持其它的各种第三方开发框架</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">如</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US>WebWork</SPAN><SPAN style="FONT-FAMILY: 宋体">等</SPAN></FONT><SPAN lang=EN-US><FONT size=2>)</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 42pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>l</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN lang=EN-US><FONT size=2>Dorado Web</FONT></SPAN><FONT size=2><SPAN style="FONT-FAMILY: 宋体">应用框架</SPAN> <SPAN style="FONT-FAMILY: 宋体">（</SPAN><SPAN lang=EN-US>Dorado Web Application Framework</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>）</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>可方便对</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Web</SPAN><SPAN style="FONT-FAMILY: 宋体">应用的登录状态进行管理</SPAN><SPAN lang=EN-US>. </SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>快速实现整个应用的登录状态校验功能。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>基于角色的</FONT></SPAN><FONT size=2><SPAN lang=EN-US>Web</SPAN><SPAN style="FONT-FAMILY: 宋体">界面配置</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体">可方便的支持为不同角色的用户提供有区别的</SPAN><SPAN lang=EN-US>Web</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>界面。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>提供一套完整的支持角色、权限组的权限的实现</FONT></SPAN><FONT size=2><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体">包括默认数据库结构、相应的实现代码、维护界面。同时也可以通过扩展支持用户数据库结构</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体">暂未提供</SPAN><SPAN lang=EN-US>)</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>。</FONT></SPAN></FONT></P>
<P class=2 style="MARGIN-LEFT: 63pt; TEXT-INDENT: -21pt"><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings"><FONT size=2>n</FONT><SPAN style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>提供一套登录画面、主页面等的模版和相应后台管理界面</FONT></SPAN><FONT size=2><SPAN lang=EN-US>. (</SPAN><SPAN style="FONT-FAMILY: 宋体">暂未提供</SPAN><SPAN lang=EN-US>)</SPAN></FONT><SPAN style="FONT-FAMILY: 宋体"><FONT size=2>。</FONT></SPAN></FONT></P></FONT></SPAN></SPAN></FONT><img src ="http://www.blogjava.net/dorado/aggbug/8366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-25 00:36 <a href="http://www.blogjava.net/dorado/archive/2005/07/25/8366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用传统MVC的企业应当如何导入dorado? </title><link>http://www.blogjava.net/dorado/archive/2005/07/19/8005.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Tue, 19 Jul 2005 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/19/8005.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/8005.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/19/8005.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/8005.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/8005.html</trackback:ping><description><![CDATA[<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana size=2>要了解dorado的详情请浏览</FONT><A href="http://www.bstek.com/"><FONT face=Verdana size=2>http://www.bstek.com</FONT></A><FONT face=Verdana size=2> <BR><BR>在<A href="http://www.blogjava.net/dorado/archive/2005/07/25/8367.html">http://www.blogjava.net/dorado/archive/2005/07/25/8367.html</A></FONT><FONT face=Verdana size=2>中我们已经了解到</FONT></SPAN><FONT size=2><FONT face=Verdana><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发模式与传统的基于</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的企业应用开发模式之间存在着一些差异</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可能看到这里您已经产生了一大堆的问题</SPAN><SPAN lang=EN-US>:</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为什么一定要有这样的差异存在</SPAN><SPAN lang=EN-US>?</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种差异将在多大的程度上影响我们企业原有的系统或开发框架</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">开发规范</SPAN><SPAN lang=EN-US>)?</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种差异将在多大的程度上影响程序员原有的编程习惯</SPAN><SPAN lang=EN-US>?</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发方式是否拥有足够的健壮性、足够的扩展性</SPAN><SPAN lang=EN-US>?</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为了深入的解答上述这些问题</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们首先来了解一下传统的</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">开发模式</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">如下图</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">此处的</SPAN><SPAN lang=EN-US>Control</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">以目前最为流行的</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为例</SPAN></FONT></FONT><SPAN lang=EN-US><FONT face=Verdana size=2>):<BR></FONT></SPAN></P>
<P class=a style="MARGIN: 15.6pt 0cm"><SPAN lang=EN-US><FONT size=2><FONT face=Verdana><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoCaption style="MARGIN: 15.6pt 0cm" align=center><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><IMG height=695 alt=mvc.gif src="http://www.blogjava.net/images/blogjava_net/dorado/mvc.gif" width=607 border=0><BR></SPAN>图表</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">传统的基于</SPAN><SPAN lang=EN-US>MVC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">架构开发模式</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo2; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Request(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">请求</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">：</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端</SPAN><SPAN lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">浏览器</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">发起请求时</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">改请求将首先被控制层</SPAN><SPAN lang=EN-US>(Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Action)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">接受</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo2; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Dispatch(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">分发</SPAN><SPAN lang=EN-US>): Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将调用具体的</SPAN><SPAN lang=EN-US>Model</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象来完成实际的业务逻辑操作</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后将执行结果存贮于</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Attributies</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中</SPAN><SPAN lang=EN-US>. (</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">一般惯例是这样的</SPAN><SPAN lang=EN-US>)</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo2; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">3.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Forward(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转向</SPAN><SPAN lang=EN-US>): </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">商业逻辑执行完成后</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将根据商业逻辑的执行结果将</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">转向给具体的视图</SPAN><SPAN lang=EN-US>(JSP).</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo2; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">4.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Extract(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提取</SPAN><SPAN lang=EN-US>): </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">一般而言</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">不会去直接访问</SPAN><SPAN lang=EN-US>Model</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而是直接到</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Attributies</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中提取已经在第</SPAN><SPAN lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">歩存放好的业务数据</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo2; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">5.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US>Response(</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">反馈</SPAN><SPAN lang=EN-US>): </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">视图的</SPAN><SPAN lang=EN-US>Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端准备工作完成后会自动将各种信息输出到</SPAN><SPAN lang=EN-US>Response</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象中反馈给</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">从上面的分析我们不难看到在这种开发模式中</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">业务逻辑主要都是在</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中完成调用的</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后通过</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Attributies</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">作为上下文对象在</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US>JSP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">之间传递信息</SPAN><SPAN lang=EN-US>. </SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">那么基于</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的开发是否也可以按照这种方式来操作呢</SPAN><SPAN lang=EN-US>? </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">答案是可以</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">但是</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中某些高级功能会受到一些影响</SPAN><SPAN lang=EN-US>. </SPAN></FONT></FONT></P><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">因为在传统的</SPAN><SPAN lang=EN-US>B/S</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用中</SPAN><SPAN lang=EN-US>, Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">与</SPAN><SPAN lang=EN-US>Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端的交互完全是通过</SPAN><SPAN lang=EN-US>HTML FORM</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来完成</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而且每次执行完一个业务逻辑操作之后往往会刷新整个</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">页面</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">即连同操作结果和</SPAN><SPAN lang=EN-US>HTML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">一起下载并重新装载整个</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">页面</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可是在</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中我们可以实现很多类似页面局部刷新、数据分批下载、远程方法调用、复杂数据对象的整体提交这样的功能</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这些功能的实现不能完全依赖于传统的</SPAN><SPAN lang=EN-US>HTML FORM</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的提交来完成</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而是需要依靠浏览器的</SPAN><SPAN lang=EN-US>XMLHTTP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">技术</SPAN><SPAN lang=EN-US>. <BR></SPAN></FONT></FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><BR>
<TABLE class=dorado style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid silver .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid silver; mso-border-insidev: .5pt solid silver" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 26.85pt; mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 59.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 26.85pt; mso-border-alt: solid silver .5pt" vAlign=top width=79>
<P class=a style="MARGIN: 12pt 0cm; TEXT-ALIGN: center; mso-yfti-cnfc: 4" align=center><STRONG><FONT face=Verdana><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提示</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></FONT></FONT></STRONG></P></TD>
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 366.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 26.85pt; mso-border-alt: solid silver .5pt; mso-border-left-alt: solid silver .5pt" vAlign=top width=489>
<P class=a style="MARGIN: 12pt 0cm"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><FONT face=Verdana size=2>上面提到的dorado中的页面局部刷新、数据分批下载、远程方法调用、复杂数据对象的整体提交等功能您可以通过dorado的SampleCenter中的下面一个例子来体验.</FONT></SPAN></P>
<UL>
<LI>
<DIV class=a style="MARGIN: 12pt 0cm"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><A href="http://61.151.239.187:8080/doradosample/dataset/custom-update1.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/dataset/custom-update1.jsp</FONT></A><FONT face=Verdana size=2> 可展示页面局部刷新、远程方法调用<BR></FONT></SPAN></DIV>
<LI>
<DIV class=a style="MARGIN: 12pt 0cm"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><A href="http://61.151.239.187:8080/doradosample/dataset/master-detail2.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/dataset/master-detail2.jsp</FONT></A><FONT face=Verdana size=2> 、</FONT><A href="http://61.151.239.187:8080/doradosample/integration/hibernate1.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/integration/hibernate1.jsp</FONT></A><FONT face=Verdana size=2> 可展示复杂数据对象的整体提交<BR></FONT></SPAN></DIV>
<LI>
<DIV class=a style="MARGIN: 12pt 0cm"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><A href="http://61.151.239.187:8080/doradosample/dropdown/all-dropdown.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/dropdown/all-dropdown.jsp</FONT></A><FONT face=Verdana size=2> 可展示页面局部刷新<BR></FONT></SPAN></DIV>
<LI>
<DIV class=a style="MARGIN: 12pt 0cm"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><A href="http://61.151.239.187:8080/doradosample/tree/dynamic-load-tree1.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/tree/dynamic-load-tree1.jsp</FONT></A><FONT face=Verdana size=2>、</FONT><A href="http://61.151.239.187:8080/doradosample/pilot/customize-pilot1.jsp"><FONT face=Verdana size=2>http://61.151.239.187:8080/doradosample/pilot/customize-pilot1.jsp</FONT></A><FONT face=Verdana size=2>&nbsp; 可展示数据分批下载</FONT></SPAN></DIV></LI></UL>
<P class=a style="MARGIN: 12pt 0cm 12pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"></SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal"><o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE><BR><BR>综上</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对于</SPAN><SPAN lang=EN-US>Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端的程序而言传统的</SPAN><SPAN lang=EN-US>B/S</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用和</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用最大的差别就在于此</SPAN><SPAN lang=EN-US>. </SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在传统的</SPAN><SPAN lang=EN-US>B/S</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用中</SPAN><SPAN lang=EN-US>Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端的程序只需要处理一种</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">请求</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">即执行逻辑然后返回视图</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">且要处理的</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">请求的参数类型都是类同的</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 42pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><FONT size=2><FONT face=Verdana><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用中</SPAN><SPAN lang=EN-US>Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">端的程序需要处理至少两种</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">请求</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">其中一种是简单的类似传统</SPAN><SPAN lang=EN-US>B/S</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用的请求</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">另一种是</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">独具的用于处理类似数据分批下载和复杂数据提交的请求</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这一类请求都是通过</SPAN><SPAN lang=EN-US>XMLHTTP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">技术提交的</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">其参数信息都包含在一段</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">且这一类请求的反馈结果必须同样是</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">格式的</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">其中只包含数据和执行结果</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">不能包含</SPAN><SPAN lang=EN-US>HTML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">信息</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT face=Verdana><FONT size=2><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这样一来我们便很难将所有的请求的处理代码一概放到</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中完成</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">因为对于</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">应用</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">其中的部分请求的参数是相对比较复杂的</SPAN><SPAN lang=EN-US>XML. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">所以为了避免自己手工的去解析和组装</SPAN><SPAN lang=EN-US>XML, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们应当把这种请求的业务逻辑调用放到</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或着</SPAN><SPAN lang=EN-US>ViewModel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">让</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来帮我们完成繁琐的</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">信息处理</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们只要直接使用通过解析获得的</SPAN><SPAN lang=EN-US>Java</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象型的数据就可以了</SPAN></FONT></FONT><SPAN lang=EN-US><FONT face=Verdana size=2>.<BR><BR>那么这种方式是否意味着原本集中在Action中的业务逻辑调用被分散到了几个不同的环节, 造成系统中业务逻辑的分散而不易管理呢? 应该说只要我们对系统稍作调整就可以避免这个问题的出现了 – 我们需要引入业务代表层(BO Delegate). <BR></FONT></SPAN></SPAN></P>
<P class=a style="MARGIN: 15.6pt 0cm"><SPAN lang=EN-US><o:p><FONT face=Verdana size=2></FONT></o:p></SPAN></P>
<P align=center><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><IMG height=324 alt=struts-action.gif src="http://www.blogjava.net/images/blogjava_net/dorado/struts-action.gif" width=192 border=0><BR>图表</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">原有的系统调用</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的模式</SPAN> </FONT></FONT></P>
<P></P><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">如上图所示</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在原有的系统中我们一般首先会在</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中将</SPAN><SPAN lang=EN-US>Request</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中附带的</SPAN><SPAN lang=EN-US>Parameter</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">等信息提供给</SPAN><SPAN lang=EN-US>BO Delegate, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">由</SPAN><SPAN lang=EN-US>BO Delegate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将其组装成一个或几个</SPAN><SPAN lang=EN-US>VO(Value Object)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或者直接使用</SPAN><SPAN lang=EN-US>Struts</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提供的</SPAN><SPAN lang=EN-US>FormBean</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象作为</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后再利用这些</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象去调用自己的业务逻辑对象</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对于</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而言</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">他的前端介面就是</SPAN><SPAN lang=EN-US>VO.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt">
<TABLE class=dorado style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid silver .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid silver; mso-border-insidev: .5pt solid silver" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="HEIGHT: 26.85pt; mso-yfti-irow: 0; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 59.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 26.85pt; mso-border-alt: solid silver .5pt" vAlign=top width=79>
<P class=a style="MARGIN: 12pt 0cm; TEXT-ALIGN: center; mso-yfti-cnfc: 4" align=center><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><STRONG><FONT face=Verdana size=2>注意</FONT></STRONG></SPAN></P></TD>
<TD style="BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: silver 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: white; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 366.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; HEIGHT: 26.85pt; mso-border-alt: solid silver .5pt; mso-border-left-alt: solid silver .5pt" vAlign=top width=489>
<P class=a style="MARGIN: 12pt 0cm"><FONT size=2><FONT face=Verdana><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">在您的系统有可能并没有明确的定义</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">BO Delegate</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这种对象</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">, </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可它事实上往往是存在的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">. </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">除非您的系统中直接将</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">Request</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象传进了</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">BO</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">. </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">如果是这样的话</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">, </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们认为你的系统原本也属于应进行重构的范畴</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">. </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">因为这样的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">BO</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层与</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">Request</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">进行了不必要的耦合</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">, </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">大大降低了系统的可扩展性</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">. </SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">且这样的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">BO</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是无法支持单元测试</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">(</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">测试驱动开发的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">)</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: normal">.<o:p></o:p></SPAN></FONT></FONT></P></TD></TR></TBODY></TABLE><FONT size=3><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><BR><FONT size=2>对于dorado应用而言BO仍可以以完全相同的VO作为其前端介面, 只是我们需要另外一种或几种BO Delegate负责将不同的外部数据构造成统一的VO对象.</FONT>&nbsp;</SPAN></FONT></SPAN></P>
<P class=a style="MARGIN: 15.6pt 0cm"><SPAN lang=EN-US><o:p></o:p></SPAN></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt" align=center><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><IMG height=456 alt=dorado-action.gif src="http://www.blogjava.net/images/blogjava_net/dorado/dorado-action.gif" width=343 border=0><BR>图表</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">改造后系统调用</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的模式</SPAN></FONT></FONT></P><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">如上图所示</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">当</SPAN><SPAN lang=EN-US>Action</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">接到</SPAN><SPAN lang=EN-US>XMLHTTP</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">发送的请求时会将处理转交给</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的</SPAN><SPAN lang=EN-US>Module</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">或</SPAN><SPAN lang=EN-US>ViewModel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象来处理</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">由他们首先来完成对</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">提交信息的解析</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而后再利用</SPAN><SPAN lang=EN-US>BO Delegate</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">将这些信息组装成</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">所需要的</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这样</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">我们事实上几乎不需要对</SPAN><SPAN lang=EN-US>BO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层做什么改动就可以将</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">导入到系统中了</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而且很明显这样的调整是不会影响到整个系统的扩展性的</SPAN><SPAN lang=EN-US>.</SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"><FONT size=2><FONT face=Verdana><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">从另外一个简单的角度来看这个问题</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">事实上就是在新的系统架构中我们保留整个</SPAN><SPAN lang=EN-US>Model</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层的设计</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">用</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">来替换原先的</SPAN><SPAN lang=EN-US>View</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后在</SPAN><SPAN lang=EN-US>Model</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层和</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的</SPAN><SPAN lang=EN-US>View</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">层直接通过一组特别定义的交互接口来实现对接</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对接时使用</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">作为数据交换对象</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">同时</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">又特别提供了</SPAN><SPAN lang=EN-US>DODataset</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</SPAN><SPAN lang=EN-US>DOUtils</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">等对象和工具类可以辅助我们更加方便的构造和溶解各种类型的</SPAN><SPAN lang=EN-US>VO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对象</SPAN><SPAN lang=EN-US>. </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">因此你大可不必为整合</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">而大伤脑筋</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">尽管他需要我们适当的调整原有的开发习惯</SPAN><SPAN lang=EN-US>, </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">但是</SPAN><SPAN lang=EN-US>dorado</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">带给我们的其它好处是显而易见的</SPAN><SPAN lang=EN-US>.<o:p></o:p></SPAN></FONT></FONT></P>
<P class=2 style="MARGIN: 15.6pt 0cm 15.6pt 21pt"></SPAN><SPAN lang=EN-US><o:p><FONT face=Verdana size=2>&nbsp;</FONT></o:p></SPAN></P><img src ="http://www.blogjava.net/dorado/aggbug/8005.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-19 17:13 <a href="http://www.blogjava.net/dorado/archive/2005/07/19/8005.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用dorado mapping快速开发文件的上传和下载</title><link>http://www.blogjava.net/dorado/archive/2005/07/14/7735.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Thu, 14 Jul 2005 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/14/7735.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/7735.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/14/7735.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/7735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/7735.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了如何利用dorado提供的FileController实现文件的上传及下载. FileController是dorado mapping中的一个抽象类. 通过对FileController的继承, 我们可以很容易的实现一组文件的上传及下载的功能.1. 在dorado studio的Mapping中新建一个Controller. 例如:&lt;controller&nbsp;nam...&nbsp;&nbsp;<a href='http://www.blogjava.net/dorado/archive/2005/07/14/7735.html'>阅读全文</a><img src ="http://www.blogjava.net/dorado/aggbug/7735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-14 23:27 <a href="http://www.blogjava.net/dorado/archive/2005/07/14/7735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些dorado studio的截图</title><link>http://www.blogjava.net/dorado/archive/2005/07/14/7734.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Thu, 14 Jul 2005 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/14/7734.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/7734.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/14/7734.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/7734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/7734.html</trackback:ping><description><![CDATA[<P><IMG height=687 alt=studio01.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio01.gif" width=942 border=0><BR><BR>
<HR>
<BR><IMG height=687 alt=studio02.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio02.gif" width=942 border=0><BR><BR>
<HR>

<P></P>
<P><IMG height=687 alt=studio03.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio03.gif" width=942 border=0><BR><BR>
<HR>

<P></P>
<P><IMG height=687 alt=studio04.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio04.gif" width=942 border=0><BR><BR>
<HR>

<P></P>
<P><IMG height=687 alt=studio05.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio05.gif" width=942 border=0><BR><BR>
<HR>

<P></P>
<P><IMG height=687 alt=studio06.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio06.gif" width=942 border=0><BR><BR>
<HR>
<BR><IMG height=687 alt=studio07.gif src="http://www.blogjava.net/images/blogjava_net/dorado/studio07.gif" width=942 border=0><img src ="http://www.blogjava.net/dorado/aggbug/7734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-14 23:03 <a href="http://www.blogjava.net/dorado/archive/2005/07/14/7734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dorado技术园地开园啦!</title><link>http://www.blogjava.net/dorado/archive/2005/07/14/7727.html</link><dc:creator>dorado技术园地</dc:creator><author>dorado技术园地</author><pubDate>Thu, 14 Jul 2005 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/dorado/archive/2005/07/14/7727.html</guid><wfw:comment>http://www.blogjava.net/dorado/comments/7727.html</wfw:comment><comments>http://www.blogjava.net/dorado/archive/2005/07/14/7727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dorado/comments/commentRss/7727.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorado/services/trackbacks/7727.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>首先介绍一下什么是dorado吧! <BR><A href="http://www.blogjava.net/dorado/articles/7728.html">http://www.blogjava.net/dorado/articles/7728.html</A><BR><A href="http://www.blogjava.net/dorado/articles/7733.html">http://www.blogjava.net/dorado/articles/7733.html</A><A href="http://www.blogjava.net/bennybao/articles/7714.html"><BR></A><BR>详细情况您也可以到dorado真正的家<A href="http://www.bstek.com/">http://www.bstek.com</A>看看.<BR><A href="http://www.blogjava.net/bennybao/articles/7714.html"><BR></A><IMG height=300 alt=splash.jpg src="http://www.blogjava.net/images/blogjava_net/dorado/splash.jpg" width=500 border=0></P></FONT><img src ="http://www.blogjava.net/dorado/aggbug/7727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorado/" target="_blank">dorado技术园地</a> 2005-07-14 21:57 <a href="http://www.blogjava.net/dorado/archive/2005/07/14/7727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>