|
1.Smart Client簡(jiǎn)介
Smart Client簡(jiǎn)稱智能客戶端,是Microsoft推出的一種將B/S(瘦客戶端)和C/S(胖客戶端)結(jié)合在一起的一種技術(shù)。Smart Client結(jié)合了B/S和C/S的優(yōu)勢(shì),具有新的特點(diǎn)。
Smart Client的優(yōu)點(diǎn)
易于升級(jí)
類似于B/S架構(gòu)的程序,只要在服務(wù)器上更新軟件,進(jìn)行簡(jiǎn)單配置,客戶端會(huì)自動(dòng)進(jìn)行軟件的更新。比如在服務(wù)器的站點(diǎn)上建立一個(gè)虛擬目錄,將客戶端應(yīng)用程序發(fā)布到該虛擬目錄中,客戶通過(guò)HTTP方式安裝更新程序。
富客戶端,強(qiáng)大的用戶界面,更好的用戶體驗(yàn)
Smart Client可以使用WinForm開發(fā)Client端程序,可以充分使用Winform上的各種控件和資源,突破B/S(瘦客戶端)在表現(xiàn)能力上的限制,WEB如果實(shí)現(xiàn)某些功能可能必須通過(guò)ActiveX或Applet。
充分利用Client端資源
充分使用客戶端的軟件資源和硬件資源。
可以支持在線使用和離線使用
B/S程序需要實(shí)時(shí)的網(wǎng)絡(luò)連接,數(shù)據(jù)交換和數(shù)據(jù)處理需要反復(fù)的請(qǐng)求響應(yīng),需要反復(fù)刷新頁(yè)面。Smart Client允許用戶將數(shù)據(jù)下載到Client端進(jìn)行離線的數(shù)據(jù)處理,當(dāng)用戶重新連接網(wǎng)絡(luò)時(shí),可以手動(dòng)或者自動(dòng)向服務(wù)端提交更新數(shù)據(jù)。
2.開發(fā)Smart Client需要解決的問(wèn)題
數(shù)據(jù)沖突
Smart Client 允許將數(shù)據(jù)保存到Client端,離線處理數(shù)據(jù),數(shù)據(jù)處理好之后向服務(wù)端提交,但是向服務(wù)端提交時(shí)會(huì)遇到并發(fā)的問(wèn)題,用戶離線處理的數(shù)據(jù)很有可能會(huì)出現(xiàn)數(shù)據(jù)沖突。Smart Client需要解決好并發(fā)數(shù)據(jù)沖突的問(wèn)題。
數(shù)據(jù)安全和應(yīng)用程序安全
離線處理意味著需要把數(shù)據(jù)存儲(chǔ)在本地,需要防范敏感數(shù)據(jù)的非授權(quán)訪問(wèn)。我們上面提到Smart Client可以通過(guò)HTTP的方式安裝部署和更新Client端程序,需要防范非授權(quán)的更新和程序運(yùn)行。
3.Smart Client技術(shù)點(diǎn)簡(jiǎn)介
Smart Client部署技術(shù)簡(jiǎn)介(OnceClick技術(shù)簡(jiǎn)介)
OnceClick技術(shù)允許以三種方式發(fā)布應(yīng)用程序,WEB方式、網(wǎng)絡(luò)共享目錄、媒體發(fā)布(如CDROM)等。WEB方式將應(yīng)用程序發(fā)布到站點(diǎn)或虛擬目錄,可以通過(guò)HTTP的方式安裝、更新應(yīng)用程序;網(wǎng)絡(luò)共享目錄將應(yīng)用程序發(fā)布到網(wǎng)絡(luò)中存在的公共目錄中,用戶可以通過(guò)共享目錄安裝更新應(yīng)用程序;媒體發(fā)布可以通過(guò)CDROM安裝應(yīng)用程序,然后通過(guò)其他方式為應(yīng)用程序通過(guò)更新。
Smart Client離線數(shù)據(jù)處理
Smart Client離線數(shù)據(jù)處理的方式有三種:數(shù)據(jù)庫(kù)同步、隔離存儲(chǔ)區(qū)、消息隊(duì)列。數(shù)據(jù)庫(kù)同步需要保持Client數(shù)據(jù)和Server端的數(shù)據(jù)庫(kù)同步;隔離存儲(chǔ)區(qū)需要在Client端開辟一塊空間存儲(chǔ)離線時(shí)的數(shù)據(jù);消息隊(duì)列是把數(shù)據(jù)處理提交給MQ,然后通過(guò)MQ提交到服務(wù)端(MQ只是一種提交數(shù)據(jù)的方式,并不能解決數(shù)據(jù)沖突的問(wèn)題)。下面用一個(gè)例子介紹隔離存儲(chǔ)區(qū)的實(shí)現(xiàn)方式:
隔離存儲(chǔ)區(qū)就是在Client端開辟一塊空間存儲(chǔ)離線時(shí)的數(shù)據(jù),在進(jìn)行隔離存儲(chǔ)區(qū)操作時(shí),我們將會(huì)用到一個(gè)非常有用的命名空間 - System.IO.IsolatedStorage。

using System.IO;
using System.IO.IsolatedStorage;
using System.Data;
namespace WaitHandleExample
{
class CacheHelper
{
/// <summary>
/// 將數(shù)據(jù)寫入本地文件
/// </summary>
/// <param name="data"></param>
/// <param name="fileName"></param>
public static void WriteDataSetToIsolatedStorage(DataSet data, string fileName)
{
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly();
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(fileName, FileMode.Create, isoStore))
{
using (StreamWriter writer = new StreamWriter(isoStream))
{
data.WriteXml(writer, XmlWriteMode.DiffGram);
}
}
}
/// <summary>
/// 從本地文件中讀出數(shù)據(jù)
/// </summary>
/// <param name="data"></param>
/// <param name="fileName"></param>
public static void ReadDataSetFromIsolatedStorage(DataSet data, string fileName)
{
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly();
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(fileName, FileMode.Open, isoStore))
{
using (StreamReader reader = new StreamReader(isoStream))
{
data.ReadXml(reader, XmlReadMode.DiffGram);
}
}
}
}
}
NET技術(shù):Smart Client技術(shù)簡(jiǎn)要總結(jié),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。