Translate

Thứ Bảy, 20 tháng 3, 2021

Bố cục cơ bản của lớp App_Module

 

Bố cục cơ bản của lớp App_Module

Như đã đề cập ở bài Bố cục của 1 solution, App.Module project, đảm nhiệm hầu hết các business logic của một phần mềm bao gồm:

  1. Những thực thể (Entity): bao gồm persistent (có lưu dữ liệu) và NonPersistent (không lưu cơ sở dữ liệu)
  2. Những ViewController/Actions, định nghĩa những hành xử, và dịch vụ để cho người dùng thao tác với dữ liệu.
  3. Báo biểu, Dashboard...
Mặc định của XAF, mỗi khi khai báo một thực thể, ViewController, là phần mềm tự động lấy hết vào. Việc đăng ký không tường minh (implicitly) này có vẻ tiện lợi cho những bạn mới bắt đầu, nhưng nó có thể gây ra những bất tiện:
  1. Mất thời gian khi build:  XAF sẽ tìm tất cả những entity và controller và đăng ký vào hết.
  2. Bất tiện: Ví dụ bạn có 10 Viewcontroller, nhưng ở phiên bản này bạn chỉ có dùng 5. nhưng mặc định nó lấy hết. Nên bạn phải exclude. 
  3. Performance, như ở một bài viết chính XAF đã công bố. Để tăng tốc XAF, chúng ta nên custom ở khoảng này.
Vì thế mọi đối tượng làm việc với YAF, đều được đăng ký tường minh qua các hàm Register().
Mọi việc khởi tạo, đăng ký, chúng ta đều xử lý ở trong file App.Module.cs (lớp App_Module). Cụ thể như sau:

public sealed partial class App_Module : YsvMainModule
    {
        
        public App_Module() => InitializeComponent();
        //icon cho phần mềm
        protected override Icon ProductIcon => Resources.Main;
        //hình ảnh phần mềm
        protected override Image ProductImage => Resources.ProductImage;

        //true: sử dụng kết nối mặc định tới sqlce. Đường dẫn là <Thư mục dự án>/AppDb.sdf (không có mật khẩu). Cả 3 app đều dùng chung cơ sở dữ liệu này.
        //false: dùng ConnectionString được chỉ định trong file config.
        protected override bool UseDefaultSqlCEConnectionString => base.UseDefaultSqlCEConnectionString;
        //Khởi tạo các nhóm quyền mặc đinh. Nhóm quyền admin và user admin (không có mật khẩu)
        public override void InitEmployee(IObjectSpace os)
        {
            YsvUser.InitPermission<Employee>(os);
        }

        //Đăng ký những entities sử dụng trong phần mềm
        protected override void Register(ModuleEntityService service)
        {
            base.Register(service);
            service.Register<Employee>()
                .Register<Product>()
                .Register<AppSettings>();
        }
        // Khởi tạo cấu hình phần mềm
        public override void OnSetupComplete(XafApplication application)
        {
            base.OnSetupComplete(application);
            YsvAppSettings.Init<AppSettings>();
        }
        //Đăng ký ở những view, khi double-click nó sẽ không mở detail view
        protected override void Register(DisableDetailViewService service)
        {
            base.Register(service);
        }
        //Đăng ký những report sẽ sử dụng tron ghệ thống
        protected override void Register(IXtraReportService service)
        {
            base.Register(service);
        }
        //Đăng ký những lớp import dữ liệu từ excel.
        protected override void Register(IExcelImportService service)
        {
            base.Register(service);
        }
        //đăng ký những lớp có điền dữ liệu vào file excel
        protected override void Register(IFillDataToExcelTemplateService service)
        {
            base.Register(service);
        }
        //Đăng ký những controller sẽ được sử dụng trong phần mềm
        protected override void Register(ModuleControllerService service)
        {
            base.Register(service);
        }
    }

Không có nhận xét nào:

Đăng nhận xét