Cách xây dựng các ứng dụng web hoàn toàn theo mô-đun [đã đóng]


34

Trong những tháng tới, chúng tôi sẽ bắt đầu một dự án nơi chúng tôi lấy một hệ thống mà chúng tôi đã xây dựng cho một khách hàng (v1) và xây dựng lại từ đầu. Mục tiêu của chúng tôi với v2 là làm cho nó thành mô-đun, để khách hàng cụ thể này sẽ có bộ mô-đun riêng mà họ sử dụng, sau đó một khách hàng khác có thể sử dụng một bộ mô-đun khác hoàn toàn. Thủ thuật ở đây là Công ty A có thể có một loạt các mô-đun thanh toán và người dùng thay đổi cách hệ thống đó hoạt động. Công ty B có thể tuân thủ quy trình thanh toán tiêu chuẩn nhưng tùy chỉnh cách các sản phẩm được duyệt.

Một số cách tiếp cận tốt đối với kiến ​​trúc ứng dụng khi bạn xây dựng một ứng dụng từ đầu mà bạn muốn Corechia sẻ giữa tất cả các khách hàng trong khi vẫn duy trì tính linh hoạt cho mọi thứ được sửa đổi cụ thể cho khách hàng là gì?

Tôi đã thấy các hook của CodeIgniter và không nghĩ rằng đó là một giải pháp tốt vì chúng tôi có thể kết thúc với 250 hook và nó vẫn không đủ linh hoạt. Một số giải pháp khác là gì? Lý tưởng nhất là chúng ta sẽ không cần phải vẽ một đường trên cát.

Câu trả lời:


26

Để đạt được tính mô đun được tổ chức và phân tách cao, bạn có thể theo mô hình kiến ​​trúc MVC phân cấp , đôi khi được gọi là điều khiển trừu tượng trình bày (mặc dù chúng không hoàn toàn giống nhau). Samana , Alloy , FluencyFuelPHP hỗ trợ HMVC tự nhiên * và cách tiếp cận HMVC của Kohana được thảo luận trong Mở rộng ứng dụng web với HMVCTối ưu hóa các ứng dụng web HMVC cho hiệu suất , bởi Sam de Freyssinet .

Thật không may, CodeIgniter không hỗ trợ HMVC nguyên bản. Tôi đã xây dựng các thư viện của riêng mình để cung cấp một số loại hỗ trợ HMVC trên CodeIgniter, lấy một số cảm hứng từ codeigniter-modul-extend-hmvc của Wiredesignz . Có một bài giới thiệu rất hay về bài viết của HMVC tại nettus +, thảo luận về phần mở rộng của CodeIgniter và Wiredesignz. Hình ảnh và trích dẫn sau đây là từ hướng dẫn đó:

nhập mô tả hình ảnh ở đây

Mỗi bộ ba hoạt động độc lập với nhau. Một bộ ba có thể yêu cầu quyền truy cập vào bộ ba khác thông qua bộ điều khiển của họ. Cả hai điểm này đều cho phép ứng dụng được phân phối trên nhiều địa điểm, nếu cần. Ngoài ra, việc phân lớp các bộ ba MVC cho phép phát triển ứng dụng sâu hơn và mạnh mẽ hơn. Điều này dẫn đến một số lợi thế đưa chúng ta đến điểm tiếp theo.

Cuối cùng, bạn đang đi đúng hướng với các móc, ngay cả khi bạn áp dụng kiến ​​trúc HMVC, sẽ có một số vấn đề bạn vẫn cần giải quyết bằng móc, tùy thuộc vào việc triển khai và mức độ tự động hóa mà bạn đang tìm kiếm . Việc sử dụng tốt các hook sẽ là một pre_controllerhook để đảm bảo tất cả các phụ thuộc cho các module đã cài đặt, chẳng hạn.

* Có thể có những người khác tôi không biết.


1
ASP.NET MVC có hỗ trợ cho việc này không?
Robert Harvey

@RobertHarvey Tôi không biết ...
yannis

@Robert Harvey Đối với tôi điều này có vẻ giống như một mô hình hơn là một khung. Có thể tôi đang thiếu một cái gì đó nhưng tôi không thể hiểu tại sao tôi không thể làm điều này với sự kế thừa trong ASP.NET MVC.
Jeremy

3
@Jeremy: Nó trở nên khó khăn trong các lượt xem, đặc biệt nếu bạn muốn sử dụng lại các phần của lượt xem. Trông có vẻ hấp dẫn, nhưng tôi cảm thấy khó hình dung ở cấp độ đai ốc và bu lông.
Robert Harvey

Trong sơ đồ trên, có vẻ như các chế độ xem cấp trên đang được tạo từ các chế độ xem nhỏ hơn nằm ở vị trí thấp hơn trong cấu trúc phân cấp. Điều đó đã có thể được thực hiện ở một mức độ nhất định vớiRenderAction()
Robert Harvey

5

Tôi không phải là một người PHP, nhưng về phía tập lệnh java nếu bạn sẽ có nhiều mô-đun mà bạn muốn giữ độc lập nhất có thể, có một số hệ thống cho việc này, chẳng hạn như RequireJS , có tập lệnh java các mô-đun khai báo các phụ thuộc vào các mô-đun khác và khung đảm bảo chúng được tải khi cần.

Các khung khác nhau ngoài kia khác nhau về cách khai báo các phụ thuộc, mức độ xử lý phụ thuộc được thực hiện như một bước xây dựng trên máy chủ, khi tải trang hoặc tự động theo yêu cầu và mức độ bạn phải thay đổi cách bạn viết java- kịch bản.

Các khung công tác này không áp dụng nhiều (hoặc có thể là tất cả) nếu khung bên máy chủ của bạn đang xử lý việc này hoặc tạo tập lệnh java cho bạn, nhưng bạn có thể muốn tập lệnh java độc lập với khung bên máy chủ của mình.

Nếu bạn không có quá nhiều tập lệnh java nhưng bạn muốn có một số mô-đun, bạn luôn có thể sử dụng các chức năng tự gọi ẩn danh để xử lý các phụ thuộc bằng cách đặt trước các thẻ tập lệnh với các phụ thuộc và tham chiếu lẫn nhau bằng cách đăng ký với một đối tượng trong không gian tên toàn cầu. Điều đó ít nhất làm cho chúng gần như mô-đun và không tốn nhiều chi phí để thực hiện.


0

Dưới đây là một số hướng dẫn về cách thực hiện thiết kế mô-đun: https : // class.coursera.org/saas/lecture/preview/9

cũng thế này: " Có thể thấy SOA một cách liên tục, từ các khái niệm cũ hơn về điện toán phân tán và lập trình mô-đun , thông qua SOA, và đến các thực tiễn hiện tại của mashup, SaaS , ..."

Bản thân tổ chức mã HMVC, không nhất thiết dẫn đến tính mô đun.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.