国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用Flash遠(yuǎn)程調(diào)用增強(qiáng)J2EE表示層

2019-11-17 05:55:39
字體:
供稿:網(wǎng)友

  對Macromedia公司的Flash的遠(yuǎn)程調(diào)用使得java開發(fā)者除了jsp(JavaServer Pages)和Swing之外又有了一種全新的方式來構(gòu)建J2EE(Java 2 Platform, EnterPRise Edition)應(yīng)用. 本文調(diào)查了Flash遠(yuǎn)程調(diào)用,解釋了為何它有如此作用,并且提供了一個(gè)如何實(shí)現(xiàn)的例子
  
  在任何多層體系中選擇表示層技術(shù)時(shí),Java開發(fā)者通常有兩種選擇: JSP或者Swing/AWT(Abstract Windowing Tookit)。借助JSP,開發(fā)者可以創(chuàng)建非常輕易發(fā)布的動(dòng)態(tài)內(nèi)容。但同時(shí)也使得當(dāng)應(yīng)用程序在不同的瀏覽器中發(fā)布時(shí)開發(fā)者不易控制他們的運(yùn)行情況。使用Swing,開發(fā)者可以輕易控制應(yīng)用程序的行為,但要求用戶安裝Java運(yùn)行時(shí)環(huán)境。當(dāng)開發(fā)者需要既以比較小,基于瀏覽器的方式發(fā)布同時(shí)又對用戶的交互有較高的可控性時(shí)也存在這種情況。對于這些情況,Macromedia Flash提供了一種可供選擇的解決方法。

  一般來說,Macromedia Flash比發(fā)布界面豐富,帶有腳本程序的應(yīng)用程序要優(yōu)越。不幸的是,直到最近都沒有出現(xiàn)標(biāo)準(zhǔn)的方法可以將Flash應(yīng)用整合進(jìn)J2EE體系。這種狀況隨著Flash Remoting MX的引入才得以改變。Flash Remoting MX提供了標(biāo)準(zhǔn)的通信層使Flash應(yīng)用程序與Java, .NET和ColdFusion之間進(jìn)行通信。利用Flash Remoting,開發(fā)者得以在J2EE體系中發(fā)布小的,基于瀏覽器的表示層,同時(shí)可以對應(yīng)用的行為進(jìn)行足夠的控制。

  本文將解釋為何Macro Flash適合于作為n層體系中應(yīng)用層的解決方法。我將首先調(diào)查應(yīng)用層如何得以改變,然后比較Flash和現(xiàn)有標(biāo)準(zhǔn),最后解釋Flash如何應(yīng)用于J2EE體系。

  應(yīng)用層的演化:

  從Berners-Lee創(chuàng)建第一個(gè)基于Web的系統(tǒng)至今,n層體系的表示層經(jīng)歷了一次變化。在那之前,開發(fā)者不得不開發(fā)與服務(wù)器緊密結(jié)合的客戶端系統(tǒng)。所能利用的只有基本的HTTP協(xié)議,Web服務(wù)器和Html,開發(fā)者可以為用戶發(fā)布基于文檔的應(yīng)用系統(tǒng),不管他們使用的是何種硬件或軟件平臺(tái)。這種方法對于應(yīng)用層開發(fā)者有一些基本問題: 雖然HTML可以成功地被傳送基于文檔的數(shù)據(jù),但它不適合有多種表現(xiàn)的應(yīng)用—可與用戶進(jìn)行實(shí)時(shí)的交互。

  為了解決這些不足,開發(fā)者開始在現(xiàn)代的瀏覽器(Netscape Navigator 2.0以后)中開發(fā)一些新的特性,即Java和javascript。開發(fā)者第一次能夠利用Web瀏覽器平臺(tái)發(fā)布豐富的,與平臺(tái)無關(guān)的應(yīng)用。實(shí)際上Java小程序的使用從沒有達(dá)到它的期望值。Java小程序要求用戶已經(jīng)安裝Java運(yùn)行時(shí)環(huán)境(Java Runtime Environment, JRE),并且Web瀏覽器安裝了Java插件。除了需要安裝客戶端系統(tǒng)來運(yùn)行Java小程序外,客戶端還需下載Java小程序。這些是很耗費(fèi)時(shí)間的,非凡是會(huì)使Internet的連接變得非常慢。

  除了這種解決方法外開發(fā)者有三種選擇來在客戶端/服務(wù)器應(yīng)用中使用豐富的前端: 動(dòng)態(tài)HTML(DHTML), applet/Swing, 或者第三方解決方法。每種解決方法都各有利弊。

  DHTML:

  使用DHTML創(chuàng)建豐富的前端提供了如下優(yōu)點(diǎn):

  1. DHTML是開放的并且免費(fèi)

  2. 使用DHTML所寫的應(yīng)用可以在支持DHTML的任何Web瀏覽器中配置

  3. 基于Web的應(yīng)用其客戶端通常都由文字和圖片構(gòu)成,這答應(yīng)小的應(yīng)用腳本的存在。

  DHTML也并不總是一個(gè)好的解決方案;當(dāng)選擇這一技術(shù)時(shí)你也必須要考慮到它的一些缺點(diǎn):

  1. DHTML依靠用戶的Web瀏覽器來切實(shí)地將用戶的原意反映在應(yīng)用中。由于瀏覽器的廠家和版本多種多
