青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
數據加載中……

用于實現 Web 服務的 SOA 編程模型,第 5 部分: 面向服務的用戶界面

面向服務的編程模型可以簡化程序到用戶 (program-to-human) 的交互的開發,方法是在用戶或者管理員控制下在表示層抽象化接口、標準化消息以及聚合獨立信息源。本文是關于 IBM 的 SOA 編程模型的系列文章的第 5 部分,介紹了用戶面對的服務并提供了用戶界面 (UI)。本系列前面的文章介紹了與語言無關的數據訪問和基于面向服務的體系結構(Service-Oriented Architecture,SOA)概念的 Web 服務的編程模型。

面向服務的體系結構的用戶界面

在文獻中,對 Web 服務的討論通常是在程序到程序 (program-to-program) 交互的上下文中進行的。然而,

模型-視圖-控制器(Model-View-Controller,MVC)范例是現代大多數 UI 應用程序框架的基礎。SOA 操作提供模型層,而 UI 位于視圖層。UI 技術可以在各種設備上呈現信息,這些設備包括的范圍很廣,從窗口小部件和智能電話到瀏覽器和能夠進行大量客戶端處理的富客戶機。中間件和工具將視圖層 UI 技術連接到模型層 Web 服務和數據。

在 SOA 方法中,宿主組件的環境抽象成容器,它提供已知的服務集。從 UI 的角度來說,承載客戶端 UI 組件的三個主要的容器是:

  • 基本 Web 瀏覽器。
  • 使用 Java?Script 和動態 HTML 增強的 Web 瀏覽器。
  • IBM Workplace? Client Technology?——具有本地 IBM WebSphere? Application Server 客戶機支持的 Eclipse 富客戶機。

這些容器可以通過支持下列技術得以增強:Servlet、JavaServer Page (JSP) 和 JSP Tag;用于頁面排序的 Struts;用于高級頁面組合的 JavaServer Face (JSF);以及合并在同一頁面上的多應用程序視圖的 Portlet 技術。

UI 開發框架

UI 開發框架可以簡化創建面對用戶的復雜應用程序的過程。通常使用下列的 UI 框架來創建 UI 組件:

  • Struts,擁有最大的開發人員社區和異常工具支持,是 Apache 開放源代碼項目,它早于 Java Portlet 規范 JSR 168(請參閱參考資料以獲得 Struts Web 站點的鏈接)。Struts 是使用 servlet/JSP 范例開發基于服務器的 UI 的多頁 MVC 框架。Struts 的一個特殊版本 V1.1 庫支持 IBM WebSphere Portal 上的 JSR 168 Portlet。
  • JavaServer Faces 是 Java Web 應用程序的 MVC 實現,以增量方式構建于以前的技術之上。它很好地適應了 Portlet 開發,提供 Portlet 和 Servlet、聲明處理、確認和事件處理。JSF 頁面具有一個或多個與該頁面上的 UI 控件交互的本地模型。這些控件將 UI 屬性呈現給輸出,而復雜的邏輯確保它們的表示是在“正確的”地方。客戶端模型可以連入企業服務總線 (Enterprise Service Bus) 來發送和接收事件。
  • Java Widget Library (JWL),是一個可供門戶和 Portlet 程序員使用的擴展窗口小部件集,向 JSF 添加 JavaScript 客戶端處理,而且將得到 IBM Rational? Suite? DevelopmentStudio 的支持。更新客戶機本地視圖省去了往返服務器的過程,縮短了幾個數量級的響應時間,而且極大地改善了用戶體驗。

門戶 提供了最好的 UI 支持。在門戶體系結構中,Portlet(通常是使用上面提到的某種 UI 框架開發的)是基本構件。使用這種體系結構,開發人員可以把主要精力放在他們的應用程序的獨特方面,并且將生命周期、每個用戶的自定義、聚合以及與其他組件的集成等公共功能委派給中間件。

