business component

69
Business Component

Upload: patsy

Post on 24-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Business Component. Nội dung. Đưa ra các yêu cầu của hệ thống. Phát triển CSDL của hệ thống. Xây dựng mô hình tương tác các thành phần với các chức năng được đóng gói trong hệ thống. Các đối tượng nghiên cứu. Hiểu được kiến trúc mô hình N – tầng. Hiểu được cách sử dụng các thành phần. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Business Component

Business Component

Page 2: Business Component

Nội dung

• Đưa ra các yêu cầu của hệ thống.

• Phát triển CSDL của hệ thống.

• Xây dựng mô hình tương tác các thành phần với các chức năng được đóng gói trong hệ thống.

Page 3: Business Component

Các đối tượng nghiên cứu

• Hiểu được kiến trúc mô hình N – tầng.

• Hiểu được cách sử dụng các thành phần.

• Tạo ra mô hình các thành phần trong .NET, sử dụng C# để tương tác CSDL.

Page 4: Business Component

Giới thiệu

• Trình bày kiến trúc N – tầng và các thành phần, hiểu được làm cách nào có thể được sử dụng trong hệ phân tán.

• Xây dựng mô hình tương tác giữa thành phần với các chức năng chính được đóng gói trong hệ thống.

Page 5: Business Component

Kiến trúc N – tầng

• Kiến trúc N – tầng mô tả một cách logic sự phân biệt của tầng presentation, tầng business, tầng dữ liệu.

Page 6: Business Component

Kiến trúc N – tầng

• Tầng dữ liệu: quản lý dữ liệu.– Quản lý CSDL đã được xây dựng

• Tầng presentation: Điều khiển những gì mà các user thấy được và có thể thực hiện trong hệ thống– Sẽ xây dựng một vài ứng dụng cho tầng này

• Tầng Business (tầng giữa): điều khiển mọi thứ còn lại.

Page 7: Business Component

Tầng Business

• Tầng Business chứa các chức năng chính của hệ thống, gồm:– Business rule

– Work Flows

• Cung cấp cách điều khiển việc truy cập dữ liệu

• Xử lý dữ liệu và tạo ra sự hợp lệ dữ liệu đầu vào.

• Tầng business sẽ được định nghĩa bằng cách sử dụng class

• Thư viện các class mô tả tầng business được thực thi như những component.

Page 8: Business Component

Component

• Các component bao gồm một tập các class được xây dựng đầy đủ của ứng dụng.

• Có thể được tái sử dụng

• Phải được đóng gói tất cả các thuộc tính.

• Phải cung cấp một interface cho phép được truy cập bởi các client (thậm chí là được truy xuất từ các thành phần khác)

Page 9: Business Component

Bắt đầu

• Chúng ta tạo tạo các component trong tầng Business như là một thư viện trong VS2005

• Tạo một project–Mở Microsoft Visual Studio 2005

– Vào File \ New Project

– Chọn kiểu project là Visual C# và sau đó chọn Class Library

– Tên của project là PTSLibrary trong cùng một vị trí của project PTS

Page 10: Business Component

Use – Case Diagram

Page 11: Business Component

Class Diagram

Page 12: Business Component

Tạo Project

Page 13: Business Component

Cấu trúc PTSLibrary

• Có ba kiểu class có trong project– Business Object

– DAO (Data Access Object)

– Các Object giao tiếp

Page 14: Business Component

Business object

• Business object hoặc là domain object là các mô tả trừu tượng các thực thể của hệ thống.

• Mô tả các khái niệm quan trọng về hoạt động tương tác của hệ thống tạo thành mô hình.

• Trong hệ thống, đây là sự trừu tượng hóa của các đối tượng quản lý liên quan đến các khai niệm như: project, team, task,…

Page 15: Business Component

Business object

• Business object trong thành phần hệ thống là:– Project

– Task

– Subtask

– User

– Team

– TeamLeader

– TeamMember

– Customer

– Status

Page 16: Business Component

Business object

• Một số business object có cùng tên với các thực thể trong mô hình dữ liệu, và một số business object không có trong mô hình dữ liệu.

• Mô hình dữ liệu quan hệ yêu cầu các tiếp cận khác hơn với mô hình hướng đối tượng.–Mô hình đối tượng dựa trên các nguyên lý về CNPM.

–Mô hình quan hệ dưa trên các nguyên lý toán học

Page 17: Business Component

DAO

• DAO – Data Access Object cung cấp một giao tiếp trừu tượng đến CSDL.