樣,因此復(fù)雜的應(yīng)用中必須嵌入工作區(qū)以使得應(yīng)用能夠在不同的瀏覽器中有著同樣的表現(xiàn)

  2. 盡管DHTML使得開發(fā)者可以更好地控制客戶端行為,但這種靈活性也是有限的

  3. 由于不同的瀏覽器在表現(xiàn)HTML和解釋Javascript上有一些不同,必須為各個(gè)不同的Web瀏覽器創(chuàng)建
不同的平臺(tái)。加入工作區(qū)并將每個(gè)瀏覽器的實(shí)現(xiàn)分開增加了維護(hù)應(yīng)用的復(fù)雜性。另外,無論什么時(shí)候一
個(gè)新的瀏覽器發(fā)布后,應(yīng)用(或應(yīng)用的一個(gè)部分)就必須重新編碼并測試。

  當(dāng)開發(fā)者明確知道他在標(biāo)準(zhǔn)的客戶端配置什么樣的應(yīng)用時(shí),使用DHTML的確有它的優(yōu)勢。假如企業(yè)內(nèi)部網(wǎng)僅適用IE6.0,針對該瀏覽器的應(yīng)用邏輯可以被處理得非常得當(dāng)。 photoshop教程 數(shù)據(jù)結(jié)構(gòu) 五筆輸入法專題 QQ病毒專題 共享上網(wǎng)專題 Google工具和服務(wù)專題

  Applet/Swing:

  對于Java開發(fā)者而言,基于applet或swing的解決方案是另外一種可行的解決方案。它有如下的優(yōu)點(diǎn):

  1. 創(chuàng)建基于Java的應(yīng)用無論對于用戶還是開發(fā)者都是免費(fèi)的

  2. Applets可以通過大部分的瀏覽器進(jìn)行配置

  3. Applets答應(yīng)用戶創(chuàng)建豐富的用戶界面

  4. 使用Applets讓客戶端分擔(dān)了一部分服務(wù)器的負(fù)載

  選擇使用基于applets的解決方案也必須衡量它的以下不足: 開發(fā)者不能確定用戶是否安裝了JRE. 即便安裝了,也不一定是所需要的版本。

  Applets為開發(fā)者在標(biāo)準(zhǔn)客戶端配置他們的應(yīng)用提供了很大的選擇余地。對于標(biāo)準(zhǔn)客戶端,開發(fā)者可以假定正確的JVM版本已經(jīng)安裝

  除了使用applet/Swing或DHTML應(yīng)用,開發(fā)者還有一個(gè)選擇: 第三方解決方案。

  第三方解決方案: Mecromedia Flash

  為了達(dá)到DHTML或applet應(yīng)用同樣的效果,第三方產(chǎn)品需要具備以下特性:

  1. 任何標(biāo)準(zhǔn)瀏覽器都可以使用它

  2. 應(yīng)用程序的運(yùn)行幾乎不需要用戶的干涉

  3. 客戶端的運(yùn)行時(shí)間必須是免費(fèi)或者至少很便宜

  4. 客戶端應(yīng)當(dāng)可以與已有的業(yè)務(wù)邏輯結(jié)合在一起

  有一些第三方解決方案在此領(lǐng)域共同競爭,包括Apple的QuickTime, Microsoft的ActiveX,和Macromedia的Flash Suite。所有這三種解決方案在許多用戶的系統(tǒng)上都得到了使用。它們都能應(yīng)用在基于Web瀏覽器的應(yīng)用程序之中,而用戶不需付出任何代價(jià)。然而相比于ActiveX和QuickTime,F(xiàn)lash為Java開發(fā)者提供了一個(gè)重大的助益:它答應(yīng)客戶端應(yīng)用調(diào)用任何J2EE應(yīng)用服務(wù)器上的方法。這就意味著已經(jīng)存在的EJB, servlets, Web services, 和類中的業(yè)務(wù)邏輯可以不作任何改變地被基于Flash的前端調(diào)用。

  服務(wù)器端產(chǎn)品Flash Remoting使得Flash客戶端可以調(diào)用J2EE Server上的方法。Flash Remoting由兩個(gè)重要的部分組成:用于將本地的Flash對象和方法映射到Java對象和方法的網(wǎng)關(guān)服務(wù)器和客戶端支持。網(wǎng)關(guān)應(yīng)用在標(biāo)準(zhǔn)的war文件中,可在任何J2EE應(yīng)用服務(wù)器中配置。客戶端支持組成為ActionScript(被Flash運(yùn)行和配置工具所使用的編程語言)增加的功能。

  要讓Flash Remoting工作,F(xiàn)lash應(yīng)用必須連接到J2EE Server,獲取它想要利用的服務(wù)(Java對象)的句柄并調(diào)用方法。這通過使用ActionScript庫(NetServices)來做到。如下的例子與名為MX的Web應(yīng)用中的網(wǎng)關(guān)連接,web.xml文件servlet映射如下:

