2010-11-19 35 views
7

Tôi đang cố gắng nghĩ về một khung phát triển ứng dụng web để phát triển sản phẩm của chúng tôi. Tôi muốn xây dựng một ứng dụng ASP.NET có nhiều mô-đun phụ trong đó. Yêu cầu của tôi là như sau:Cách tiếp cận tốt nhất để thiết kế một ứng dụng ASP.NET được tổ chức tốt với mô đun

  1. Ứng dụng này sẽ là một bộ các module khác nhau như CRM, bugtracker, quản lý hàng tồn kho, quản lý tài chính, vv

  2. Mỗi mô-đun nên có DLL riêng của họ.

  3. Một dự án nên dành cho vùng chứa bên ngoài của ứng dụng (như khung công tác) và dự án này sẽ mang tất cả các mô-đun khác (thuộc loại ứng dụng web) vào giải pháp cho vùng chứa bên ngoài. (Một số điều như chúng ta có Khung trong HTML). Vì vậy, chúng tôi sẽ xuất bản ứng dụng web container bên ngoài chỉ vào cuối ngày và tất cả các dự án ứng dụng web khác sẽ được truy cập thông qua đó.

Tôi muốn có DLL riêng cho mỗi mô-đun vì vậy tôi không cần phải lo lắng về việc phá vỡ ứng dụng khi triển khai DLL duy nhất của tôi kiểm soát toàn bộ bộ.

Tôi không chắc liệu suy nghĩ của mình có đúng hướng hay không. Kết quả cuối cùng tôi đang tìm kiếm là một bộ ứng dụng web được duy trì tốt, có tổ chức và mô-đun.

Đây là biểu mẫu web ASP.NET chứ không phải MVC. Tôi sẽ sử dụng VS2010 để phát triển.

Phương pháp tốt nhất để làm điều này là gì?

Edit:

Các thùng chứa bên ngoài hạn có nghĩa là nó hoạt động như một trang chủ trong đó có các liên kết đến các module khác nhau và các module khác nhau không phải lúc nào trong cùng một dự án. Chúng có thể là dự án riêng biệt theo cùng một giải pháp. Và tôi theo ấn tượng rằng, vào cuối ngày, tôi sẽ chỉ xuất bản dự án đó và nó sẽ mang lại các mô-đun khác nhau cho nó.

+0

Bạn cần phải xác định MVC hoặc Web Forms để có được câu trả lời chính xác hơn :-) – IrishChieftain

+0

@ Irish.Thanks vì đã bắt được điều đó.Tôi cập nhật câu hỏi – Shyju

+0

dotnetnuke là một ví dụ tốt về tình huống này bạn đang gặp phải – Arief

Trả lời

2

Tôi sẽ không nói đây là "cách tiếp cận tốt nhất" nhưng tôi khuyên bạn nên xem qua Dot Net Nuke (DNN) để nhận một số ý tưởng. Điều này bắt đầu như là dự án web khởi động "I Buy Spy" cũ mà Microsoft phân phối để hiển thị các dự án ASP.NET, và nó đã cất cánh từ đó.

chỉnh sửa:

1. ứng dụng sẽ là một bộ các module khác nhau như CRM, bugtracker, quản lý hàng tồn kho, quản lý tài chính, vv

Bạn có thể làm điều này với DNN. Chúng cũng được gọi là "mô-đun" trong DNN và Drupal.

2.Mô-đun phải có tệp DLL riêng.

Vâng, đây là một ý tưởng hay. Và bạn sẽ thấy loại điều này trong một số hệ thống quản lý nội dung như DNN và Drupal. Bằng cách này, không phải tất cả các triển khai của cùng một trang web đều cần phải cài đặt tất cả các mô-đun.

Chúng tôi có một trang web quan trọng được sử dụng để lưu trữ ứng dụng "dịch vụ dưới dạng giải pháp" mà chúng tôi tính phí (nếu bạn không phải là chuyên gia hoặc kế toán, bạn sẽ không nghe nói về nó). Nhà phát triển hàng đầu trong vài năm qua đã sử dụng phiên bản DotNetNuke trước đó như là một mô hình cho cách tái cấu trúc các phần của ứng dụng mà ông đã được phép thay đổi.

