2010-02-07 30 views
9

Chúng tôi có một ứng dụng web dựa trên WebForms với các thuộc tính này:C# ASP.NET, WebForms sang MVC: Có thay đổi trong trường hợp của chúng tôi không?

Khuôn khổ đối tượng doanh nghiệp lớn (Đóng dấu xác thực) và được đặt trong thư mục Bin. Sử dụng rất nhiều UserControls.

Nhìn vào tổng quan về MVC có vẻ như có sự phân tách riêng biệt về cách mã được chia nhỏ, không có trạng thái phiên (có vẻ lạ, nhưng có thể ok nếu trang web chủ yếu phục vụ nội dung?) Và nó xuất hiện các trang trông giống như cổ điển asp (sử dụng thẻ <%%>)

Tôi có giải thích sai về MVC không? MVC có phải là một kiến ​​trúc cụ thể hay là cách mọi thứ sẽ diễn ra và WebForms cuối cùng sẽ bị loại bỏ? Làm thế nào để phân chia M-V-C khi Khung đối tượng doanh nghiệp hiện có tồn tại? Tại sao không có trạng thái phiên? Do UserControl có hoạt động trong MVC không?

Tôi nhận thấy điều này có thể chủ quan, vì vậy, chủ yếu là tìm kiếm nhận xét của bạn về chủ đề này để làm cho tâm trí của riêng tôi trở nên rõ ràng.

+3

ASP.NET MVC không ngăn bạn sử dụng Session State. Nó chỉ là một mô hình của việc tạo ra một ứng dụng ASP.NET. –

+0

@ Hasan: Cảm ơn, không chắc tại sao tôi nghĩ đây là trường hợp ... –

Trả lời

11

MVC là 90% + giống với WebForms, nhưng tất nhiên khi mọi người có cuộc tranh luận, họ có xu hướng rời khỏi điều đó một chút.

Bạn có thể có bao nhiêu lớp bên dưới khi bạn muốn cung cấp dữ liệu yor và bạn có thể thực hiện kiểu UserControl. Đó là một sự thay đổi tư duy nhiều hơn là thay đổi công nghệ. MVC có lợi thế của nó, nó bao trùm một thực tế rằng HTTP là stateleess. Webforms tóm tắt thực tế đó đến một mức độ, làm cho một số điều dễ dàng hơn là tốt (ví dụ như ViewState). Trạng thái phiên, biên dịch ... tất cả đều ở đó, nó nằm trong cùng một khung bên dưới cả hai.

Tóm lại: sử dụng những gì bạn muốn, nghiên cứu tốt (ví dụ các dự án ở mọi nơi). Nếu bạn đang thâm nhập vào một dự án, yếu tố trong thời gian để thay đổi, đó là đường cong học tập cũng như thời gian mã thực tế. Quyết định này tùy thuộc vào bạn và nhóm của bạn, nếu nó quá khác nhau, thì điều đó có thể không có lợi vì có một số điều chỉnh. Nếu bạn cảm thấy thoải mái hơn với công nghệ mới, MVC có thể sạch sẽ hơn nhiều ... cả hai vẫn được sử dụng.

Tôi sẽ không bắt đầu một dự án khác trong WebForms, nhưng đó là tôi và những gì tôi cảm thấy thoải mái ... bạn thực sự phải tìm ra cảm giác tự nhiên hơn và nhóm của bạn.

Ngoài ra, tvanfosson thực hiện một điểm tuyệt vời: xác thực hơn hoặc thực sự bất kỳ logic tùy chỉnh nào trong dự án web trước đây, càng mất nhiều thời gian để chuyển sang. Nếu bạn có một sự phân chia tuyệt vời của các lớp đã có, bạn đang ở một vị trí tốt hơn để làm như vậy, nếu không, đó là một thời gian xem xét lớn.

+1

+1. Đây là câu trả lời đúng nhất mà tôi đã thấy cho một câu hỏi như vậy. – David

+2

Nếu họ đã xây dựng được rất nhiều mô hình (bao gồm xác thực) vào UserControls tùy chỉnh, thì đó là một thay đổi lớn hơn bạn chỉ ra - một kiến ​​trúc hoàn chỉnh, IMO. – tvanfosson

+1

@tvanfosson - Điểm tuyệt vời, đã thêm ghi chú đó vào đó. Tôi nghĩ nó hoàn toàn phụ thuộc vào kiến ​​trúc hiện tại của họ. Với hầu hết các dự án WebForms tôi đã gặp phải, tôi phải đồng ý với bạn ... điều đó kết thúc là một phần chính của mã. –

6

