Thứ Bảy, 24 tháng 4, 2010

Service trong SCSF và CAB

Trong mô hình SCSF and CAB , chúng ta có đề cập đến việc sử dụng các Service trong module.

Trong mô hình CAB, CAB Service được thiết lập như một Object cung cấp các tính năng cho các thành phần (component) khác . Dĩ nhiên nó có thế mạnh là sử dụng các tính năng này như một service, được truy cập dễ dàng vào các thành phần tính năng khác ở mọi nơi trong ứng dụng. ráp nối các thành phần tính năng lại để hoàn thành một component trong tính năng của một ứng dụng.

Ví dụ : cung cấp các logging, các error handler, các event broker, các chuyển đổi dữ liệu sao cho phù hợp với ứng dụng từ các thành phần dữ liệu khác như (Web service), cung cấp các liên kết với các thiết bị, các phần cứng, cung cấp các thiết lập, các xác lập, các bảo mật v..v.. .
Để cho dễ hiểu , chúng ta có thể tạo ra một Service của riêng chúng ta .

Ví dụ cách tạo và sử dụng một service cung cấp bởi module trong mô hình SCSF và CAB:

Đầu tiên ta có một  Service Interface

public Interface IMyservice
{
      string GetService();
}
 Có một class chính là service được thừa kết từ  service interface, định nghĩa các hàm hay các element theo interface.
public class MyService : IMyService
{
   public string GetService()
  {
     // code something here
  }
}
Tạo ra service :
Mở file ModuleController.cs của bạn. Trong đây bạn sẽ thấy một method tên là AddService(),
Ở đây bạn sẽ tạo ra service của bạn bằng việc code như sau :

public void AddService()
{
    WorkItem.Service.AddNew();
}
hoặc trên cùng của class service sử dụng attribute sau :

[Service (typeof(IMyService))]
public class MyService : IMyService
{
    public string GetService()
  {
     // code something here
  }
}

Mở file ModulePresenter.cs của bạn lên bạn có thể đặc môt contructor với khai báo service bạn sẽ sử dụng như sau
private IMyService _service;
public ModulePresenter ([ServiceDependency] IMyservice service)
{
  _service = service;
}

hoặc sử dụng setter để thiết lập service
private IMyService _service;
[ServiceDependency]
public IMyService MyService
{
  _service = value;
}
Tại đây bạn đã có thể sử dụng service của bạn
public string UserMyservice ()
{
    return _service.GetMyService();
}

Làm thế nào mà mô hình CAB  tìm thấy và hiểu được đó chính là service. Sau khi module được load CAB sẽ tìm thấy tất cả các public class bên trong một assembly mà có attribute tên là "Service", nhận dạng chúng và chứa trong Service Collection của root WorkItem trong mô hình CAB.

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

Đăng nhận xét