📄 j-scea-3-4.html
字号:
<tr>
<td class="hbg" height="21" width="160"></td><td class="bbg" valign="top" height="21" colspan="2"> <a href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/" class="mainlink">IBM 主页</a><span class="divider"> | </span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/products/index.shtml" class="mainlink">产品与服务</a><span class="divider"> | </span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/support/index.shtml" class="mainlink">支持与下载</a><span class="divider"> | </span><a href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/account/index.shtml" class="mainlink">个性化服务</a></td>
</tr>
</table>
<TABLE width="100%" cellspacing="0" cellpadding="0" border="0">
<TR>
<TD bgcolor="#ffffff" height="1" width="150"><IMG alt="" src="../i/c.gif" width="150" height="1"></TD>
</TR>
<TR>
<TD bgcolor="#cc6633" height="3" width="150"><IMG alt="" src="../i/c.gif" width="150" height="3"></TD>
</TR>
<TR>
<TD bgcolor="#333333" height="1" width="150"><IMG alt="" src="../i/c.gif" width="150" height="1"></TD>
</TR>
<TR>
<TD bgcolor="#000000" height="1" width="150"><IMG alt="" src="../i/c.gif" width="150" height="1"></TD>
</TR>
<TR>
<TD bgcolor="#ffffff" height="1" width="150"><IMG alt="" src="../i/c.gif" width="150" height="2"></TD>
</TR>
</TABLE>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><font face="Verdana, sans-serif" size="-1"><a href="/developerWorks/cn/index.shtml">developerWorks 中国网站</a> : <a href="/developerWorks/cn/java/index.shtml">Java</a> : <a href="/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle">教学 - 在线教程</a></font>
<br>
<img alt="Java 认证成功之路,第 4 部分:SCEA" src="imagemaster/masthead.jpg"></td><td width="*" valign="bottom" align="right"><a border="0" href="j-scea.zip"><img alt="下载 ZIP 文件" border="0" src="../i/icon-zip.gif"></a><a target="_blank" href="../tutorial_eng/index.html" border="0"><img alt="英文原文" border="0" src="../i/icon-source.gif"></a>
</td>
</tr>
<tr>
<td height="2" colspan="2"><img alt="" height="2" width="1" src="../i/c.gif"></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="topmain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index3.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="topsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="j-scea-14-1.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="topfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img alt="" src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="j-scea-3-3.html"><img alt="上页" border="0" src="../i/previous.gif" name="topprevious"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="j-scea-3-5.html"><img alt="下页" border="0" src="../i/next.gif" name="topnext"></a></TD>
</TR>
</TABLE>
<table bgcolor="ffffff" cellspacing="0" cellpadding="2" border="0" height="400" width="100%">
<tr valign="bottom">
<a name="navskip"></a><td height="25" colspan="4"><img alt="3.通用架构(Common architectures)" src="imagemaster/titlebar3.jpg" border="0" height="25" width="562"></td>
</tr>
<tr>
<td bgcolor="ffffff" width="15"> </td><td bgcolor="ffffff" width="12"> </td><td valign="top" align="left" bgcolor="ffffff" width="*">
<p>
<br>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="90%"><font size="4" face="Verdana, Arial, Helvetica"><b>架构层</b></font></td><td width="200" align="right"><font size="1" face="Verdana, Arial, Helvetica"><nobr> 第 4 页(共6 页)</nobr></font></td>
</tr>
</table>
<br>
<br>
</p>
<font size="2" face="Verdana, Arial, Helvetica">
<p>任何应用程序完成的工作都可分为四种基本功能:
<ul>
<li>数据存储</li>
<li>数据访问逻辑</li>
<li>应用程序逻辑</li>
<li>表示逻辑</li>
</ul>
</p>
<p>这些功能可以在同一层中,也可以分布在多层中。下面是具有不同分层的架构。</p>
<p>
<b>单层体系或者单体架构</b>
</p>
<p>这些应用程序是单独的应用程序,它存储数据、应用业务逻辑并显示结果。</p>
<p>
<b>两层架构</b>
</p>
<p>这是客户机/服务器架构,用户界面在客户机上运行,数据库存储在服务器上。实际的应用程序逻辑可以运行在客户机上,也可以运行在服务器上。这种架构的缺点是网络负载重,因为客户机与服务器之间交互繁忙,并且缺少模块性,这将导致灵活性降低。</p>
<p>
<b>N 层架构</b>
</p>
<p>设计良好的分布式应用程序使用的是 n 层架构,每一层都是一个自治单元,可以在技术和业务需求改变时分别开发和维护。</p>
<p>基于 J2EE 的架构组成如下:</p>
<ul>
<li>
<b>客户层</b>
<br>
最终用户与这一层交互。客户机可以是瘦客户机,如基于浏览器的应用程序;也可以是胖客户机,如 Java 客户应用程序。<br>
<br>
</li>
<li>
<b>Web 层</b>
<br>
这一层使客户层与业务层分离。Java servlet 和 Java ServerPage(JSP)就在这一层中。Servlet 作为控制器,它们翻译收到的请求,并将它们分发给业务层中可以调用必要业务事件的组件。JSP 页结合了静态模板和动态数据来创建客户机展示给用户的动态输出。<br>
<br>
</li>
<li>
<b>业务/应用逻辑层</b>
<br>
这一层通常是使用充当业务处理对象和业务域对象的 Enterprise JavaBean(EJB)来实现的。EJB 容器提供不同的服务,如对象分布、持久性、事务、资源管理、安全性等。<br>
<br>
</li>
<li>
<b>企业信息系统(EIS)集成层</b>
<br>
EIS 集成层负责连接业务(有时还有 Web 层)对象与企业信息系统。例如,数据访问对象(DAO)使 Enterprise bean(一般是会话 bean 或者 BMP 实体 bean)与企业数据解耦。<br>
<br>
</li>
<li>
<b>企业信息系统(EIS)层</b>
<br>
这一层表示所有企业数据,可以有许多种形式,其中包括关系数据库、XML 数据库和 ERP 系统。
<p>具有良好架构和设计的 n 层系统有助于实现系统的所有非功能服务级需求。下表比较了不同层的服务级需求。</p>
<table border="1">
<tr>
<th align="center" width="100pt"><b>服务级需求</b></th><th align="center" width="100pt"><b>一层</b></th><th align="center" width="100pt"><b>两层</b></th><th align="center" width="100pt"><b>N 层</b></th>
</tr>
<tr>
<td align="left" width="100pt">可伸缩性
</td><td align="left" width="100pt">无
</td><td align="left" width="100pt">有一些
</td><td align="left" width="100pt">高伸缩性
</td>
</tr>
<tr>
<td align="left" width="100pt">可维护性
</td><td align="left" width="100pt">难以维护。将改变延伸到客户机也是困难的。
</td><td align="left" width="100pt">难以维护,因为展示和业务问题混在一起。
</td><td align="left" width="100pt">容易维护,因为应用程序是分层的。而且在有新的改变时不需要更新客户机。
</td>
</tr>
<tr>
<td align="left" width="100pt">可靠性
</td><td align="left" width="100pt">单点故障
</td><td align="left" width="100pt">数据库仍然是单点故障。
</td><td align="left" width="100pt">可以设计为使用故障转移和冗余机制提供容错。
</td>
</tr>
<tr>
<td align="left" width="100pt">可用性
</td><td align="left" width="100pt">单点故障。
</td><td align="left" width="100pt">数据库仍然是单点故障。
</td><td align="left" width="100pt">容错机制保证 24x7 可用性。
</td>
</tr>
<tr>
<td align="left" width="100pt">可扩展性
</td><td align="left" width="100pt">困难。
</td><td align="left" width="100pt">困难,因为展示和业务问题混在一起。
</td><td align="left" width="100pt">松散耦合,因而更容易扩展。
</td>
</tr>
<tr>
<td align="left" width="100pt">性能
</td><td align="left" width="100pt">好,但是在高负荷下性能可能下降。
</td><td align="left" width="100pt">只有对小型应用程序有好的性能。
</td><td align="left" width="100pt">高性能。
</td>
</tr>
<tr>
<td align="left" width="100pt">可管理性
</td><td align="left" width="100pt">容易管理。
</td><td align="left" width="100pt">不太容易管理。
</td><td align="left" width="100pt">难于管理。
</td>
</tr>
<tr>
<td align="left" width="100pt">安全性
</td><td align="left" width="100pt">健壮性最差,有单故障点。
</td><td align="left" width="100pt">比一层要好。
</td><td align="left" width="100pt">安全性最好,可以为每一层建立安全区,不过难于实现。
</td>
</tr>
</table>
</li>
</ul>
<br>
</font></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="bottommain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index3.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="bottomsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="j-scea-14-1.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="bottomfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img alt="" src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="j-scea-3-3.html"><img alt="上页" border="0" src="../i/previous.gif" name="bottomprevious"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="j-scea-3-5.html"><img alt="下页" border="0" src="../i/next.gif" name="bottomnext"></a></TD>
</TR>
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
</TABLE>
<TABLE width="100%" cellpadding="0" cellspacing="0" border="0">
<TR>
<TD width="100%">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><img alt="" height="1" width="1" src="../i/c.gif"></td>
</tr>
<tr valign="top">
<td class="bbg" height="21"> <a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/index.shtml">关于 IBM</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/privacy/index.shtml">隐私条约</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/legal/index.shtml">法律条款</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/contact/index.shtml">联系 IBM</a></td>
</tr>
</table>
</TD>
</TR>
</TABLE>
<script src="//www.ibm.com/common/stats/stats.js" language="JavaScript1.2" type="text/javascript"></script>
<noscript>
<img border="0" alt="" height="1" width="1" src="//stats.www.ibm.com/rc/images/uc.GIF?R=noscript"></noscript>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -