Thiết kế các lớp xử lý, truy cập CSDL

Một phần của tài liệu Nghiên cứu các mẫu thiết kế và ứng dụng để xây dựng hệ thống quản lý thông tin tổng thể cho doanh nghiệp (Trang 49)

4. Tóm tắt cấu trúc của luận văn

3.1.4.1.Thiết kế các lớp xử lý, truy cập CSDL

để ựảm bảo tất cả các Phân hệ trong hệ thống có thể trao ựổi ựược thông tin với nhau thì trước hết chúng phải có cùng chung một tiêu bản (template) trong việc truy cập, giao tiếp với CSDL.

Vì ựây là một hệ thống phục vụ nhu cầu quản lý thông tin của các doanh nghiệp, ở mỗi doanh nghiệp, cách quản lý cũng như xử lý thông tin của họ sẽ là khác nhau , ựiều ựó có nghĩa là hệ thống cần ựược thiết kế có tắnh mở, dễ thắch nghi ựể ựáp ứng ựược sự thay ựổi khi áp dụng hệ thống vào trong các doanh nghiệp ựó. Chắnh vì thế cần phải áp dụng các mẫu thiết kế như Stategy, Command, Observer [9], ựặc biệt là

Transaction Script, DomainModel, TableDataGateway, DataTransfer Object [17] vào trong

các lớp cơ sở phục vụ cho mục ựắch xử lý, giao tiếp với CSDL ựể ựảm bảo tách biệt ựược giữa các tầng logic nghiệp vụ với tầng trình diễn, với tầng thực thi các câu lệnh giao tiếp với CSDL:

Hình 3.2. Kiến trúc các lớp giao tiếp CSDL sử dụng mẫu thiết kế.

Ở ựây :

- Business Object (BO): ựóng vai trò như một Model trong mô hình MVC, nó chứa

giao diện, các lớp, các phương thức ựể xử lý các logic nghiệp vụ trước khi chuyển vào CSDL thông qua các lớp Data Access Object (DAO).

- Data Access Object (DAO): Chắnh là mẫu Table Data Gateway. đóng vai trò là cầu

nối giữa tầng logic nghiệp vụ (Business) với một CSDL cụ thể như SQL Server hay Oracle.

- Data Transfer Object hay ValueObject: Là các lớp sử dụng ựể chuyển ựổi dữ liệu từ một dòng (row) trên một bảng hay một View thành một ựối tượng phục vụ cho việc trao ựổi dữ liệu giữa các bên, giữa bên khách (client) với bên chủ (Server) hoặc giữa các lớp phân tán hay giữa Remote Service khác nhau (COM+, Web Service).

Như vậy, tương ứng với mỗi bảng, mỗi chức năng của hệ thống, ta sẽ tạo ra một bộ ba lớp ở trên ựể phục vụ cho việc xử lý, giao tiếp với CSDL. đây ựược coi như là quy tắc thiết kế chắnh ựể xây dựng thống nhất cho việc giao tiếp với CSDL của tất cả các lớp, các Phân hệ trong toàn bộ hệ thống.

Bên cạnh ba lớp kể trên, ựể ựảm bảo cho việc dễ dàng kiểm soát ựược các thay ựổi về tên của các trường trong CSDL (ựiều mà xảy ra rất thường xuyên trong khi thiết kế phát triển hệ thống cũng như trong khi chỉnh sửa lại hệ thống khi triển khai cho một doanh nghiệp khác - customize), ta sẽ tạo thêm một lớp hằng số, ựóng vai trò là khai báo tên của bảng cũng như tên của các trường trong bảng ựó. điều này sẽ giúp cho lập trình viên khi có thay ựổi về tên trường thì chỉ cần thay ựổi thay ựổi ở một nơi duy nhất chứ không thay ựổi ở tất cả các lớp liên quan.

Việc hằng số hóa tất cả các tên trường như trên không chỉ ựược áp dụng chỉ với việc khai báo cấu trúc của các bảng mà nó còn ựược áp dụng trong cả việc khai báo của cả các View. đây là một cách thức ựược áp dụng một cách phổ biến của hầu hết các nhà lập trình chuyên nghiệp. để khai báo cấu trúc của một bảng như vậy trong công nghệ .NET của Microsoft, ựơn giản ta sẽ khai báo một lớp chỉ với các trường là các hằng số ứng với tên của các trường trong CSDL. Vắ dụ như khai báo cấu trúc của bảng Vendor trong .NET như sau:

public class VendorTable {

public const string TABLE_NAME = "tMZH_Vendor";

public const string VENDORID_FLD = "VendorID";

public const string VENDORNAME_FLD = "VendorName";

public const string VENDORCODE_FLD = "VendorCode";

public const string ADDRESS_FLD = "Address";

public const string TEL_FLD = "Tel";

public const string FAX_FLD = "Fax";

public const string CONTACTPERSON1_FLD = "ContactPerson1";

public const string CONTACTPERSON2_FLD = "ContactPerson2";

public const string CONTACTTEL1_FLD = "ContactTel1";

public const string CONTACTTEL2_FLD = "ContactTel2"; }