下面幾部分將單個服務和門戶的 Portlet 組件描述成服務聚合機制。







面向服務的 UI 的 Portlet

Portlet 組件實現了標準服務接口和協議。Java Portlet 規范和用于遠程 Portlet 的 Web 服務(Web Services for Remote Portlet,WSRP)標準分別定義了 Java 和 Web 服務的這個接口(請參閱參考資料以獲得更多關于 WSRP 的信息)。這兩個標準非常相似,以致如果存在合適的容器或者代理,為任一接口編寫的 Portlet 都可互換。

Java Portlet 示例

每個 Java Portlet 都實現了該 Portlet 接口或者擴展了實現它的類。這個接口定義了 Portlet 和它的容器之間的服務約定,以及 Portlet 的生命周期:

  • 初始化 Portlet 并將其放入服務中(init 方法)
  • 處理請求(processActionrender 方法)
  • 除去服務的 Portlet(destroy 方法)

在處理請求期間,Portlet 容器調用 Portlet 的:

  • processAction 方法來通知 Portlet 用戶行為。每個客戶機只有一個基于用戶的行為被觸發。Portlet 可以發出一個重定向、改變它的 Portlet 模式或窗口狀態或者更改它的狀態。
  • render 方法來請求標記片段。

Portlet 還可以調用更多的服務來執行所需的功能。清單 1 示例使用 Web 服務來檢索和顯示特定用戶的股票報價。


清單 1. 股票報價 Portlet 代碼示例
												
																		public class StockQuotePortlet extends GenericPortlet {

	private ServiceManager serviceManager;

	public void init(PortletConfig config) throws PortletException {
		serviceManager = new ServiceManager();
	}

	public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
		
        	response.setContentType("text/html");    

        	// invoke autogenerated wrapper to locate service
		NetXmethodsServicesStockquoteStockQuoteServiceLocator loc = 
			new NetXmethodsServicesStockquoteStockQuoteServiceLocator();
		NetXmethodsServicesStockquoteStockQuotePortType port = 
			loc.getNetXmethodsServicesStockquoteStockQuotePort();

		// loop through all stock quotes the user is interested in
		PortletPreferences prefs = request.getPreferences();
		Iterator quoteKeys = prefs.getMap().keys().iterator();
		String key;
		Float quote;
		StockBean quoteBean = new StockBean();
		while ( quoteKeys.hasNext() ) {
			key = quoteKeys.next();
	    		quote =  port.getQuote (key);
			quoteBean.add(key, quote);
		}

		request.setAttribute("StockQuoteBean", quoteBean);

		// render stock quotes using a JSP        
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("jsp/View.jsp");
        rd.include(request,response);

	}
}
			
												
										

這一部分演示了您可以如何使用 Java Portlet 規范來實現 UI 服務,以及您的 Portlet 可以如何調用其他 Web 服務。下一部分將展示如何使用 WSRP 將 UI 作為 Web 服務發布。

用于遠程 Portlet 的 Web 服務

WSRP 是遠程呈現 Portlet 的標準,使門戶能夠從多個源聚合內容。WSRP 將 Web 服務的集成能力擴展到面向表示的組件,并將視圖層公開為跨平臺、實現語言和供應商共享。可以發現內容和應用程序提供者并將其插入遵循標準的應用程序中,而不必進行任何額外的編程工作。

典型的 Web 服務使用遠程表示范例,這意味著所有的視圖邏輯在客戶機上執行,而應用程序邏輯和數據層(控制器和模型)則駐留于服務器上。與此相反,WSRP 使用分布式范例將客戶機和服務器的表示分開。


圖 1. 面向數據的 Web 服務和 WSRP 面向表示的 Web 服務的比較
WSRP 比較