• Chúng ta cần viết code và kết hợp qua lại giữa mô hình business class và CSDL– Không phải lẫn lộn giữa business logic và SQL code

– Không phải viết lại tất cả các business class nếu có thay đổi trong CSDL.

Page 18: Business Component

DAO

• DAO bao gồm tất cả các lệnh SQL để đọc và ghi vào CSDL.

• Có thể có một đối tượng DAO cho project, nhưng chúng ta có nhiều dạng user, thực hiện các dữ liệu khác nhau, nên chúng ta có đối tượng DAO với các vai trò:– SupperDAO.

– AdminDAO.

– CustomerDAO

– ClientDAO (Các nhóm trưởng sử dụng .NET /Java)

Page 19: Business Component

Các đối tượng giao tiếp – Façade Objects

• Project PTSLibrary là một thư viện các lớp.– Không có giao diện đồ họa

– Được sử dụng bởi các section khác nhau trong hệ thống và không biết được cấu trúc bên trong của các thành phần business

• Hệ thống cung cấp các giao tiếp đến các thành phần business thông qua các đối tượng giao tiếp.

Page 20: Business Component

Các đối tượng giao tiếp – Façade Objects

• Chúng ta sẽ có một lớp giao tiếp ứng với mỗi dạng user để truy cập vào các thành phần business– Cho phép chúng ta thấy được từng vai trò của các user gồm chỉ

những gì cần phải thấy.(ví dụ như: một nhóm trưởng không thể tạo ra một dự án, và chỉ có PM mới có thể thực hiện được).

• Các lớp giao tiếp bao gồm:– PTSAdminFacade

– PTSClientFacade

– PTSCustomerFacade

– PTSSuperFacade

Page 21: Business Component

Tạo class

• Xóa file Class1.cs mặc định và tạo Class như sau

Page 22: Business Component

Tạo class

• Cửa số Solution Explorer sẽ gồm các Class sau:

• Với mỗi lớp được tạo ra chỉ chứa

các câu lệnh mặc định, các khai

báo namespace, và khai báo class

• Chúng ta chỉ thực thi một tập nhỏ

các chức năng được yêu cầu để

minh họa cách sử dụng trong hệ

thống

Page 23: Business Component

Class User

• Lớp này mô tả các user chung của hệ thống:

• Đây là lớp cha (super) của tất

cả các lớp mô tả các user, gồm: – Customer

– TeamLeader

– TeamMember

• Ba lớp trên kế thừa từ lớp User

Page 24: Business Component

Class User

• Lớp này có hai biến protected:– Username

– Password

• Các biến này chỉ cho phép đọc

• Cho các lớp con kế thừa và sử

dụng hai biến này là private

Page 25: Business Component

Class Customer

• Lớp này mô tả các khách hàng.

• Chức năng của lớp này đơn giản, bao gồm;– Lưu lại tên và hiển thị lại khi yêu cầu.

– Chức năng này đã tồn tại trong lớp User, vì vậy tạo ra sự thừa kế từ lớp User

• Mỗi thể hiện của lớp này được đặt lại tên, vì vậy cần tạo ra phương thức khởi tạo cho phép thực hiện điều này

Page 26: Business Component

Class Customer

• Các lệnh cần phải viết là:– Tạo lớp Customer kế thừa từ lớp User

– Thêm một phương thức khởi tạo

để lấy tên và ID

Page 27: Business Component

Class Customer

Lớp Customer kế thừa từ lớp User

name và id được kế thừa từ lớp User

Page 28: Business Component

Class TeamLeader

• Mô tả một nhóm trưởng

của các nhóm bên trong

hoặc các nhóm bên ngoài

Lớp được kế thừa từ lớp User

Thêm vào phương thức khởi tạo cho lớp TeamLeader

Page 29: Business Component

Class TeamLeader

Tạo một trường mới

Cho phép truy cập đến TeamID

Phương thức khởi tạo

Page 30: Business Component

Class Team

• Mô tả một nhóm bên trong

hoặc nhóm bên ngoài

đang làm việc cho

công ty

• Các trường khác gồm:

id, location,

name

Được liên kết đến TeamLeader

Page 31: Business Component

Class Team

Page 32: Business Component

Class Team

Page 33: Business Component

Enum Status

• Enum cho phép tạo ra các giá trị khác nhau

• Lưu trữ một tập các tên của các thể hiện

• Có thể được chuyển đổi thành một số nguyên integer

• Dễ dàng để đọc và xử lý:– if(currentStatus == 3)

