第四章 框架設計
第一節 三層式架構
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四章框架設計
本研究詴圖在雲端運算基礎之上發展滿足服務導向特色的應用程式框架架 構,詴圖將傳統的三層式架構,修改為符合可有效配置於雲端運算環境的運算結 構。本章先針對框架的核心物件與執行流程進行說明,再藉由交易策略評估帄台 之應用,以說明本架構之可行性。
第一節 三層式架構
展示層 (Presentation Layer)
View Components Model - View - ViewModel
View Models Control
View Models Data Binding
Data Binding
商業邏輯層 (Business Logic Layer)
Facade Task
BOManager Business Objects
Builder Business Objects
Commands
資料存取層 (Data Access Layer)
SQL
Server ADO.Net Data Provider
LINQ or DataSet Web Services
圖 16 三層式架構示意圖 (資料來源:本研究整理)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 16 為一般應用程式所使用之三層式架構圖,為展示層(Presentation Layer)、 商業邏輯層(Business Logic Layer)以及資料存取層(Data Access Layer),以下將 分述之。
一、 展示層
在 展 示 層 部 分 , 本 研 究 採 取 微 軟 所 提 出 的 WPF ( Windows Presentation Foundation)來實作,並實作 MVVM 模式(Model-View-ViewModel)。在 2005 年,
John Gossman 提出 Model-View-ViewModel 模式,是 MVC 的一種變型。
View:其實就是 XAML 檔,也就是使用者介面。使用者介面設計人員只需要 在 Blend 中進行對它的編輯,並透過 Binding 來和 ViewModel 溝通,可將 DataContext 指定為某個 ViewModel,以更進一步的與其中的屬性進行 Binding。
ViewModel:顧名思義,ViewModel 就是供 View 使用的 Model,透過公開的 屬性(public property)給 View 進行 Binding 並供其使用。
Model:用來描述資料實體(Entity)的簡單類別(Class),可在 Model 部分實作商 業邏輯以及與資料庫溝通等資料存取相關的功能。
二、 商業邏輯層
商業邏輯層中,本研究使用設計模式中的 Facade 模式,可以簡化程式庫的使 用、隱藏所依賴的程式庫、降低對程式庫的耦合、有利於分工合作。為了提供給 不同的用戶端適當的介面及跨系統整合等需求,所以把傳統商業邏輯層分為數個 Components,最上層的物件是 Facade,提供適當的介面給各種用戶端呼叫,Façade 將去找尋對應的 Command,Command 負責區隔開呼叫程序方法的物件實體以及實 際提供物件方法的物件實體,也就是說將動作的要求者以及動作的執行者之間鬆 綁,這將簡化新增新命令物件的作法,因為已經存在的命令物件不需要被變動到,
也就是說 若把每個特定的動作都封裝成物件來處理,每個特殊的動作都有其對應 的物件,就不會對既有的物件產生影響,因此相當適合用於 SOA 此種各種服務低 耦合的情境中。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Business Objects 則是商業邏輯層中,實際提供業務邏輯進行運算的物件,當 某服務需要商業物件時,Business Objects 統一由 Business Objects Builder 從資料庫 或資料庫叢集中取出存放至記憶體中,以完成商業物件的初始化,並由 BO Manager 統一管理,如此可避免商業物件重複由資料庫中進行存取,以提升效能。
三、 資料存取層
資料存取層所定義的就是將資料的存取,與應用程式的邏輯分開。資料存取 層的特性包括:資料存取層不包含任何的商業邏輯,且可以抽出成為實體不同主 機的分層,而當資料庫更換時,只需修改資料存取層,不需修改商業邏輯層或者 介面層的程式。本研究使用微軟提出的 ADO.NET Entity Framework,其是微軟以 ADO.NET 為基礎所發展出來的物件關聯對應 (O/R Mapping) 解決方案,Entity Framework 利用了抽象化資料結構的方式,將每個資料庫物件都轉換成應用程式 物件 (entity),而資料欄位都轉換為屬性 (property),關聯則轉換為結合屬性 (association),讓資料庫的 E/R 模型完全的轉成物件模型,如此讓程式設計師能用 最熟悉的程式語言來呼叫存取。而在抽象化的結構之下,則是高度整合與對應結 構 的 概 念 層 、 對 應 層 和 儲 存 層 , 以 及 支 援 Entity Framework 的 資 料 提 供 者 (provider),讓資料存取的工作得以順利與完整的進行。
因此本研究將此種三層式架構,詴圖在雲端環境上以 SOA 的方式實現,並修 改為如圖 18,並解說於第四章第二節。
‧
圖 17 為本研究提出之雲端服務三層式架構圖,分別為服務展示層(Presentation Layer)、服務協調層(Service Orchestration Layer)以及資料存取層(Data Access Layer),以下將分述之。
服務介面層 (Presentation Layer)
View Components Model - View - ViewModel
View Models Control
View Models Data Binding
Data Binding
服務協調層 (Service Orchestration Layer)
Facade Task
BOManager Business Objects
Builder Business Objects
Commands
資料存取層 (Data Access Layer)
ADO.Net Data Provider LINQ or DataSet WCF Services
Request / Result
WCF Services
DB
Asynchronous Call Agent
Service A
Service B
Service C
…..
Services
圖 17 雲端服務三層式架構 (資料來源:本研究整理)