Kiến trúc module

Kiến trúc module – xu hướng mới trong lập trình

Kiến trúc module là gì? Tại sao nó lại là một xu hướng mới trong lập trình?

Có thể hiểu một cách đơn giản thì module cho phép chia nhỏ các yêu cầu của phần mềm thành các phần hầu như không trùng lắp và do đó nó hỗ trợ khả năng làm việc song song trên các modue, giúp cho việc bảo trì trở nên dễ dàng hơn. Nhờ vào kiến trúc module mà việc tái khả sử dụng các thành phần của hệ thống cũng như việc mở rộng hệ thống một cách dễ dàng hơn. 

Kiến trúc module
Kiến trúc module

Các ngôn ngữ lập trình như Flex, Ruby hỗ trợ lập trình theo cơ chế của module, nó cho phép biên dịch các module một cách độc lập và có thể gắn kết vào hệ thống lúc thưc thi. Bên cạnh đó cũng có một số ngôn ngữ khác có khả năng hỗ trợ cơ chế thư viện liên kết (DLL) để biên dịch các module thành những thư viện độc lập và có thể gắn kết vào hệ thống cộng đồng. 

Có thể lấy các môi trường lập trình như Eclipse, Visual Studio là một hình mẫu của kiến trúc module. Chúng được tạo ra như những nền tảng cơ bản trong đó, các module hỗ trợ ngôn ngữ lập trình Java, C#,… nó được thiết kế dưới dạng các plugin và có thể gắn dễ dàng vào nền tảng. Chúng ta cũng có thể thấy công cụ Visual Studio đi kèm bộ SQL Professional để hỗ trợ các project của SQL server dưới tên khác là SQL.

Điểm hay của kiến trúc module chính là khả năng mở rộng để áp dụng ở mức hệ thống và các module có thể là các ứng dụng hoặc dịch vụ được tổ chức chạy song song với nhau, đồng thời tương tác qua một kiểu giao tiếp chẳng hạn như Messaging, RPC, Socket,.. Có thể xem module chính là nền tảng cơ bản của nhiều kiến trúc tiên tiến khác như MVC Multi-tier, SOA,… Ngoài ra kiến trúc module có thể tái áp dụng vào những module của chính hay các thành phần con của kiến trúc bên trong hệ thống SOA.

Kiến trúc module có thể mở rộng để áp dụng ở mức hệ thống và các module có thể là các ứng dụng hay dịch vụ chạy song song và tương tác với nhau thông qua một kiểu giao tiếp nào đó như Messaging, RPC, Socket…

Leave a Reply

Your email address will not be published. Required fields are marked *