2010-01-17

Design patterns, CAB & SCSF

Design patterns, CAB & SCSF

Mục đích phần này
- Tìm hiểu khái quát các design patterns được sử dụng, hiểu cấu trúc căn bản của CAB.
- Tìm hiểu khái quát SCSF (Smart Client Software Factory).

Khái quát về CAB
Thiết kế của CAB dựa trên 3 điểm chính như sau:
- Thực hiện tìm và loading các modules tại thời điểm khởi tạo ứng dụng để thực hiện build tự động solution.
- Tách biệt việc develop UI và shell khỏi việc develop business logic.
- Đạt được khả năng tái sử dụng và module hóa code bằng cách cung cấp các kỹ thuật “liên kết yếu” (loosely coupled)

Subsytems của CAB
Tìm và load modules
Mục tiêu chính của CAB là hỗ trợ việc phát triển ứng dụng từ nhưng module độc lập nhưng lại có thể liên kết với nhau. Mục tiêu này có thể đạt được nhờ những điểm sau:
- Implement một catalog, catalog này mô tả và chỉ định modules nào sẽ được load.
- Một module loader thực hiện load và initialize các module có trong application.

Việc implement này có thể customize nhưng không cần chỉnh sửa core implementation của CAB (các subsystems của CAB đề hoạt động như các plug-ins). Ví dụ có thể load danh sách các modules từ web service vào ứng dụng thay vì đọc danh sách từ file.

User Interface và Shell
Thông thường để developer có kiến thức sâu business logic được yêu cầu và có cả kỹ thuật tốt trong việc phát triển UI và Shell là không đơn giản. Trong những dự án có khối lượng công việc lớn để đảm bảo tính nhất quán và khả năng phát triển nhanh chóng (productivity, consistency) cần phát triển các resuable components bao hàm cả bussiness logic. CAB cung cấp các kiến trúc và kỹ thuật quanh việc tạo các component dựa trên Windows Forms bao gồm:
- Một cách nhất quán để show và hide controls sử dụng Workspaces. Một shell developer tạo visual effects, layout strategies hay các behaviors khác nhưng không ảnh hưởng business logic component.
- Một cách chung để thêm và sử dụng một UIElement vào shell như menu items, status bars một cách dễ dàng mà không cần phải quá quan tâm làm cách nào để cách thành phần đó có thể hiển thị tại vị trí cần thiết...
- Một kiến trúc Command cho phép business logic developer có thể định nghĩa các action mà user có thể thực hiện và cách mà những action này sẽ hiển thị trên một shell cụ thể.

Khả năng thiết kế các business logic thành những module
Các tính năng cho phép thực hiện các module với “liên kết yếu”
- WorkItems cung cấp một cách thực hiện phạm vi hóa dễ dàng các components tham gia chung 1 trường hợp sử dụng (use case), chia xẻ chung trạng thái (share state), events và các common services.
- EventBroker cung cấp một cơ chế “liên kết yếu” bằng event many-to-many (many-to-many, loosely coupled event system mechanism between objects) giữa các objects trong ứng dụng.
- Chia xẻ trạng thái bằng State cho phép các component có thể lưu trữ và lấy thông tin.

Các tính năng chính khác
- Thực hiện loading tự động cách modules độc lập vào một common shell.
- Dùng Event Broker để tạo một giao tiếp “liên kết yếu” (loosely coupled communication) giữa các modules và giữa các parts của module.
- Sử dụng và implement sẵn Command Pattern
- Implement sẵn các base classes theo MVC (Model-View-Control) pattern.
- Tạo framework cho các pluggable infrastructure services như authentication services, authorization services, module location, và module loding service.

No comments:

Post a Comment