Có vẻ như bạn có nhiều sự liên kết giữa mô hình miền và bản trình bày của mình. Nó sẽ mất một số lượng đáng kể của rearchitecting nếu đó là trường hợp. MVC không hỗ trợ trạng thái Session, nhưng nó không sử dụng ViewState - có vẻ như bạn có một chút nhầm lẫn ở đó. Nó không hỗ trợ UserControls bình thường hoặc bất cứ thứ gì phụ thuộc vào ViewState. Bạn có thể tạo "điều khiển" cho MVC (được gọi là chế độ xem "một phần") để chức năng ở đó, nhưng ở một dạng khác. Trong MVC, chế độ xem của bạn rất tách biệt với mô hình kinh doanh của bạn, thông thường bạn sẽ có một tập hợp các mô hình xem cụ thể làm trung gian giữa hai chế độ xem và chế độ xem được đánh mạnh vào mô hình khung nhìn chứ không phải mô hình kinh doanh.

Mặc dù tôi khuyên bạn nên sử dụng MVC như một kiến ​​trúc tốt hơn cho các ứng dụng dựa trên web, trong trường hợp của bạn, tôi không chắc chắn nó có ý nghĩa để chuyển đổi (ít nhất là bây giờ). Tôi khuyên bạn nên gắn bó với WebForms (sẽ không biến mất theo Scott Hanselman) hoặc từ từ di chuyển các phần, bắt đầu với các tính năng mới (hoặc ứng dụng), qua MVC.

+1

Điểm tốt liên quan đến Trạng thái ViewState/Session, chắc chắn bị nhầm lẫn ở đó. Rõ ràng đến từ WebForms chúng tôi đã sử dụng defeinitve cho SessionState và ViewState. Nếu chúng ta tiếp tục sử dụng Session State vì nó là ok ... tuy nhiên nếu chúng ta không có ViewState và chúng ta đang thực hiện nhiều postback trên form, chúng ta có cần quay trở lại tất cả các thủ thuật chúng ta đã sử dụng trong Cliassic ASP hay không. trên URL và đọc các giá trị dựa trên giá trị Form [] của họ? Điều gì sẽ xảy ra khi một TextBox là trên trang ví dụ một người vẫn có thể đọc giá trị TextBox1.Text? –

+2

Không có điều khiển phía máy chủ trong MVC.Bạn nhận được dữ liệu thông qua mô hình ràng buộc với các tham số hành động, thông thường, hoặc trực tiếp từ yêu cầu (hoặc thông qua nhà cung cấp giá trị).Bạn sẽ thấy rằng toàn bộ mô hình là khác nhau - đối với một điều bạn có thể tạo nhiều biểu mẫu trên mỗi trang, mỗi trang gửi lại hành động của riêng nó. Nó cũng là, IMO, dễ dàng hơn nhiều để sử dụng AJAX do đó thiếu trạng thái ít quan trọng hơn khi bạn rời khỏi người dùng trên trang và xử lý yêu cầu không đồng bộ trong nền - không cần phải thực hiện một chuyến đi khứ hồi toàn bộ biểu mẫu. – tvanfosson

2

MVC là một chai mới sáng bóng cho cùng loại rượu cũ đó là web & cách hoạt động.

Mặt khác, cuối cùng bạn có thể di chuyển ra khỏi ViewState asp.net & vòng đời trang, postbacks, URL điên của, vv

Nếu bạn cần phải di chuyển từ webforms để MVC, nhìn vào dependancy trên thứ ba các điều khiển bên mà bạn có thể đã sử dụng trong giao diện người dùng ứng dụng của mình. Không phải tất cả các nhà cung cấp đều có tương đương MVC. Phiên & ViewState là các khía cạnh quan trọng nhất khác để xem xét ở cuối giao diện người dùng. Nếu bạn có ứng dụng web công khai, hãy nghĩ đến URL đang được đánh dấu trang. Tất cả những điều này có thể là các yếu tố bổ sung để xem xét khi chuyển sang MVC. Thông thường, tôi khuyên bạn nên đầu tiên đưa mã của bạn vào lớp Model-Controller & khi đã hoàn tất, sau đó thay đổi giao diện người dùng thành Chế độ xem & sử dụng cơ chế định tuyến URL của MVC. Ngoài ra, bạn có thể sử dụng bất kỳ mô đun viết lại URL phong nha nào & xuất bản URL kiểu REST trước tiên & ghi lại URL cũ của mình thành URL mới & rồi từ từ chuyển đổi các phần của ứng dụng sang MVC.

+0

Điểm tốt về điều khiển của bên thứ 3. Chúng tôi sử dụng khá ít trên back-end cho những thứ khác nhau và đã thực sự bỏ một thư viện kiểm soát giao diện người dùng toàn diện cho các thành phần UserControl + jQuery của riêng chúng ta để giảm chi phí. –

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