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

using System.IO;
using System.IO.IsolatedStorage;
using System.Data;
namespace WaitHandleExample
{
class CacheHelper
{
/// <summary>
/// 將數據寫入本地文件
/// </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>
/// 從本地文件中讀出數據
/// </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技術:Smart Client技術簡要總結,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。