|
Silverlight與企業信息化
在企業應用系統中,企業客戶不在滿足于呆板的Portal、樹形結構、數據堆積的表格和滿屏的文字描述。企業客戶越來越倡導用戶體驗,Silverlight迎合了這種需求,實現了炫目的體驗和豐富交互的應用,更重要的是Silverlight更適合企業應用系統的開發,依靠.NET平臺,使用C#高級語言代替JavaScript腳本語言,實現了強大的客戶端計算能力、支持多線程,豐富的控件、特效與動畫,更可控的瀏覽器適應性,更安全的沙箱模式,客戶端嵌入式數據庫等。
現在企業應用開發有兩大陣營,一個是Java,另一個是.NET平臺,難道Silverlight只能服務于后者嗎?答案:不是。Silverlight定位于,可以快速部署到瀏覽器中的富互聯網應用。Silverlight將要覆蓋的領域是“客戶端應用程序”和“媒體體驗”。Silverlight是為連接到主機的網頁內容而設計的,其特點是不但用戶可深入地參與到交互中,而且應用還可在任何瀏覽器中運行。
圖1 Silverlight各組件之間的關系
“Silverlight應用”運行于瀏覽器中的“XAP文件”本身需要使用Microsoft Visual Studio 工具開發,就像“Flash應用”運行于瀏覽器中的“SWF文件”需要使用AdobeFlex工具開發一樣。“Silverlight應用”可以和“Flash應用”一樣嵌入到已有的網頁中運行,“應用本身”需要數據時再去向后端服務器通訊,例如:“Flash應用”經常使用的從服務器下載“XML數據文件”后再顯示于應用中的通訊方案。
Silverlight應用通信原型
Silverlight內嵌在HTML網頁中,自然就包含在web瀏覽器的沙箱內。非常重要的一點是,在Silverlight運行的客戶端機器并不需要安裝.NET。運行Silverlight應用所需的必要資源全都包含在Silverlight瀏覽器插件中,所有互操作場景都建立在Silverlight之上。Silverlight應用的最終生的XAP文件,在被用戶下載到本地后所有通信任務都是由前端的Silverlight應用通過網絡訪問后端Server的數據,以回傳綁定顯示在UI之上。Silverlight支持廣泛的網絡能力如:REST、SOAP、POX,RSS及標準HTTP服務等網絡技術的調用,這部分對前端的Silverlight特別重要。下面所示是通信原型:
圖2 Silverlight通信原型
前端的Silverlight通過網絡訪問后端服務器的數據,并以在UI之上綁定顯示回傳數據的過程分為以下步驟:
- 內嵌在HTML網頁中Silverlight應用發起請求或回傳數據。
- 客戶端內存中的“請求”或“數據”被序列化為可傳輸的字符串,并發送到服務器。
- 服務器接收并反序列化傳輸的字符串為請求或數據到服務端內存中處理。
Silverlight通信技術
Silverlight提供了豐富的與服務器端通信能力,目前Silverlight支持TCP、UDP、Socket等網絡協議,以及HttpHandler、WebServices等多種應用層協議,還可以通過WCF RIA Service數據“透明”訪問方式(通過向客戶端公開數據訪問層,屏蔽了通信層手工編碼)快速實現實體通信。下面所示為可用于Silverlight的通信技術:
圖3 用于Silverlight的通信技術
Silverlight 運行時支持若干將網絡應用程序與遠程主機進行連接的主要方法:
序號 | 命名空間 | 類 | 用途 |
1 | System.NET | WebClient HTTP | 這些類使用 HTTP 或 HTTPS 協議來進行網絡通信 |
2 | System.NET.Sockets | 套接字 | 這些類提供一個低級別的套接字接口,該接口可用于更常規的使用單播的網絡通信 |
3 | System.NET.Sockets | UdpAnySourceMulticastClient UdpSingleSourceMulticastClient | 這些類為 UDP 多路廣播客戶端提供支持 |
Silverlight 運行時直接支持的連接方法,都可用于非.NET平臺的技術平臺如:Java和php等。
數據或命令要正常交換要具備兩個必要條件:渠道和通用語義。這里的渠道就是與遠程主機的連接方法,這里的通用語義指的就是:“序列化與反序列化”。當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以可保持或傳輸的格式在網絡上傳送。把對象轉換為可保持或傳輸的格式的過程稱為對象的序列化。把可保持或傳輸的格式恢復為對象的過程稱為對象的反序列化。
序號 | 類型 | 通途 |
1 | 二進制序列化 | 保持類型保真度,這對于在應用程序的不同調用之間保留對象的狀態很有用例如,通過將對象序列化到剪貼板,可在不同的應用程序之間共享對象。 |
2 | XML 序列化 | 不保持類型保真度,當您要提供或使用數據而不限制使用該數據的應用程序時。 |
3 | JSON序列化 | 不保持類型保真度,一種通用的數據格式,有著存儲體積小的特點。 |
Silverlight應用整合
在原有應用集成方面,如果服務器端使用.NET平臺,那么Silverlight客戶端程序可以重用原有通信方式,而不必對服務器端程序有較大改動,如果服務器端使用Java平臺,Silverlight也提供標準WebServices、Http、Socket多種交互方式進行通信,服務器端只要進行簡單的服務封裝就可以實現與Silverlight客戶端的數據通信。因此,Silverlight基于.NET提供了快速與服務器端程序集成的能力。事實上,在筆者所開發的項目中,已經實現了Silverlight客戶端與.NET、J2EE(通過REST接口)、Tuxedo(通過SALT接口)的數據通信。
圖4 原有應用集成
因此,Silverlight基于.NET提供了快速與服務器端語言集成的能力。事實上,在筆者所開發的項目中,已經實現了Silverlight客戶端與.NET、J2EE(通過REST接口)、Tuxedo(通過SALT接口)的數據連通性。
Silverlight 以前對于支持網絡的插件的設計將連接性限制到主機或源站點。這意味著,Web 應用程序只能向后與其部署服務器通信,因此,網絡應用程序可以連接到從中下載它們的主機。Silverlight 2 和更高版本包括對跨域連接的支持,這使得應用程序可以訪問并非源站點的其他位置中的資源。這是一個重要的功能,它使 Silverlight 應用程序可以使用 Web 上的現有服務。
結束語
企業客戶越來越認識到RIA技術對于企業應用的重要性,而Silverlight就是實現企業應用RIA重要的選擇之一。Silverlight 定位于“客戶端應用程序”,無論是互聯網應用中,還是企業應用中,都可以為使用者帶來的愉悅感和價值感。在Silverlight的數據與通信的中,除了通信渠道與序列化的問題外,最值得注意的兩點:異步模式與同步模式的區別、不同開發平臺的數據類型匹配問題。
NET技術:Silverlight 應用整合,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。