赛迪网 > 中国信息化 技术应用总 > 文章
  IT资讯搜索
 
IT产品搜索
· [方案] 征信数据上报系统方案 网站防篡改方案
· [专题] 07年六大令人失望信息化事件 回眸SOA
· [方案] 反垃圾邮件解决方案 烟草行业解决方案
· [商务] 2008年中国电子商务行业发展趋势研究报告
· [专题] 中小企业实施管理 公司网站做不好CIO掉饭碗
· [案例] 北京网通客户服务系统 某部集中运行管理平台

SOA代表了基于组件应用程序发展中的下一步 (1)

发布时间:2008.01.31 15:11     来源:developerWorks    作者:developerWorks

SOA 有什么真正的新特性?

    我对围绕面向服务的体系结构 (SOA) 的所有喧嚣感到有点迷惑——而您似乎被它迷住了。

    例如,在EJB倡导者: 在面向服务的体系结构中,使用无 facade 的 EJB 组件是最佳选择吗? 您描述了在设计 EJB 组件以使它们“面向服务”(例如,使它们成为粗粒度的或无状态的)时所应遵循的最佳实践。

    对我们这些使用诸如 CORBA 和 Enterprise JavaBeans 等分布式对象技术来构建过成功应用程序的人来说,您所描述的原理并不新鲜。我想我们一直都是“面向服务”的。

    我承认您从“面向服务”的体系结构中获得了比“分布式对象”体系结构更好的术语。但除此之外,我还有一个严肃的问题:存在任何有关 SOA 的新特性吗?明确地说,当我能够使用 Enterprise JavaBean 组件来做一切工作时,我为什么要关心新的服务组件体系结构 (Service Component Architecture) 和服务数据对象 (Service Data Objects) 规范?

SCA 代表了服务器端的自然发展

    在给定我是 EJB 倡导者的前提下,下面的陈述可能会让您感到震惊——但是,您可以使用 EJB 组件以 Java 语言在服务器端编写任何代码,并不意味着您应该那样做。我的感受是,我们正在看到服务器端技术的自然发展,非常类似于我们在客户端所看到的 Java™ Servlet 的发展。

    不知您是否记得,Java Servlet 是作为一个基于标准Java 的组件来引入的,以统一与特定 Web 服务器相关联的 Java API,如 Microsoft® 的 Internet Server API (ISAPI)。Java Servlet 使得 Java 程序员能够开发组件来生成动态网页,使那些网页能够与来自不同供应商的更广泛 Web 服务器一起运行。

    最常用的组件是 HttpServlets,它处理来自 HTTP 请求流中的输入和到 HTTP 响应流中的输出的所有映射详细信息,从而将程序员解放出来以集中于应用程序流程逻辑的详细信息。

    尽管这非常不错,然而用户很快发现,使用 Java 代码来生成 HTML 非常繁琐。例如,下面是 HttpServlet doGet() 方法中用于生成简单的动态“Hello world”的代码片段:

String name = request.getAttribute("name");
PrintWriter pw = request.getPrintWriter();
pw.println("");
pw.println("");
pw.println("

Hello " + name + "!

");
pw.println("");
pw.println("");

    各种“模板”语言很快开始涌现出来,使您能够在 HTML 中嵌入 Java 代码,从而使得该编程模型更加“所见即所得”(WYSIWYG,即声明式的)。标准化这些方法导致了 Java Server Page (JSP) 规范的产生。使用 JSP,您可以将 Java“scriptlet” (<%...%>) 和“表达式” (<%=…%>) 与 HTML 混合使用。例如,下面是某个 JSP 中用于显示相同的“Hello world”的代码片段:

<% String name = request.getAttribute("name"); %>

Hello <%=name%>!



"
    仅只是消除括号、引号和分号本身就可以防止 Web 应用程序程序员的无数错误。此外,消除对编译、打包和部署 HttpServlet 组件的需要还极大地缩短了做出变更(无论是否为修否错误)所需的时间。

    但更重要的是,JSP 导致了一种体系结构变更,将呈现视图的关注点与获取数据的关注点分离。网页设计人员和应用程序程序员可以突然地一起工作,分别以更适合其角色的语言和风格来开发他们自己的组件而不会相互冲突。

    说句题外话,Enterprise JavaBeans 规范几乎是在同时出现的,以进一步分离那些关注点。添加 EJB 组件实现了 Web 应用程序的真正的模型-视图-控制器 (Model-View-Controller) 体系结构,其中模型由 EJB 组件来封装,视图由 JSP 来封装,控制器由 HttpServlets 来封装。

    遗憾的是,若要呈现任何真正有用的东西,Java scriptlet、表达式和静态 HTML 的交互可能变得相当复杂。例如,下面是用于产生订单 ID 和状态列表的代码片段:

<%
OrderStatus orderStatus = (OrderStatus)request.getAttribute(
"OrderStatus"
);
OrderData d[] = orderStatus.orders;
int orderID = 0;
String status = null;
for (int i=0 ; i < d.length; i++)
{
orderID = d[i].orderID;
status = d[i].status;
%>

Order Id =<%=orderID%> Status =<%=status%>


<% } %>

    开始循环的那个 scriptlet 相当复杂。结尾的那个 scriptlet 确实简单,但是常常被遗忘(或放在了错误的位置)。在编辑 JSP 时,不存在用于捕获这个以及其他常见错误的工具(就像在 Java IDE 对“纯粹”HttpServlets 所遇到的情况一样)。

1 2 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 北京信息产业协会暨专家委员会2008年会 (01-31) · 预测 BI技术将会有新兴的提供商所主导 (01-31)
· 龚炳铮:信息化与工业化融合的探讨 (01-31) · 技术+业务:未来CIO将承担CEO的部分职责 (01-31)
· CIO理智体现:相对悲观才能获得更准确数据 (01-31) · 企业年初预算 CIO节省IT开支经典10招 (01-31)
· 目前新一代互联网呈现七大发展趋势 (01-30) · 2007年重庆市信息化建设水平明显提高 (01-30)
· 2010年基于SOA服务开支预期将达338亿美元 (01-30) · HP发布治理软件 推动SOA实施和业务敏捷性 (01-30)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统