Khái niệm về mô hình lập trình Service Locator - Định vị dịch vụ
Ngoài các mô hình phổ biến như MVC, MVP ... còn có loại Service Locator khá phổ biến (trong PHP, trong C# ...). Nó thể hiện hoạt động của mô hình như đồ họa sau.
Sử dụng mô hình này có nghĩa cần có cơ chế sao cho tất các các tiến trình (các đối tượng, dịch vụ ...) được đưa vào quản lý bởi một trung tâm được gọi là Service Locator, từ trung tâm này các lớp muốn sử dụng dịch vụ nào thì Locator sẽ cung cấp (khởi tạo nếu chưa, và trả về dịch vụ cho đối tượng sử dụng).
Service Locator là mô hình triển khai từ nguyên lý IoC - IoC Inversion of control
Lợi ích khi dùng mô hình lập trình Service Locator
- Đây là mô hình hoạt động đơn giản như một cơ chế liên kết với nhau lúc thực thi. Cho phép code được thêm vào lúc chạy mà không cần biên dịch lại, hay khởi động lại một tiến trình nào đó.
- Ứng dụng tự tối ưu vào lúc chạy bằng cách thêm bớt các nội dung từ trung tâm.
- Có thể chia nhỏ thư viện lớn, ứng dụng lớn và liên kết chúng lại với nhau thông qua trung tâm đăng ký này.
Các hạn chế của Service Locator
- Mọi thứ bên trong Service Locator là hộp đen tách biệt với phần còn lại của hệ thống. Điều này có thể dẫn đến khó phát hiện lỗi, có thể dẫn đến không ổn định.
- Trung tâm đăng ký là duy nhất, điều này có thể dẫn tới tình trạng nghẽn với các ứng dụng nhiều tiến trình.
- Có thể dẫn tới các lỗ hổng vì cho phép mã được inject vào ứng dụng.