<servlet-mapping>
<servlet-name>FlashGatewayServlet</servlet-name>
<url-pattern>/gateway</url-pattern>
</servlet-mapping>

//Load the NetServices ActionScript Library
#include "NetServices.as"

//Create a connection to the mx webapp running on port 80 on the local
//machine

NetServices.setDefaultGatewayUrl("http://localhost/mx/gateway";);

//Invoke the createGatewayConnection to initialize the Flash Remoting //functionality
gatewayConnnection = NetServices.createGatewayConnection();

//Bind the Java Object: com.tallan.data.providers.FlashDemo
//to a service called tallanDataService.
tallanDataService = gatewayConnnection.getService
("com.tallan.data.providers.FlashDemo", this);

//Invoke a method called getReportData on the service named
//tallanDataSerevice

tallanDataService.getReportData();
  如上例子說明了連接到J2EE Server和調(diào)用一個(gè)方法的過程。 Photoshop教程 數(shù)據(jù)結(jié)構(gòu) 五筆輸入法專題 QQ病毒專題 共享上網(wǎng)專題 Google工具和服務(wù)專題


  為了處理實(shí)際的工作,必須在Flash客戶端和J2EE Server上的企業(yè)資源之間相互傳遞參數(shù)。所有的遠(yuǎn)端調(diào)用都在異步方法中調(diào)用。為了支持從服務(wù)器上返回值,必須在Flash客戶端添加回調(diào)函數(shù)。只要網(wǎng)關(guān)從J2EE服務(wù)器上的函數(shù)返回值該回調(diào)函數(shù)就被調(diào)用。為了支持函數(shù)回調(diào),ActionScript函數(shù)的函數(shù)名必須與被調(diào)用的Java方法名一致。在如下的例子中,方法是getReportData(), 因此ActionScript回調(diào)函數(shù)應(yīng)當(dāng)命名為getReportData_result;