上圖展示了這一差異。左邊是典型的面向數據的 Web 服務,它提供了無格式的數據;它必須完全依賴于客戶端的呈現代碼來表示數據。(這意味著需要在客戶機上安裝和管理客戶端應用程序組件。)右邊是 WSRP 服務;它的分布式表示邏輯將表示任務分成:

  • 生成標記語言。
  • 將標記片段聚合成一個 Web 頁面(沒有顯示)。
  • 通過標準客戶端容器呈現標記語言。

WSRP 示例

清單 2 展示了一個通過簡單對象訪問協議(Simple Object Access Protocol,SOAP)從 WSRP 使用者發出的 WSRP getMarkup 請求的示例。


清單 2. 通過 SOAP 發出的 WSRP GetMarkup 請求
												
																		<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 				 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
      <soapenv:Body>
         <getMarkup xmlns="urn:oasis:names:tc:wsrp:v1:types"> 
            <registrationContext>
               <registrationHandle>192.168.66.57_1096235652731_0</registrationHandle> 
            </registrationContext>
            <portletContext>
               <portletHandle>0.1</portletHandle>   
            </portletContext>   
            <runtimeContext>    
               <userAuthentication>wsrp:none</userAuthentication>    
               <portletInstanceKey>ProxyTest_row1_col1_p1</portletInstanceKey>    
               <namespacePrefix>Pluto_ProxyTest_row1_col1_p1_</namespacePrefix>   
            </runtimeContext>   
            <userContext>    
               <userContextKey>dummyUserContextKey</userContextKey>   
            </userContext>   
            <markupParams>    
               <secureClientCommunication>false</secureClientCommunication>    
               <locales>en</locales>    
               <locales>de</locales>    
               <mimeTypes>text/html</mimeTypes>    
               <mode>wsrp:view</mode>    
               <windowState>wsrp:normal</windowState>    
               <clientData>     
                  <userAgent>WSRP4J Proxy Portlet</userAgent>    
               </clientData>    
               <markupCharacterSets>UTF-8</markupCharacterSets>    
               <validNewModeswsrp:view</validNewModes>    
               <validNewModes>wsrp:help</validNewModes>    
               <validNewModes>wsrp:edit</validNewModes>    
               <validNewWindowStates>wsrp:normal</validNewWindowStates>>    
               <validNewWindowStates>wsrp:maximized</validNewWindowStates>    
               <validNewWindowStates>wsrp:minimized</validNewWindowStates>   
            </markupParams>  
         </getMarkup> 
      </soapenv:Body>
   </soapenv:Envelope>
 			
												
										

WSRP 生產者對這個請求的響應是 HTML 片段,使用者(通常是門戶)可以將其聚合成一個完整的文檔,例如門戶頁面。

不是將每個應用程序或 Portlet 部署到有意使用它的每個服務器上,而是跨網絡邊界共享應用程序,這具有明顯的優勢。WSRP 支持:

  • 更簡單的管理——門戶管理員可以瀏覽要提供的 WSRP 服務的注冊中心,而不是管理可插入組件的本地部署。用戶受益于及時使用隨需應變的新服務和內容集成。
  • 負載分配——跨多個服務器分配負載。
  • 減少基礎設施成本——應用程序可以共享承載的基礎設施。例如,只分配后端銀行應用程序的表示層(通過 WSRP)保護了應用程序提供者的安全計算環境,而與此同時,用戶仍可以與共享的 UI 進行交互。
  • 控制內容表示——在門戶重新分配內容時,內容和應用程序提供者可以極大地擴展新用戶的范圍。






門戶:面向服務的 UI 的動態集成

門戶的視圖層將多個后端服務的 UI 集成為一個集中管理的 UI,這樣可以統一分離的 IT 基礎設施,并通過控制單一的 UI 向用戶提供 IT 服務的單一視圖。最初分開設計的應用程序可以連接起來構成組合應用程序,用于支持新的功能。例如,連接到協作 Portlet 的電子郵件 Portlet 可以過濾收件箱,使僅當寄件人在線并可以聊天時才顯示所收到的電子郵件——這種能力是這兩個原始應用程序所不具備的。

