簡介
這是一個原應用程序建構在 IIS 6.0、COM 1.5、MSMQ 3.0的網絡訂單處理系統,利用Application Server 的新增功能,在對源代碼作稍許修改的情況下,對應用程序進行擴展,使之成為具有分單及自動化審核的新程序架構,真正達到“Do more with less”。
首先當我們計劃建立一個電子商務網站,需要考慮的網絡交易機制基本功能可能有下列幾項:客戶能在 Internet 24小時完成交易,而業務人員僅可能在某些時段進行審閱訂單,在不希望遺失任何一筆訂單機會且能非同步完成審核作業的前提下,用現有技術也可以簡單地實現,將應用程序部署在 IIS 上,透過 COM 組件將訂單資料先暫存於 MSMQ,業務人員從隊列讀取並審核訂單資料,確認訂單後再 通過 COM 組件寫入數據庫,系統架構示意圖如下:
原系統架構圖
當網站開始營運後,可能陸續引發當初規劃時始料未及的需求,每當新需求產生後,程序開發人員便開始重新評估可行性、系統分析設計、編寫程序或修改、測試與部署等一連串的繁重的系統開發工作,現在 Windows 2003 所具有的 Application Server 服務平台,在原本服務中新增加許多頗具彈性的功能及作法,使應用程序系統更具安全性、延展性和可管理性。
在上述范例中,我們可能會因使用者的不同,當完成網絡下單後,系統能對應不同的作業流程,例如 VIP 級的客戶或業務人員代理客戶下單時,系統能直接完成確認訂單,省略人工審核作業,而其他使用者(一般客戶)仍遵循原作業流程。將原系統架構重新調整如下圖:
新系統架構
應用 IIS 6.0 應用程序區域及 COM 分區(Partitions) 特性,將接單訂單資料分別暫存不同隊列中,自動化審閱訂單的流程,可以使用 MSMQ 中的觸發程序完成訂單審核,並調用原有的 COM 組件執行資料處理,整個系統架構看似兩個截然不同的應用程序,實際上僅進行少許程序開發,其余的系統改造部份均由 Application Server 平台服務來完成。透過范例程序逐步指引完成,應可以更加明了如何運用 Application Server 所帶來的益處。
系統需求
操作系統:Windows 2003
Services:請確認以下服務均以安裝並啟動
IIS 6.0
COM 1.5
MSMQ 3.0
方法是:添加/刪除 Windows 組件 >> Application Server >> 按 [詳細信息] >> 選中 [消息隊列服務] >> 按 [確定] >> 按 [下一步] >> 按 [完成]
SMTP
方法是:添加/刪除 Windows 組件 >> Application Server >> 按 [詳細信息] >> 選擇[Internet 信息服務(IIS)] >> 按[詳細信息] >> 選中 [SMTP Service] >>按 [確定] >> 按 [下一步] >> 按 [完成]
SQL Server 2000
Setup 原系統應用程序
源程序代碼解壓縮後(以下說明出現 %Root% 表示此路徑),計有以下三個文件夾:
DataBase
Doc
SampleCode:包含 iFDemoApplication、iFDemoService 兩個文件夾。
請按下列步驟安裝:
1、安裝 Trade 數據庫
開啟 [SQL Server 企業管理器]。
Microsoft SQL Server >> SQL Server 組 >> (local)(Windows NT) >> 數據庫 >> 按右鍵 >> 所有任務 >> 還原數據庫。
設定 [還原成數據庫] 輸入:Trade。
選擇 [從設備] 還原 >> 按 [選擇設備] >> 按 [添加]。
按 […] >> 選擇 %Root%\DataBase 文件夾。
選定 [文件名稱] 輸入:Trade.dmp 。
連續按 3 次 [確定] >> 等候完成再按 [確定]。
關閉 [SQL Server 企業管理器] 。
修改表 config 中的記錄為有效的 SMTP 服務器地址。
修改表 Users 中 Email 的字段,將其設定為有效的 Email。
2、部署 Server 端組件及設定
用資源管理器打開 %Root%\SourceCode\iFDemoService 文件夾
執行 [Visual Studio .NET 2003 vsvars32] 進入控制台命令行
在控制台命令行中輸入 buildall,按回車生成應用程序
生成完畢後關閉控制台命令行窗口
3、COM 應用程序授權
打開 [組件服務]。
展開 組件服務 >> 計算機 >> 我的電腦 >> COM+ 應用程序 >> iFDemoOrderEntry >> 角色 >> OrderEntryRole >> 用戶
按 [右鍵] >> [新建] >> [用戶] >> 輸入:Network >> 按 [確定]
4.安裝效能計數器及環境變數
用資源管理器打開 %Root%\SourceCode\iFDemoService\SetupConfig\bin文件夾。
執行 SetupConfig.exe。
5.安裝 Web 應用程序
打開 [Internet 服務管理器]。
Internet 信息服務 >> (本地計算機) >> 默認 Web 站點 >> 按 [右鍵] >> [新建] >> [虛擬目錄]。
按 [下一步] >> 在 [別名] 中輸入:iFDemoWeb。
按 [下一步] >> 按 [浏覽] 選擇目錄>> 選澤 %Root%\iFDemoApplication\iFDemoApplication\iFDemoWeb。
按 [確定]。
按 [下一步] >> 按 [下一步] >> 按 [完成]。
用資源管理器打開 %Root%\SourceCode\iFDemoApplication\iFDemoWeb 文件夾
用記事本打開 Web.config。
修改 ConnDBString 的 Value 設定為 SQL Server 連接字符串。
打開浏覽器,輸入網址:http://localhost/iFDemoWeb 檢查網頁是否正常啟用,若否檢查本項步驟是否正確。
6.安裝 Windows 管理程序
打開 %Root%\iFDemoApplication\iFDemoAdmin\bin 文件夾。
用記事本打開 iFDemoAdmin.exe.config。
修改 ConnDBString 的 Value 設定為 SQL Server 連接字符串。
7.測試結果
打開浏覽器,輸入網址:http://localhost/iFDemoWeb。
測試登入:
i.VIP客戶使用者名稱:user1,密碼:9999
ii.一般客戶使用者名稱:user2,密碼:9999
iii.內部業務員名稱:sales1,密碼:9999
執行下單作業
i.按產品編號右側 [選擇] >> 打開 [選擇產品窗口] >> 選擇產品分類 >> 選擇產品一覽表中按 [訂購]。
ii.回到主畫面中 >> 按 [加入訂購明細]。
iii.可依上述步驟加入多項明細。
iv.按下 [確認訂單] 即完成下單作業。
執行審核作業
i.打開 %Root%\iFDemoApplication\iFDemoAdmin\bin\ 文件夾,執行 iFDemoAdmin.exe。
ii.[客戶訂單處理] 窗口中,按下 [讀取資料]。
iii.按 [確認訂單] 即完成審核,記錄被添加到 SQL Server,同時系統發出 Email。
iv.按 [取消訂單] 即取消該筆記錄。
Setup 新架構應用程序
1、新增本地用戶,目的是 IIS 要添加 Pooling 以便指定此用戶帳號。
打開控制面板中的管理工具 >> 計算機管理。
管理工具 >> 本地用戶和組 >> 用戶 >> 按 [右鍵] >> 新用戶。
在用戶名稱中輸入:NetUser1,輸入密碼並確認密碼 >> 取消 [用戶下次登入時須更改密碼] >> 選中 [密碼永 不過期] >> 按 [創建] >> 按 [關閉]。
選擇 NetUser1 >> 按 [右鍵] >> [屬性] >> 選擇 [隸屬於] 標簽。
按 [添加] >> 輸入:IIS_WPG >> 按 [確定] 。
按 [添加] >> 輸入:Performance Log Users >> 按 [確定] 。
按 [添加] >> 輸入:Performance Monitor User >> 按 [確定] 。
按 [確定]。
2.在IIS 6.0上建立新的應用程序區域:
Internet 信息服務 >> (本地計算機) >> 應用程序區域 >> 按 [右鍵] >> [新 建] >> [應用程序區域] 。
[應用程序區域標識]輸入:AppPoolDemo >> 按 [確定]。
Internet 信息服務 >> (本地計算機) >> 應用程序區域 >> AppPoolDemo >> 按 [右鍵] >> [屬性] 。
選擇 [身份標識] 標簽 。
選中 [設置為],在用戶名稱欄輸入:NetUser1,輸入密碼
按 [確定]。
3.在新的應用程序集區中以原程序碼建立應用程序:
打開 [Internet 服務管理器]。
Internet 信息服務 >> (本地計算機) >> 網站 >> 默認 Web 網站 >> 按 [右鍵] >> [新 建] >> [虛擬目錄]。
按 [下一步] >> 在 [別名] 中輸入:App1Demo 。
按 [下一步] >> 按 [浏覽] >> 選擇 %Root%\iFDemoApplication\iFDemoApplication\iFDemoWeb 。
按 [確定] >> 按 [下一步] >> 按 [下一步] >> 按 [完成]
Internet 信息服務 >> (本地計算機) >> 網站 >> 默認 Web 網站 >> >> App1Demo >>按 [右鍵] >> [屬性] 。
在 [虛擬目錄] 標簽頁下方的 [應用程序區域] 選擇 AppPoolDemo
4.修改登入畫面的程序代碼
啟動 Microsoft Visual Studio.NET >> 打開 >> 項目 >> 選擇 %Root%\ SourceCode\Solution.sln
在 [解決方案] 所列的項目中打開 iFDemoWeb\Login.aspx 源代碼文件,將
#Region " 原架構 "
......
#End Region
中的程序代碼選取並將它注釋掉,使程序不執行。
在 Login.aspx.vb 源代碼文件
#Region " 新架構程序碼 "
......
#End Region
中的程序代碼選取並取消注釋,使程序可執行。
重新生成項目:[生成] >> [生成 iFDemoWeb]。
5.生成第二個消息隊列,並設定其觸發程序
打開 [管理工具] >> [計算機管理]。
計算機管理(本地) >> 服務和應用程序 >> 消息隊列 >> 觸發程序 >> 規則 >> 按 [右鍵] >> [新增] >> [規則] 。
在規則名稱輸入:TransferOrder >> [下一步] 。
[條件:] 請選擇 信息標簽不包含,[篩選器數值/字串:] 請輸入 Customer >> 按 [新增] >> 按[下一步]。
在[組件ProgID]中請輸入:iFDemo.OrderProcess.QueueTrigger,在[方法名稱] 中請輸入:Transfer。
按 [參數] >> 打開 [調用參數] 窗口 。
選擇參數的下拉菜單中的 [隊列路徑名稱(String 類型)] >>按[新增] ,[消息ID(Variant 類型)] >>按[新增] >> 按 [確定] >> 按[完成]。
計算機管理(本地) >> 服務和應用程序 >> 消息隊列 >> 專用隊列 >> 按 [右鍵] >> [新增] >> 專用隊列 。
在 隊列名稱 中輸入:iFDemo_ExpressOrder >> 按 [確定] 。
展開 iFDemo_ExpressOrder >> 觸發程序 >> 按 [右鍵] >> [新增] >> [觸發程序] 。
在[觸發程序名稱]中輸入:TriggerTransferOrder >> 按 [下一步]。
左側 [規則] 中選取 TransferOrder >> 按 [附加] >> 按 [完成]。
6.建立 COM 分區
打開 [組件服務]。
主控台根目錄 >> 組件服務 >> 我的電腦 >> 按 [右鍵] >> [屬性]
選擇 [選項] 標簽頁,選中 [啟用分隔] >> 按 [確定] 。
主控台根目錄 >>組件服務 >> 我的電腦 >> COM 分區 >> 按 [右鍵] >> [新增] >> [分區] >> [下一步] 。
按 [建立一個空的分區] >> 在 [名稱] 中輸入 COMPart2 >> [下一步] >> [完成]。
7.指定 COM 分區用戶
主控台根目錄 >>組件服務 >> 我的電腦 >> COM 分區用戶 >>按 [右鍵] >> [新增] >> [使用者] 。
按 [新增] >> 輸入:NetUser1 >> [確定] >> [確定]。
主控台根目錄 >>組件服務 >> 我的電腦 >> COM 分區 >> COMPart2 >> 角色 >> 啟動器 >> [用戶使用者] 。
按 [新增] >> 輸入:NetUser1 >> [確定] >> [確定]。
8.在新的 COM 分區中建立 COM 應用程序
主控台根目錄 >>組件服務 >> 我的電腦 >> COM 分區 >> COMPart2 >> COM 應用程序 >>按 [右鍵] >> [新增] >> [應用程序] 。
[下一步] >> [建立空的應用程序] >> 輸入 iFDemoExpressOrder >> 按4次 [下一步] >> [完成] 。
選擇 iFDemoExpressOrder>> 組件 >> 按[右鍵] >> [新增] >>組件
[下一步] >> 安裝新組件 >> 選擇
%Root%\ iFDemoService\OrderEntry\bin\iFDemo.OrderEntry.dll
>> [開啟] >> [下一步] >> [完成] 。
展開 iFDemoExpressOrder >> 組件 >> iFDemo.OrderProcess.OrderEntry >> 按[右鍵] >> [屬性] 。
選擇 [啟動標簽] >> 選中 [啟動對象建立] >> 在 [建立函數字符串] 中請輸入:.\\private$\\iFDemo_ExpressOrder。
主控台根目錄 >>組件服務 >> 我的電腦 >> COM 分區 >> COMPart2 >> COM 應用程序 >> iFDemoExpress >> 角色 >> OrderEntryRole >> 用戶
按 [右鍵] >> [新增] >> [用戶] >> 輸入:NetUser1 >> 按 [確定]
9.測試結果
打開浏覽器輸入網址:http://localhost/iFDemoWeb,
用VIP客戶用戶名稱:user1,密碼:9999,登入成功後網址應為http://localhost/App1Demo/Order/OrderProcess.aspx,接續完成下單作業,系統將直接確認訂單並發出 Email。
一般客戶用戶名稱:user2,密碼:9999,登入成功後網址應為http://localhost/iFDemoWeb/Order/OrderProcess.aspx,接續完成下單作業,系統將訂單 記錄保留在消息隊列中,等候執行 %Root%\iFDemoApplication\iFDemoAdmin\\bin\ iFDemoAdmin.exe
進行訂單人工審核確認作業。
用業務用戶名稱:sales1,密碼:9999,登入成功後網址應為http://localhost/App1Demo/Order/OrderProcess.aspx,接續完成下單作業,系統將直接確認訂單並發出 Email。
下載源代碼:http://www.vckbase.com/code/downcode.asp?id=2560 (或者用自己的壓縮包)