– if(currentStatus == Status.Completed)

Page 34: Business Component

Enum Status

• Trạng thái:

task, subtask

Sự thay đổi từ Class sang Enum

Các số nguyên được gán cho từng trạng thái được ánh xạ đến trường StatusID trong bảng Status của CSDL

Page 35: Business Component

Class Task

• Mô tả công việc bên trong của

project và được phân công cho

từng nhóm và có thể được chia

thành các subtask

• Các trường khác: name, taskID

Liên kết đến Status thông qua mối kết hợp

Page 36: Business Component

Class Task

Chú ý có sử dụng kiểu dữ liệu Guid

Page 37: Business Component

Class Task

Page 38: Business Component

Class Project

• Mô tả một dự án

liên kết đến Customer và

Task thông qua mối kết hợp

• Có hai phương thức khởi tạo– Phụ thuộc trên ngữ cảnh của

đối tượng Project được sử dụng

Page 39: Business Component

Class Project

• Chú ý các kiểu dữ liệu

khai báo các biến

• task được khai báo generic– Cho phép tạo ra kiểu Collections

– Task là một danh sách chứa

các đối tượng kiểu Task

– Khai báo sử dụng <Type>Danh sách chứa các đối tượng kiểu Task

Page 40: Business Component

Class Project

• Hai phương thức khởi tạo (một cho Customer và một cho task)

Page 41: Business Component

Tạo DAO – Data Access Object

• Chúng ta lưu tất cả các

đối tượng DAO trong thư

mục con của project.

• Tạo một folder DAO trong

Project PTSLibrary

Page 42: Business Component

Tạo DAO – Data Access Object

• Tạo ra 4 class mới trong thư mục DAO:– SuperDAO

– AdminDAO

– CustomerDAO

– ClientDAO

• Các lớp này có code tương tác với CSDL– Để truy cập đến các lớp được yêu cầu,

ta cần phải thêm một namespace sau

vào trong mỗi lớp DAO:System.Data và System.Data.SqlClient

Page 43: Business Component

Truy cập đến CSDL

• Để truy cập đến CSDL đã được tạo, cần phải thêm đối tượng datasource

• Phải chắc chắn rằng SQL Server đang hoạt động và CSDL truy cập được.

• Chọn Add New Data Source từ menu Data

Page 44: Business Component

Truy cập đến CSDL

• Tiếp tục, ta chọn mục Database

Page 45: Business Component

Truy cập đến CSDL

• Trong màn hình kế tiếp click

vào button new Connection

và chọn Server và CSDL.

• Sau đó kiểm tra lại kết nối

đến CSDL tại button

Test Connection

Chọn Server

Chọn DataBase

Page 46: Business Component

Truy cập đến CSDL

• Chọn check box để đồng ý lưu kết nối

• Tên của kết nối là ConnectionString

Page 47: Business Component

Truy cập đến CSDL

• Click chọn các check box của các table và click Finish

• Bây giờ ta đã có

kết nối đến CSDL

và chuỗi kết nối

được tạo trong file

Settings.settings

Page 48: Business Component

DAO

• Cung cấp một giao tiếp trừu tượng đến data source

• DAO cung cấp sự liên kết rõ ràng giữa mô hình business và mô hình dữ liệu.

• DAO sẽ chứa tất cả các lệnh SQL để đọc và ghi dữ liệu

Cấu trúc UML của các đối tượng DAO

Page 49: Business Component

Class – Super DAO

• Là lớp DAO cơ sở

• Chứa hai phương thức cung

cấp hai thuộc tính được chia sẻ

của các đối tượng DAO:– GetCustomer

– GetListOfTask

Page 50: Business Component

Class – Super DAO – GetCustomer Method

Khai báo các đối tượng kết nối CSDL

Câu lệnh SQL truy vấn thông tin khách hàng

ConnectionString

Câu lệnh SQL trả về một dòng dữ liệuTạo một thể hiện của bảng CustomerGiá trị trả về của phương thức

Page 51: Business Component

Class – Super DAO – GetListTask Method

Chú ý rằng sử dụng dấu nháy đơn: ProjectID là kiểu GUID và không phải là một số

Kết quả trả về có thể nhiều hơn một dòngDuyệt qua tất cả các dòng dữ liệu

Phương thức khởi tạo của Task cần Guid và Task

Page 52: Business Component

Class – CustomerDAO

• Cung cấp các phương thức truy cập CSDL ứng với vai trò của khách hàng.

• Kế thừa từ lớp SuperDAO