這種 portal 模型的重要意義在于改善了隨需應變業務 (On Demand Business) 的敏捷性。管理員成為應用程序集成者,定義新的頁面,向它們添加 Portlet,將 Portlet 連接在一起并設置權限(訪問控制)——不用編程——來創建新的組合應用程序。自服務的門戶使用戶可以改變他們的工作環境,以適應他們獨特的需求。門戶體系結構解放了應用程序開發人員,使其能夠全神貫注地創造新的業務價值。

將來,門戶甚至能夠集成組合服務,因而能夠在更高的層次上聚合 UI。門戶可以無縫地與來自其他門戶的內容相集成,從而提供水平的、企業級的內容集成。







總結

使用門戶/Portlet 體系結構,將 SOA 概念應用到用戶界面,并委派公共的軟件生命周期功能給 UI 容器,這改善了軟件開發人員的時間價值 (time-to-value)。WSRP 標準通過 Web 服務交付 UI 組件,為內容提供者和內容使用者提供便利,從而在不用進行任何編程的情況下支持某種類型的應用程序集成。

posted on 2006-04-17 04:01 wsdfsdf 閱讀(199) 評論(0)  編輯 收藏 引用 所屬分類: 技術文章

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机久久99久久精品播放免费| 国产一区二区0| 亚洲精品视频啊美女在线直播| 能在线观看的日韩av| 美女国内精品自产拍在线播放| 久久天天狠狠| 亚洲第一页自拍| 亚洲人成网站999久久久综合| 亚洲精品乱码久久久久久日本蜜臀 | 欧美成人一品| 91久久亚洲| 亚洲欧美成人一区二区三区| 久久精品电影| 欧美日韩国产美| 国产啪精品视频| 亚洲欧洲日本国产| 亚洲一二三区在线| 久久久人成影片一区二区三区 | 久久gogo国模裸体人体| 蜜臀91精品一区二区三区| 欧美日韩亚洲精品内裤| 国产一区二三区| 一本久道综合久久精品| 久久久999国产| 亚洲欧洲精品成人久久奇米网| 亚洲一级高清| 欧美激情 亚洲a∨综合| 国产欧美精品一区aⅴ影院| 亚洲第一视频| 久久高清一区| 一区二区三区精品视频| 久久米奇亚洲| 国产精自产拍久久久久久| 日韩视频第一页| 狠狠色丁香婷婷综合久久片| 亚洲三级免费| 久久米奇亚洲| 夜夜嗨av一区二区三区网站四季av| 欧美在线亚洲一区| 国产精品美女www爽爽爽视频| 亚洲高清电影| 久久久噜噜噜久久中文字免| 一本色道久久综合亚洲二区三区| 麻豆精品精品国产自在97香蕉| 国产欧美在线视频| 亚洲欧美日韩另类精品一区二区三区 | 91久久久在线| 久久中文字幕导航| 羞羞答答国产精品www一本| 欧美日韩一区二区三区在线看| 在线免费一区三区| 久久精品一区二区三区四区| 亚洲一区二区三区中文字幕| 欧美日韩久久精品| 中文国产一区| 一区二区冒白浆视频| 欧美日韩一级视频| 亚洲一区二区精品| 中文亚洲欧美| 国产精品视频一二| 欧美中文在线免费| 欧美在线观看一区| 一区二区自拍| 欧美国产大片| 欧美日产一区二区三区在线观看| 99国产精品99久久久久久| 亚洲欧洲日产国产网站| 欧美日本免费| 亚洲无线一线二线三线区别av| 一二美女精品欧洲| 国产精品一二一区| 久久综合色天天久久综合图片| 久久精品人人做人人爽| 国内精品99| 欧美激情一二三区| 欧美日韩www| 亚洲欧美国产不卡| 欧美一区二区三区成人| 亚洲大片在线| 亚洲美女中文字幕| 国产精品一区毛片| 鲁大师影院一区二区三区| 免费精品99久久国产综合精品| 日韩一区二区福利| 亚洲主播在线观看| 亚洲国产精品久久久久久女王| 日韩视频在线你懂得| 国产精品欧美久久| 美腿丝袜亚洲色图| 欧美日韩国产成人| 久久精品国产免费观看| 欧美 日韩 国产在线| 亚洲欧美日韩国产精品| 久久久一区二区三区| 亚洲三级网站| 亚洲天堂第二页| 国产精品成人国产乱一区| 羞羞视频在线观看欧美| 久久久久成人精品| 一本大道久久精品懂色aⅴ| 亚洲性视频h| 在线精品高清中文字幕| 99一区二区| 极品少妇一区二区三区| 亚洲精品影视| 激情综合色丁香一区二区| 亚洲免费av片| 伊人精品久久久久7777| 亚洲最新合集| 亚洲狠狠丁香婷婷综合久久久| 亚洲婷婷综合久久一本伊一区| 狠狠综合久久av一区二区老牛| 亚洲美女av网站| 亚洲国产免费看| 久久精品99久久香蕉国产色戒| 国产精品99久久久久久宅男| 久久久水蜜桃av免费网站| 欧美在线一级视频| 国产精品美腿一区在线看| 亚洲免费大片| 亚洲乱码国产乱码精品精| 久久久久网址| 狂野欧美激情性xxxx欧美| 国产精品自拍一区| 亚洲一区二区黄色| 亚洲字幕在线观看| 欧美日韩一区二区三区高清| 亚洲欧洲在线看| 在线观看日韩精品| 久久久久久一区二区| 久久伊伊香蕉| 一区二区三区在线免费视频| 欧美在线一区二区| 久久中文精品| 亚洲第一精品福利| 噜噜爱69成人精品| 欧美激情第三页| 亚洲看片网站| 欧美人与禽性xxxxx杂性| 亚洲国产精品视频一区| 最新日韩中文字幕| 欧美激情精品久久久久久蜜臀| 亚洲第一二三四五区| 亚洲欧洲一区二区三区在线观看| 麻豆精品视频在线观看| 亚洲欧洲精品一区二区三区 | 亚洲精品看片| 中文欧美字幕免费| 国产精品视频免费在线观看| 亚洲欧美欧美一区二区三区| 性色av一区二区三区在线观看 | av成人国产| 在线亚洲成人| 亚洲欧美日韩电影| 国产欧美一区二区三区视频| 亚洲欧美日韩一区二区三区在线| 久久精品五月| 亚洲国产精品久久久久久女王| 欧美激情一区二区三区| 亚洲视频在线看| 美女精品国产| 亚洲在线不卡| 激情一区二区三区| 欧美激情一区二区| 亚洲欧美国产三级| 欧美成人精品h版在线观看| 一二三区精品| 国产一区二区观看| 欧美经典一区二区三区| 午夜国产精品视频| 91久久精品一区二区三区| 午夜国产精品视频免费体验区| 在线免费精品视频| 国产精品日韩二区| 欧美成人激情视频| 亚洲欧美日韩天堂一区二区| 欧美成人在线免费观看| 亚洲欧美成aⅴ人在线观看| 国内精品久久久久伊人av| 欧美日韩的一区二区| 久久精品av麻豆的观看方式| 亚洲免费观看在线视频| 久久亚洲捆绑美女| 午夜免费日韩视频| 亚洲黄色av| 国产综合亚洲精品一区二| 欧美日韩在线播放| 美脚丝袜一区二区三区在线观看| 亚洲影视九九影院在线观看| 欧美激情中文字幕一区二区| 午夜精品视频在线观看| 日韩系列欧美系列| 在线电影欧美日韩一区二区私密| 国产精品私拍pans大尺度在线| 欧美久久久久| 欧美粗暴jizz性欧美20| 久久成人精品无人区| 亚洲在线第一页| 制服丝袜亚洲播放| 日韩午夜免费视频|