3

Tôi thực sự nghĩ cách tiếp cận tốt nhất sẽ là phương pháp không vượt quá kiến ​​trúc sư. Tôi lo ngại rằng có vẻ như bạn đang sản xuất một kiến ​​trúc tổng thể mà không có lý do chính đáng.

Đây có phải là tất cả các mô-đun mới không? Sau đó, chỉ cần bắt đầu viết đầu tiên. Sử dụng các phương pháp hay nhất áp dụng cho các mô-đun đơn lẻ.

Sau đó viết chữ thứ hai. Bạn sẽ thấy bạn muốn sử dụng những thứ bạn đã viết trong mô-đun đầu tiên. Tuyệt quá. Đó là những gì tái cấu trúc cho. Refactor những điều này ra thành một hoặc nhiều "thư viện" dự án, chạy lại tất cả các bài kiểm tra đơn vị của bạn, sau đó tiến hành với các mô-đun thứ hai.

Lặp lại cho đến khi tất cả các mô-đun được thực hiện.

Khi kết thúc quá trình này, nếu bạn cần loại kiến ​​trúc mà bạn đã phác thảo, thì bạn sẽ có nó. Nếu bạn cần ít hơn, thì bạn sẽ có ít hơn, và bạn sẽ không dành nhiều thời gian để tạo ra một kiến ​​trúc không gắn liền với các yêu cầu trong thế giới thực.

+0

Nếu tất cả các dự án này theo linh hồn, Tôi nên xuất bản bản nào để triển khai? Tôi có nên triển khai mỗi một trong số chúng một cách vô tình và sau đó hợp nhất nó theo cách thủ công không? – Shyju

1

Giống như những người khác đã đề xuất DNN có thể sẽ làm việc cho những gì bạn đang cố gắng làm. Nếu bạn muốn hoàn toàn cuộn của riêng bạn một cách tự nhiên, tôi sẽ chuyển sang một số loại kết hợp của một container "Framework" và một loạt các điều khiển người dùng (.ascx). Vùng chứa có thể đơn giản như trang cái với menu. Tùy thuộc vào cách linh hoạt bạn muốn thiết kế của bạn, bạn có thể đúc sẵn nhiều trang khác nhau, mỗi lưu trữ một điều khiển khác nhau (dll riêng biệt như bạn muốn). Nếu bạn muốn nó năng động hơn một chút, bạn có thể có một trang nội dung sẽ tự động tải khi chạy kiểm soát người dùng mong muốn vào nó. Một lần nữa đây chỉ là một cách tiếp cận chung, có lẽ một cái nhìn 30000 feet vào cách DNN được thực hiện anyway.

1

Đặt tên cho dự án chính sau công ty/sản phẩm của bạn và giữ cho nó ngắn gọn và đơn giản. Bạn có thể sẽ cần một hoặc hai dự án thư viện để hỗ trợ nó - chúng sẽ chứa logic hàng ngày, phổ biến cho những thứ như error reporting, phương pháp tiện ích web, v.v.

Tiếp theo, chọn một trong số sub-projects của bạn. mô-đun thuật ngữ trong ngữ cảnh cụ thể này) và thêm vào giải pháp của bạn. Cho dù bạn đang tái sử dụng một dự án hiện có, hoặc tốt hơn là bắt đầu từ đầu, cuối cùng bạn sẽ có bất kỳ logic phổ biến nào trong dự án này được chuyển đến thư viện của bạn.

Rửa sạch và lặp lại. Có lẽ hãy xem một cái gì đó tương tự như dự án Sueetie bao gồm một số tiểu dự án như CMS, Blog, Lịch, Diễn đàn, v.v.

Bài viết sau được đánh dấu là "lỗi thời" trên MSDN nhưng tôi vẫn nghĩ bạn nên dùng một cái nhìn vào nó:

Structuring Solutions and Projects

Ngoài ra, một cái gì đó tương tự từ Patterns và Thực tiễn Nhóm:

Structuring Projects and Solutions in Team Foundation Source Control

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