Web Forms và MVC trong cùng một dự án web


8

Tôi đang làm việc trong một dự án lớn được xây dựng với ASP.NET Web Forms và ý tưởng thêm vào các thư viện MVC vào cùng một dự án đã được đưa ra. Tôi biết rằng điều này là có thể (có rất nhiều bài viết có sẵn), nhưng tôi tự hỏi nếu / tại sao điều này là / không được khuyến nghị bởi bất cứ ai đã làm điều gì đó tương tự.

Ý tưởng là chúng ta có thể xây dựng các khu vực mới của ứng dụng với mẫu MVC mới hơn và giữ cho các trang kế thừa hoạt động như chúng luôn có.

EDIT: Để làm rõ, chúng tôi không xem xét mẫu MVP vì nó đã được sử dụng trong một số phần của dự án này nhưng thực hiện một số thứ tương tự như được mô tả trong bài viết này: https://www.simple-talk.com/dotnet/ asp.net/matte-web-forms-and-asp.net-mvc/



1
Đây không phải là một bản sao. Mẫu MVP sử dụng Webforms và MVC không giống nhau. MVP là một mẫu để làm cho trang web của bạn dễ kiểm tra hơn và giữ cho các lớp của bạn tách biệt tốt hơn trong khi vẫn sử dụng Biểu mẫu web. MVC là một động vật khác nhau.
quaz579


1
@gnat, đây không phải là một bản sao của câu hỏi khác. Một câu hỏi khác không đề cập đến MVC, vì một điều. Có vẻ như bạn đang bảo anh ấy chỉnh sửa câu hỏi của mình để làm rõ vì bạn đã chọn không đọc kỹ.
Kyralessa

Câu trả lời:


5

Đây không phải là một cách tồi để viết lại một ứng dụng. Điều này sẽ đặc biệt hữu ích cho việc viết lại dài hạn xảy ra theo từng giai đoạn:

  1. Thêm một "dự án thử nghiệm" sử dụng các thử nghiệm CodedUI (hoặc Watin hoặc Selenium) để kiểm tra ứng dụng WebForms thông qua trình duyệt. Bạn cũng có thể sử dụng SpecFlow để xác định các trường hợp thử nghiệm của mình. Tôi đã sử dụng điều này để ảnh hưởng lớn đến ứng dụng WebForms.

  2. Sau khi bạn có phạm vi kiểm tra tốt của ứng dụng WebForms, bạn có thể bắt đầu giai đoạn tái cấu trúc tiếp theo: Di chuyển các thành phần phổ biến vào một thư viện lớp riêng biệt. Đây là nơi mô hình và lớp truy cập dữ liệu của bạn có thể được tạo. Bạn có thể thêm một tham chiếu đến thư viện này vào các ứng dụng WebForms của bạn. Các bài kiểm tra bạn đã viết trong giai đoạn 1 đảm bảo bạn không vi phạm các quy tắc kinh doanh hiện có

  3. Chức năng cổng qua ứng dụng MVC của bạn, sửa đổi các bài kiểm tra của bạn để sử dụng ứng dụng MVC chứ không phải ứng dụng WebForms.

Bước 1 và 2 có thể được xử lý đồng thời. Bạn thậm chí có thể bắt đầu Bước 3 khi bạn đã kiểm tra toàn bộ tính năng và các thành phần phổ biến của nó được tách rời khỏi ứng dụng WebForms.

Chia công việc ra thành các tính năng chính. Khi một tính năng được hỗ trợ trong ứng dụng MVC, hãy tắt nó trong ứng dụng WebForms. Cuối cùng nó sẽ trở thành một vỏ trấu rỗng của bản thân trước đây cho đến khi bạn có thể loại bỏ mã cùng nhau.


1
Đây là một chiến lược tuyệt vời trong khái niệm, nhưng có thể sẽ mất nhiều năm để loại bỏ tất cả các chức năng từ một ứng dụng có kích thước này (cơ sở mã này ít nhất 8 năm với một nhóm ~ 20 nhà phát triển). Tôi quan tâm nhiều hơn đến việc Webforms và MVC chơi với nhau tốt như thế nào trong cùng một dự án.
quaz579
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.