2012-03-27 30 views
8

Nhóm của tôi đã phát triển một loạt các mô-đun trong ứng dụng Rails nguyên khối để sử dụng nội bộ. Các mô-đun là ví dụ để lại yêu cầu, thông tin nhân viên, nhiệm vụ/việc làm vv Mỗi mô-đun có mục đích riêng của mình nhưng bằng cách nào đó được liên kết với thông tin phổ biến như hồ sơ nhân viên và xác thực người dùng. Mỗi mô-đun có một nhà phát triển được chỉ định và họ cam kết mã cho cùng một ứng dụng Rails. Hiện tại, rất khó để duy trì mã và quy mô. Bây giờ, tôi đang nghiên cứu để phân tích ứng dụng thành các ứng dụng phân tán nhỏ và biến chúng trở thành một hệ sinh thái. Dưới đây là khái niệm tôi đang tìm kiếm:Cách phân chia ứng dụng Rails thành các hệ sinh thái ứng dụng nhỏ khác nhau

  • Sẽ có ứng dụng chính duy trì chế độ xem của các ứng dụng khách khác. Tốt hơn, nó hoạt động như một nền tảng cho các ứng dụng khách khác để cắm vào nó. Nhân viên đăng nhập vào ứng dụng chính này để truy cập ứng dụng khách.
  • Ứng dụng chính sẽ hiển thị chế độ xem ứng dụng khách bằng AJAX hoặc các cách khác (không được quyết định).
  • Mặc dù, tôi muốn phân tích ứng dụng nhưng mỗi ứng dụng vẫn có thể truy vấn tài nguyên/dữ liệu như hồ sơ nhân viên từ ứng dụng khách khác trong hệ sinh thái.
  • Thực ra, tôi chưa quyết định về tương tác của từng ứng dụng. Suy nghĩ với chúng tôi RESTful (không quyết định).
  • Nó sẽ hỗ trợ môi trường phát triển nơi mỗi nhà phát triển có thể phát triển từng ứng dụng một cách độc lập. Do đó, duy trì mã riêng của họ trong kho git của riêng họ. Đây có lẽ là mục đích chính của việc phân tích ứng dụng ngay từ đầu.

Tôi đang đọc Thiết kế hướng dịch vụ với sách Ruby on Rails, nhưng có vẻ như họ tập trung phân tích ứng dụng thành các dịch vụ nhỏ khác nhau, trong khi tôi muốn có các ứng dụng nhỏ khác nhau. Chỉ cần tự hỏi nếu có bất kỳ cách nào khác để làm.

Xin lỗi một câu hỏi dài và hỏi quá nhiều. Chỉ muốn biết nếu bạn đã ở trong tình trạng tương tự và có thể hướng dẫn tôi một số bài báo, cộng đồng, sách để tôi có thể tiếp tục nghiên cứu thêm.

Trả lời

4

Ah niềm vui của việc tái cấu trúc. Nó có thể là một điệu nhảy khó khăn cố gắng để cấu trúc một ứng dụng thành các nhóm hợp lý để các phần có thể được tách rời.

Tôi thực sự khuyên bạn nên xem xét Engines, với số Engines vs Mountable rất thông tin. Điều này cho phép bạn xây dựng một ứng dụng mini Rails (hay còn gọi là một Engine) có thể được đóng gói như gem. Đá quý Engine tùy chỉnh được đóng gói trong ứng dụng Rails, cung cấp một tập hợp đầy đủ các chức năng có thể cấu hình (mô hình, bộ điều khiển, dạng xem, v.v.).

Tính hữu ích của Kiến trúc hướng dịch vụ phụ thuộc rất nhiều vào loại dữ liệu bạn đang đẩy và kéo xung quanh. Điều đó đang được nói, Rails thực sự có dây cho RESTful, vì vậy bạn nhận được rất nhiều bang cho buck với tuyến đường đó.

+0

Bạn nói "Đá quý của Công cụ tùy chỉnh được đóng gói vào ứng dụng Rails, cung cấp một tập hợp đầy đủ các chức năng có thể cấu hình (mô hình, bộ điều khiển, chế độ xem, v.v.)". Nhưng những viên ngọc Engine này có thể được triển khai riêng biệt ở cấp độ vật lý không? Nếu vậy, làm thế nào? – richsinn

+1

@theSshow A Rails 'Engine phải được thiết lập bên trong ứng dụng Rails hiện có, chúng không thể chạy độc lập. Chúng cho phép các tính năng yêu cầu chức năng của Rails được đóng gói trong một viên ngọc có thể được sử dụng lại. Ví dụ, một viên ngọc cung cấp một diễn đàn sẽ bao gồm các bộ điều khiển, khung nhìn và các mô hình cần thiết để chạy diễn đàn. – mguymon

Các vấn đề liên quan