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