• Hai phương thức:– Authenticate

– GetListOfProjects

Page 53: Business Component

CustomerDAO – Phương thức Authenticate

Thành phần {0} được thay thế bởi giá trị của username

Cần chắc chắn khi đọc từ SQL Datareader thì phải có một CustomerID được trả về, nếu không thì trả về 0

Page 54: Business Component

CustomerDAO – Phương thức GetListProject

Trong phương thức này tạo ra hai tập dữ liệu:1.Các project2.Tất cả các task của từng project

Page 55: Business Component

Class – ClientDAO

• Tương tự như lớp CustomerDAO.

• Cung cấp các phương thức truy cập CSDL đối với vai trò của TeamLeader

• Kế thừa từ lớp SuperDAO

• Hai phương thức:– Authenticate

– GetListOfProjects

• Lớp này cung cấp việc

truy cập CSDL cho các

Java Client

Page 56: Business Component

Class – ClientDAO

• Câu lệnh SQL trong phương thức Authenticate.sql = String.Format("SELECT DISTINCT Person.Name, UserId, TeamId FROM Person INNER JOIN Team ON (Team.TeamLeaderId = Person.UserId) WHERE Username='{0}' AND Password='{1}'", username, password);

• Phương thức GetListOfProjects trả về tất cả các project của từng nhóm (không phải các project của từng khách hàng như trong lớp CustomerDAO)

public List<Project> GetListOfProjects(int teamId)

Page 57: Business Component

Class – AdminDAO

• Cung cấp phương thức truy cập CSDL ứng với vai trò của Administrator

• Kế thừa từ lớp SuperDAO

• Có 6 phương thức:– Authenticate

– CreateProject

– CreateTask

– GetListOfCustomers

– GetListOfProjects

– GetListOfTeams

Page 58: Business Component

AdminDAO – Phương thức CreateProject

Tạo ra một Guid mới

Thực thi câu lệnh INSERT thay vì câu lệnh SELECT

Page 59: Business Component

Class – AdminDAO

• Câu lệnh SQL đối với phương thức Authenticate chắc chắn rằng chỉ có Administrator có thể thực thi.

• Phương thức CreateTask chèn một task mới vào CSDL.

• GetListOfCustomer trả về tất cả khách hàng trong CSDL.

• GetListOfProjects chỉ trả về các project tương ứng với PM đã tạo ra.

• GetListOfteams trả về tất cả các nhóm có trong CSDL.

Page 60: Business Component

Các đối tượng giao tiếp

• Cung cấp các giao tiếp đến các thành phần Business.

Page 61: Business Component

Class – PTSSuperFacade

• Đây là lớp giao tiếp cơ sở.

• Chứa các phương thức cung cấp các thuộc tính được chia sẻ bởi các lớp giao tiếp khác

• Phương thức:– GetListOfTask

Page 62: Business Component

Class – PTSSuperFacade

Truy cập một lớp trong thư mục con DAO

Giá trị trả về là một mảng các Task

Page 63: Business Component

Class – PTSCustomerFacade

• Cung cấp một giao tiếp public cho dịch vụ web của khách hàng

• Kế thừa từ lớp PTSSuperFacade

• Một phương thức:– GetListOfProjects

Page 64: Business Component

Class – PTSCustomerFacade

Đưa ra việc khởi tạo từ lớp cha

Lớp giao tiếp gọi đối tượng DAO. Điều này cho phép chúng ta chỉ ra các lớp hiện hành từ DAO

Page 65: Business Component

Class – PTSClientFacade

• Cung cấp một giao tiếp public cho dịch vụ web client sử dụng Java

• Kế thừa từ lớp PTSSuperFacade.

• Có hai phương thức:– GetListOfProject

– Authenticate

Page 66: Business Component

Class – PTSClientFacade

Username và password phải được cung cấp

Page 67: Business Component

Class – PTSAdminFacade

• Cung cấp một giao tiếp public cho Administrator điều khiển các client

• Kế thừa từ lớp PTSSupperFacade

• Các phương thức– Authenticate

– CreateProject

– CreateTask

– GetListOfCustomers

– GetListOfProjects

– GetListOfTeams

Page 68: Business Component

Class – PTSAdminFacade

Username và password phải được cung cấp

Page 69: Business Component

Tổng kết

• Trong phần này đã làm việc trên các thành business của project PTSLibrary

• Ta phải build project bằng cách chọn Build PTSLibrary từ menu Build và sửa lại tất cả các lỗi.