Một chủ đề lặp đi lặp lại trong công việc phát triển của tôi là việc sử dụng hoặc tạo ra một kiến trúc trình cắm thêm trong nhà. Tôi đã thấy nó tiếp cận nhiều cách - các tệp cấu hình (XML, .conf, v.v.), khung kế thừa, thông tin cơ sở dữ liệu, thư viện và các thứ khác. Theo kinh nghiệm của tôi:
- Cơ sở dữ liệu không phải là nơi tuyệt vời để lưu trữ thông tin cấu hình của bạn, đặc biệt là kết hợp với dữ liệu
- Cố gắng điều này với hệ thống phân cấp thừa kế đòi hỏi kiến thức về các trình cắm được mã hóa, có nghĩa là kiến trúc trình cắm không hoàn toàn năng động
- Các tệp cấu hình hoạt động tốt để cung cấp thông tin đơn giản, nhưng không thể xử lý các hành vi phức tạp hơn
- Các thư viện dường như hoạt động tốt, nhưng các phụ thuộc một chiều phải được tạo cẩn thận.
Khi tôi tìm cách học hỏi từ các kiến trúc khác nhau mà tôi đã làm việc cùng, tôi cũng đang tìm kiếm cộng đồng để được gợi ý. Bạn đã triển khai kiến trúc trình cắm RẮN như thế nào? Thất bại tồi tệ nhất của bạn (hoặc thất bại tồi tệ nhất bạn từng thấy) là gì? Bạn sẽ làm gì nếu bạn định triển khai kiến trúc trình cắm thêm mới? SDK hoặc dự án nguồn mở nào mà bạn đã làm việc có ví dụ tốt nhất về kiến trúc tốt?
Một vài ví dụ tôi đã tự mình tìm kiếm:
- Mô-đun của Perl :: Plugable và IOC để tiêm phụ thuộc vào Perl
- Các khuôn khổ mùa xuân khác nhau (Java, .NET, Python) để tiêm phụ thuộc.
- Một câu hỏi SO với danh sách cho Java (bao gồm Giao diện nhà cung cấp dịch vụ )
- Một câu hỏi SO cho C ++ chỉ vào một bài viết của Tiến sĩ Dobbs
- Một câu hỏi SO liên quan đến một ý tưởng plugin cụ thể cho ASP.NET MVC
Những ví dụ này dường như chơi với các thế mạnh ngôn ngữ khác nhau. Là một kiến trúc plugin tốt nhất thiết phải gắn liền với ngôn ngữ? Là tốt nhất để sử dụng các công cụ để tạo một kiến trúc plugin, hoặc thực hiện nó trên các mô hình sau đây của chính mình?