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