2018/05/04

[備忘錄分享] 簡介曾經做過的 Smart Client 架構

大約是 2006 年,那時的我從使用 C++ 寫遊戲程式轉換到使用 .net 寫視窗與網頁程式。
當時的工作是我從資策會學完 .net 之後的下一份工作。工作的內容是和公司的前輩一起製作一個電視購物的 ERP (Enterprise Resource Planning) 系統,主要的子系統如下,
  1. 提供給電話客服人員使用的訂單系統。
  2. 提供給物流人員使用的進銷存系統。
當時希望採用微軟在 2004 年提出的 Smart Client 架構,這個架構簡單的來說就是要取 Window Form 程式與 ASP.NET 網頁程式的優點並且捨棄它們的缺點。

傳統的 Window Form 程式,定位為 Rich Client (又叫 Fat Client, Thick Client),
相較於當時的網頁程式,Window Form 能夠使用更豐富的 UI 元件提供給使用者互動,但是缺點就是不易更新使用者手上的程式,每次的程式更新都得打包安裝檔並且讓每個使用者下載與安裝,不像網頁程式用瀏覽器只要重新打開原本的連結,網頁內容隨時都是最新版本。這個問題在使用者越多時會越令人頭痛。

網頁程式,定位為 Thin Client,
不像現在 2018 年,當時的網頁程式連 ajax 都還沒流行,網頁程式能提供給使用者的 UI 都很陽春,和視窗程式有很大的落差。不過其優點就像上一條提到的,發佈更新很方便,只要重新打開原本的連結,網頁內容隨時都是最新版本。

而 Smart Client 就是要取上述兩種的優點,要有 Window Form 程式的豐富 UI ,而且發佈更新像網頁程式一樣方便。

以下簡介當時製作的 Smart Client 系統架構,


在這個 Smart Client 系統架構圖中,

1-1. ~ 1-3.
開發者使用 SQL Server 建置系統的資料庫與各項功能的 Stored Procedure (以下簡稱 SP)。
使用 ASP.NET 製作 Web Service 程式,程式內容大部分是透過 SP 存取資料庫。
使用 Window Form 製作這個 ERP 系統所有功能的 UI 介面(登入、查詢、檢視、新增、修改、刪除),程式中所有的資料存取皆透過 Web Service。
最後將 Window Form 程式使用 ClickOnce 發佈到 Web Server 成為一個安裝連結,ClickOnce 提供一個網頁,網頁內容提供的的超連結是下載一個副檔名為 .application 的檔案。

2. 當使用者下載並開啟這個 .application 檔案,使用者端的 .net 會自動判斷有無安裝過此 Window Form 程式,若沒有就會下載安裝最新的 Window Form 程式,若有安裝過則會提示詢問使用者是否要下載安裝最新的程式。

3. 使用者使用安裝好的 Window Form 程式登入與操作所有功能。

4. Window Form 程式透過 Web Service 存取資料。

5. ASP.NET Web Service 程式存取資料庫。

* 當時在製作這個系統之前,我主要是看 MSDN 網站上的 Smart Client 系列文章來學習 Smart Client 是什麼,現在網站搬家後系列文章也不見了。不過我還留著當時的網頁存檔,在此提供給需要的人。

網頁存檔的下載連結 Smart Client系列文章.zip
壓縮檔內容如下,
作者:沈炳宏
Smart Client系列(1) - Smart Client的架構與設計原則
Smart Client系列 (2) - Smart Client 開發實務 - 使用 Web Services & SOA
Smart Client 系列(3) - 選擇使用網頁或視窗程式的考量
Smart Client 系列(4) - 設計與開發視窗介面的最佳實務


沒有留言:

張貼留言