Bằng việc ựưa thêm lớp khai báo các bảng vào trong lược ựồ lớp ta sẽ có ựược lược ựồ mới cho các lớp cơ sở xử lý, truy cập dữ liệu như sau:

Hình 3.3. Sử dụng Table Definition ựể giảm thiểu thay ựổi.

Ngoài ra, cũng cần phải ựưa vào quy tắc ựặt tên cho các lớp trong hệ thống, các bảng trong CSDL, các ựiều khiển trên các form cùng với các quy tắc viết các mã lệnh (Coding Convention). Về tên các ựiểu khiển trong các biểu mẫu (form) thì ựây là một quy ựịnh phổ biến ựược hầu hết các nhà phát triển hệ thống ựồng tình và tuân thủ (ở ựây ựề cập ựến các nhà phát triển sử dụng các công cụ phát triển của Microsoft) như áp dụng tiền tố lbl có các ựiểu khiển nhãn (Label), txt cho các ựiểu khiển ô văn bản (Textbox)Ầ

Quy tắc ựặt tên cho các lớp trong toàn bộ hệ thống quản lý thông tin tổng thể doanh nghiệp này ựược thực hiên theo quy tắc như sau (dựa vào tên bảng hay tên chức năng ựược xây dựng):

- Tên tất cả các lớp, các ựiểu khiểnẦ: ựược ựặt bằng ngôn ngữ tiếng Anh. - Các lớp ựược ựặt trong các gói (namespace) là các tên các Phân hệ của hệ (adsbygoogle = window.adsbygoogle || []).push({});

thống. Tương ứng với mỗi Phân hệ sẽ có 2 gói riêng biệt. Một gói chỉ chứa các lớp giao diện (ựược ựặt với tiền tố là UI) và một lớp chứa các lớp liên quan ựến ựiểu khiển, các lớp truy cập CSDLẦ (ựược ựặt tên với tiền tố là COM).

- Các lớp ựịnh nghĩa bảng: <tên bảng>Table. Vắ dụ: PurcharseOrderTable,

ProductTable , EmployeeTableẦ

- Tên của các lớp kiểm soát (Controller): <tên bảng-chức năng>Controller. Vắ dụ:

EmployeeController, LoginControllerẦ

- Tên của các lớp nghiệp vụ (business): <tên bảng-chức năng>BO. Vắ dụ:

ProcurementBO, UserBO, SaleOrderBOẦ

- Các lớp xử lý dữ liệu: <tên bảng-chức năng>DAO. Vắ dụ: WorkOrderDAO,

WorkItemDAOẦ

- Các lớp chứa các giá trị của dòng trên bảng, view: <tên bảng-chức năng>VO. Vắ

dụ: ContractVO, ReceiptVOẦ

- Các form, trang web: ựược ựặt tên trùng với tên của bảng-chức năng.

Như vậy, nếu về mặt kiến trúc nếu dựa trên các quy tắc ựặt tên ở trên thì mỗi Phân hệ của hệ thống quản lý tổng thể doanh nghiệp sẽ phải có cấu trúc và phân lớp nhau sau:

Hình 3.4. Cấu trúc các phân lớp quản lý các gói của mỗi Phân hệ trong hệ thống.

- Mã Nhân Viên (EmployeeCode) - Tên Nhân Viên (EmployeeName) - Ngày Sinh (BirthDay)

- Số điện Thoại Liên Lạc (Contact Telephone), Ầ

Khi ựó ngoài việc có một bảng tên làm tHR_Employee trong CSDL, ta sẽ có các lớp liên quan ựến việc truy cập CSDL trong hệ thống khi ựã áp dụng mẫu MVC cũng như các mẫu Table Data Gateway, Data Transfer của ựối tượng nhân viên ngoài thực tế như sau:

- EmployeeTable: Chứa ựịnh nghĩa của bảng tHR_Employee.

- EmployeeBO: Chứa các nghiệp vụ liên quan ựến Nhân viên cũng như thực hiện

việc validation dữ liệu trước khi truyền vào cho lớp truy cập dữ liệu.

- EmployeeDAO: Chứa các chức năng truy cập CSDL hỗ trợ cho lớp nghiệp vụ

tương ứng là EmployeeBO. Lớp này sử dụng ADO.NET ựể thao tác trực tiếp với CSDL thông qua các câu truy vấn

- EmployeeVO: Chứa thông tin của một ựối tượng nhân viên.

Lược ựồ thể hiện các thuộc tắnh, phương thức cũng như mối liên kết của các lớp này như sau:

Hình 3.5. Lược ựồ lớp xử lý dữ liệu của ựối tượng Nhân viên.

Một phần của tài liệu Nghiên cứu các mẫu thiết kế và ứng dụng để xây dựng hệ thống quản lý thông tin tổng thể cho doanh nghiệp (Trang 49)