function getReportData_Result(result)
{
//Print the results from the app server to the
//debug window
trace(result);
}
  所有的方法調(diào)用信息,包括參數(shù)和返回值,都在客戶端和服務(wù)器端以Action Message Format(AMF)的格式傳遞。AMF是二進(jìn)制信息格式,通過HTTP以一種類似于SOAP(Simple Object access Protocol)的方式傳送。在網(wǎng)絡(luò)中,AMF信息比SOAP信息要小得多,因而答應(yīng)函數(shù)以更快的速度被調(diào)用。Flash Remoting透明地處理Java對象和ActionScript對象之間的所有映射。


  使得Flash成為J2EE前端的一個(gè)重要的特性是它的內(nèi)嵌的XML解析功能。Flash生來就能夠在全部在客戶機(jī)上處理XML解析和DOM(document.nbspObject Model)傳遞。如下的ActionScript代碼解析一篇應(yīng)用于2D圖形中的包含x和y坐標(biāo)的XML文檔:

<graph>
<point>
<xvalue>10</xvalue>
<yvalue>5</yvalue>
<point>
<point>
<xvalue>20</xvalue>
<yvalue>10</yvalue>
<point>
</graph>
  應(yīng)用服務(wù)器上的一個(gè)產(chǎn)生圖形文件文檔的類:

public class FlashDemo
{
public FlashDemo()
{
}
public document.nbspgetReportData()
{
document.nbspdoc =null;
try
{
System.out.println("calling getReportData");
document.uilder builder =
document.uilderFactory.newInstance().newdocument.uilder();
doc= builder.newdocument.);

//Create a record as the root element
Element element = doc.createElement("graph");
Element child1=doc.createElement("point");
child1.setAttribute("xvalue", "February");
child1.setAttribute("yvalue", "20");
element.insertBefore(child1, null);
doc.appendChild(element);
  這個(gè)簡單的類將返回一個(gè)文檔對象給Flash客戶端解析; 下面的例子完成解析:

//Parse the XML document.nbspreturned by the server,
//keeping the results in an array called nodes
function parseXML()
{
//Create a new array called nodes
nodes = new Array();

//Initialize the nodes array to
//contain all of the children of the reportXML document.BR> nodes = reportXML.nodes;

// childCounter is used as a counter for the child Nodes
childCounter = 0;

//childNodes will contain the children of each node
childNodes = new Array();

//XAxisvalue will contain the x-axis value to plot
xAxisvalue = new Array();

//YAxisvalue will contain the y-axis value of the data sets
yAxisvalue = new Array();

//Iterate through the first level children of the XML Doc
for (j=0; j<=nodes.length; j++)
{
//Check if the node Name is report i.e., the data set
//belongs to graph
if (nodes[j].nodeName == "graph")
{
//Get the background color of the graph
bgcolor = "#000000";//snodes[j].attributes.bgcolor;
//Get the caption of the graph
caption = nodes[j].attributes.caption;
//Get the x-axis name
xaxisname = nodes[j].attributes.xaxisname;
//Get the y-axis name
yaxisname = nodes[j].attributes.yaxisname;
//Get the min value of the y-axis
yaxisminvalue = nodes[j].attributes.yaxisminvalue;
//Get the max value of the y-axis
yaxismaxvalue = nodes[j].attributes.yaxismaxvalue;
//Now, we get the childNodes
childNodes = nodes[j].nodes;

//Iterate through all of the child nodes, pulling out
//their x,y values and storing them in arrays

for (k=0; k<=childNodes.length; k++)
{
//If the node name is Set i.e., a graph data set, then we retrieve
//and collect the values
if (childNodes[k].nodeName == "point")
{
//Increment counter
childCounter= childCounter+1;
//Get the x-axis name
xAxisvalue[childCounter] = childNodes[k].attributes.xvalue;
//Get the value
yAxisvalue[childCounter] = childNodes[k].attributes.yvalue;

}
}
}
}
}
  上面的例子簡單地解析了XML文檔并將它存儲(chǔ)在各數(shù)組中共以后的應(yīng)用使用。

  世界上有很多Flash開發(fā)者。因而Macromedia的網(wǎng)站上有很多免費(fèi)的ActionScript庫可用。有幾個(gè)庫可用來以圖形格式繪制數(shù)據(jù)數(shù)組。通過使用這種方法,可以創(chuàng)建一個(gè)簡單的應(yīng)用來繪制應(yīng)用服務(wù)器產(chǎn)生的XML文檔,如下圖所示:

用Flash遠(yuǎn)程調(diào)用增強(qiáng)J2EE表示層

  由于Flash在處理豐富的媒體方面的優(yōu)越性,你可以很輕易地在上面的代碼的基礎(chǔ)上進(jìn)行擴(kuò)充,構(gòu)想出一個(gè)更全面的圖形應(yīng)用。這個(gè)圖形應(yīng)用程序可以調(diào)用服務(wù)器上的方法來產(chǎn)生包含幾個(gè)x-y坐標(biāo)對的XML文檔。將這些數(shù)據(jù)與一些可以自由使用的圖形庫結(jié)合在一起,F(xiàn)lash接口可以以一種令人愉快地方式為用戶在圖形上繪制出這些坐標(biāo)。這個(gè)圖形應(yīng)用與基于HTML的圖形應(yīng)用是不同的,因?yàn)镕lash應(yīng)用程序只須一次以XML格式得到數(shù)據(jù),不用對服務(wù)器進(jìn)行其它的調(diào)用,它答應(yīng)用戶放大,鉆取, 或者作用于未來的數(shù)據(jù)集。可以證實(shí),這種方法在想要限制對服務(wù)器上CPU的占用率時(shí)是非常有用的。隨著桌面電腦性能的變得越來越強(qiáng)大,應(yīng)用程序?qū)⒎?wù)器端的負(fù)載分配給客戶端的能力將愈發(fā)有用。Flash答應(yīng)開發(fā)者將所有的XML解析和圖形操作的工作交給客戶端來做,從而將服務(wù)器解放出來處理其它的請求,以此來達(dá)到上述目的。

  將Flash整合進(jìn)你的J2EE應(yīng)用

  盡管對于J2EE開發(fā)者而言前端配置有多種選擇,但不同的選擇效果是不一樣的。HTML和DHTML解決方案適合于處理文檔驅(qū)動(dòng)或簡單的應(yīng)用。而Swign/applet方案重量級應(yīng)用中,配置環(huán)境已經(jīng)安裝了JVM的情況下有一定優(yōu)勢。然而,對于有些應(yīng)用,F(xiàn)lash可能對客戶端環(huán)境極有意義。Flash在含有少量腳本的多媒體應(yīng)用中有優(yōu)勢。利用遠(yuǎn)端工具,開發(fā)者現(xiàn)在可以將Flash客戶端整合進(jìn)已有的J2EE體系結(jié)構(gòu)中。

  本文由Yesky與matrix共同策劃

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金湖县| 龙井市| 抚宁县| 桃江县| 临澧县| 辉南县| 新干县| 绿春县| 嘉义市| 河南省| 汉阴县| 准格尔旗| 丰县| 松江区| 绵阳市| 故城县| 通化县| 潢川县| 麻城市| 永泰县| 涞水县| 外汇| 云南省| 武陟县| 旅游| 恩施市| 宝山区| 全州县| 上杭县| 阿克陶县| 巧家县| 乌苏市| 嘉禾县| 太谷县| 朝阳市| 江华| 政和县| 乾安县| 鱼台县| 酉阳| 宁远县|