SOA有什么真正
![](/icons/59818de.gif)
新特性?
我对围绕面向服务
![](/icons/59818de.gif)
体系结构 (SOA)
![](/icons/59818de.gif)
所有喧嚣感到有点迷惑——而您似乎被它迷住了
![](/icons/59818dou2.gif)
例如
![](/icons/59818dou.gif)
在EJB倡导者: 在面向服务
![](/icons/59818de.gif)
体系结构中
![](/icons/59818dou.gif)
使用无 facade
![](/icons/59818de.gif)
EJB 组件是最佳选择吗? 您描述了在设计 EJB 组件以使它们“面向服务”(例如
![](/icons/59818dou.gif)
使它们成为粗粒度
![](/icons/59818de.gif)
或无状态
![](/icons/59818de.gif)
)时所应遵循
![](/icons/59818de.gif)
最佳实战
![](/icons/59818dou2.gif)
对我们这些使用诸如 CORBA 和 Enterprise JavaBeans 等分布式对象技术来构建过成功应用
![](/icons/59818chengxu.gif)
![](/icons/59818de.gif)
人来说
![](/icons/59818dou.gif)
您所描述
![](/icons/59818de.gif)
原理并不新鲜
![](/icons/59818dou2.gif)
我想我们
![](/icons/59818yi.gif)
直都是“面向服务”
![](/icons/59818de.gif)
![](/icons/59818dou2.gif)
我承认您从“面向服务”
![](/icons/59818de.gif)
体系结构中获得了比“分布式对象”体系结构更好
![](/icons/59818de.gif)
术语
![](/icons/59818dou2.gif)
但除此的外
![](/icons/59818dou.gif)
我还有
![](/icons/59818yi.gif)
个严肃
![](/icons/59818de.gif)
问题:存在任何有关 SOA
![](/icons/59818de.gif)
新特性吗?明确地说
![](/icons/59818dou.gif)
当我能够使用 Enterprise JavaBean 组件来做
![](/icons/59818yi.gif)
切工作时
![](/icons/59818dou.gif)
我为什么要关心新
![](/icons/59818de.gif)
服务组件体系结构 (Service Component Architecture) 和服务数据对象 (Service Data Objects) 规范标准?
SCA 代表了服务器端
![](/icons/59818de.gif)
自然发展
在给定我是 EJB 倡导者
![](/icons/59818de.gif)
前提下
![](/icons/59818dou.gif)
下面
![](/icons/59818de.gif)
陈述可能会让您感到震惊——但是
![](/icons/59818dou.gif)
您可以使用 EJB 组件以 Java 语言在服务器端编写任何代码
![](/icons/59818dou.gif)
并不意味着您应该那样做
![](/icons/59818dou2.gif)
我
![](/icons/59818de.gif)
感受是
![](/icons/59818dou.gif)
我们正在看到服务器端技术
![](/icons/59818de.gif)
自然发展
![](/icons/59818dou.gif)
非常类似于我们在客户端所看到
![](/icons/59818de.gif)
Java™ Servlet
![](/icons/59818de.gif)
发展
![](/icons/59818dou2.gif)
不知您是否记得
![](/icons/59818dou.gif)
Java Servlet 是作为
![](/icons/59818yi.gif)
个基于标准Java
![](/icons/59818de.gif)
组件来引入
![](/icons/59818de.gif)
![](/icons/59818dou.gif)
以统
![](/icons/59818yi.gif)
和特定 Web 服务器相关联
![](/icons/59818de.gif)
Java API
![](/icons/59818dou.gif)
如 Microsoft®
![](/icons/59818de.gif)
Internet Server API (ISAPI)
![](/icons/59818dou2.gif)
Java Servlet 使得 Java
![](/icons/59818chengxu.gif)
员能够开发组件来生成动态网页
![](/icons/59818dou.gif)
使那些网页能够和来自区别供应商
![](/icons/59818de.gif)
更广泛 Web 服务器
![](/icons/59818yi.gif)
起运行
![](/icons/59818dou2.gif)
最常用
![](/icons/59818de.gif)
组件是 HttpServlets
![](/icons/59818dou.gif)
它处理来自 HTTP 请求流中
![](/icons/59818de.gif)
输入和到 HTTP 响应流中
![](/icons/59818de.gif)
输出
![](/icons/59818de.gif)
所有映射详细信息
![](/icons/59818dou.gif)
从而将
![](/icons/59818chengxu.gif)
员解放出来以集中于应用
![](/icons/59818chengxu.gif)
流程逻辑
![](/icons/59818de.gif)
详细信息
![](/icons/59818dou2.gif)
尽管这非常不错
![](/icons/59818dou.gif)
然而用户很快发现
![](/icons/59818dou.gif)
使用 Java 代码来生成 HTML 非常繁琐
![](/icons/59818dou2.gif)
例如
![](/icons/59818dou.gif)
下面是 HttpServlet doGet
![](/icons/59818kh.gif)
思路方法中用于生成简单
![](/icons/59818de.gif)
动态“Hello world”
![](/icons/59818de.gif)
代码片段:
String name = request.getAttribute("name");
Pr
![](/icons/59818int.gif)
Writer pw = request.getPr
![](/icons/59818int.gif)
Writer
![](/icons/59818kh.gif)
;
pw.pr
![](/icons/59818int.gif)
ln("");
pw.pr
![](/icons/59818int.gif)
ln("");
pw.pr
![](/icons/59818int.gif)
ln("
Hello " + name + "!
");
pw.pr
![](/icons/59818int.gif)
ln("");
pw.pr
![](/icons/59818int.gif)
ln("");
各种“模板”语言很快开始涌现出来
![](/icons/59818dou.gif)
使您能够在 HTML 中嵌入 Java 代码
![](/icons/59818dou.gif)
从而使得该编程模型更加“所见即所得”(WYSIWYG
![](/icons/59818dou.gif)
即声明式
![](/icons/59818de.gif)
)
![](/icons/59818dou2.gif)
标准化这些思路方法导致了 Java Server Page (JSP) 规范标准
![](/icons/59818de.gif)
产生
![](/icons/59818dou2.gif)
使用 JSP
![](/icons/59818dou.gif)
您可以将 Java“scriptlet”
![](/icons/59818kh.gif)
和“表达式”
![](/icons/59818kh.gif)
和 HTML 混合使用
![](/icons/59818dou2.gif)
例如
![](/icons/59818dou.gif)
下面是某个 JSP 中用于显示相同
![](/icons/59818de.gif)
“Hello world”
![](/icons/59818de.gif)
代码片段:
Hello !
"
仅只是消除括号、引号和分号本身就可以防止 Web 应用
![](/icons/59818chengxu.gif)
![](/icons/59818chengxu.gif)
员
![](/icons/59818de.gif)
无数
![](/icons/59818cuowu.gif)
![](/icons/59818dou2.gif)
此外
![](/icons/59818dou.gif)
消除对编译、打包和部署 HttpServlet 组件
![](/icons/59818de.gif)
需要还极大地缩短了做出变更(无论是否为修否
![](/icons/59818cuowu.gif)
)所需
![](/icons/59818de.gif)
时间
![](/icons/59818dou2.gif)
更重要
![](/icons/59818de.gif)
是
![](/icons/59818dou.gif)
JSP 导致了
![](/icons/59818yi.gif)
种体系结构变更
![](/icons/59818dou.gif)
将呈现视图
![](/icons/59818de.gif)
关注点和获取数据
![](/icons/59818de.gif)
关注点分离
![](/icons/59818dou2.gif)
网页设计人员和应用
![](/icons/59818chengxu.gif)
![](/icons/59818chengxu.gif)
员可以突然地
![](/icons/59818yi.gif)
起工作
![](/icons/59818dou.gif)
分别以更适合其角色
![](/icons/59818de.gif)
语言和风格来开发他们自己
![](/icons/59818de.gif)
组件而不会相互冲突
="xspace-totlerecord">2
="xspace-totlepages">1/2
="xspace-current">12>
延伸阅读
最新评论