我們這篇開始講:建立 N 層資料應用程式
1.“N 層”資料應用程式是指用於訪問資料且分為多個邏輯層的應用程式。通過將應用程式組件分離到相對獨立的層中,
可以提高應用程式的可維護性和延展性。該結構之所以具有這種優點,是因為它有利於採用可應用於單個層而無需重新設計整個解決方案的新技術。
N 層體繫結構包括一個展示層、一個中介層和一個資料層。中介層通常包括資料訪問層、商務邏輯層和共用組件(例如身分識別驗證和驗證)。
資料層則包括關聯式資料庫。N 層應用程式通常將敏感資訊儲存在中介層的資料訪問層中,目的是將它們與訪問展示層的終端使用者隔離。
2.在 N 層應用程式中,分離各層的一種方法是為要包括在應用程式中的每一層建立相互獨立的項目。
類型化資料集包含一個 DataSet Project 屬性,該屬性決定了產生的資料集和 TableAdapter 代碼應歸屬到哪些項目中。
3.本執行個體示範如何使用“DataSet 設計工具”將資料集和 TableAdapter 代碼分離到相互獨立的類庫項目中。
分離資料集和 TableAdapter 代碼後,將建立 WCF服務以調入資料訪問層。
最後,要建立一個 Windows 表單應用程式並將其用作展示層。該層將訪問資料服務中的資料。
4.建立一個winForm應用程式:RefactorNTierWalkthrough
5.建立用於儲存資料集的類庫:DataEntityTier
6.建立用於儲存TableAdapter的類庫:DataAccessTier
7.建立類型化資料集。類型化資料集通過單個項目中的資料集類(包括 DataTable 類)和 TableAdapter 類建立 (所有這些類都將產生到單個檔案中)。
在將資料集和 TableAdapter 分離到不同的項目中時,移到另一個項目中的是資料集類,TableAdapter 類則留在原始項目中。
因此,應在最終包含 TableAdapter 的項目(DataAccessTier 項目)中建立資料集。
a)選中項目:DataAccessTier
b)添加資料來源
此時項目結構:
8.將 TableAdapter 與資料集分離
建立資料集後,接著是要將產生的資料集類與 TableAdapter 分離。
通過將“資料集項目”屬性設定為要用於儲存分離出的資料集類的項目的名稱,可以達到此目的。
a)雙擊NorthwindDataSet.xsd
b)單擊設計器上的空白地區。
c)在“屬性”視窗中尋找“資料集項目”節點。
d)在“資料集項目”列表中,單擊“DataEntityTier”。
資料集和 TableAdapter 被分離到兩個類庫項目中。最初包含整個資料集 (DataAccessTier) 的項目現在只包含 TableAdapter。
“資料集項目”屬性中指定的項目 (DataEntityTier) 則包含類型化資料集:NorthwindDataSet.Dataset.Designer.cs。
此時的項目結構如下:
9.建立wcf服務應用程式:DataService
10.右擊CustomersTableAdapter,點擊“添加查詢”
11.GetOrders同10
12.向資料服務中添加對資料實體和資料訪問層的引用
13.修改DataService中IService1.cs的代碼:
View Code
[ServiceContract] public interface IService1 { [OperationContract] DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers(); [OperationContract] DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders(); }
修改DataService中Service1.cs的代碼
View Code
public class Service1 : IService1 { public NorthwindDataSet.CustomersDataTable GetCustomers() { var customersTableAdapter = new DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter(); return customersTableAdapter.GetCustomers(); } public NorthwindDataSet.OrdersDataTable GetOrders() { var ordersTableAdapter = new DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter(); return ordersTableAdapter.GetOrders(); } }
14.發布wcf服務到iis
15.RefactorNTierWalkthrough項目添加對DataEntityTier項目的引用,
添加wcf服務引用
16.向表單中添加兩個資料繫結 DataGridView
後台代碼:
View Code
private void button1_Click(object sender, EventArgs e) { ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); northwindDataSet.Customers.Merge(client.GetCustomers()); northwindDataSet.Orders.Merge(client.GetOrders()); }
17.增加服務所允許的最大訊息大小
由於服務會返回 Customers 和 Orders 表中的資料,而 maxReceivedMessageSize 的預設值還不夠大,無法容納這些資料,
因此必須予以增加。將該值更改為 6553600。更改操作將在用戶端上執行,此操作會自動更新服務引用。
採用較小的預設大小,旨在降低遭受拒絕服務 (DoS) 攻擊的可能性。
18.此n層就做好了.
未完待續,敬請期待...
轉載請註明出處:http://www.cnblogs.com/refactor