Tôi muốn biết điều gì, tại sao hoặc khi nào tốt hơn nên chọn cshtml và cái gì, tại sao hoặc khi nào tốt hơn nên chọn công nghệ aspx? Hai công nghệ này nhằm mục đích gì?
Cảm ơn bạn,
Tôi muốn biết điều gì, tại sao hoặc khi nào tốt hơn nên chọn cshtml và cái gì, tại sao hoặc khi nào tốt hơn nên chọn công nghệ aspx? Hai công nghệ này nhằm mục đích gì?
Cảm ơn bạn,
Câu trả lời:
Như những người khác đã trả lời, .cshtml
(hoặc .vbhtml
nếu đó là hương vị của bạn) cung cấp ánh xạ xử lý để tải động cơ MVC. Phần .aspx
mở rộng chỉ cần tải aspnet_isapi.dll thực hiện biên dịch và phục vụ các biểu mẫu web. Sự khác biệt trong ánh xạ trình xử lý chỉ đơn giản là một phương pháp cho phép cả hai cùng tồn tại trên cùng một máy chủ, cho phép cả ứng dụng MVC và ứng dụng WebForms sống dưới một gốc chung.
Điều này cho phép http://www.mydomain.com/MyMVCApplication hợp lệ và được cung cấp với các quy tắc MVC cùng với http://www.mydomain.com/MyWebFormsApplication hợp lệ như một biểu mẫu web chuẩn.
Chỉnh sửa:
Đối với sự khác biệt trong các công nghệ, khuôn khổ tạo khuôn mẫu MVC (Razor) nhằm mục đích trả lại các trang .Net về một nền tảng "dựa trên web" RESTful hơn với các chế độ xem mẫu phân tách logic mã giữa mô hình (đối tượng kinh doanh / dữ liệu) , khung nhìn (những gì người dùng nhìn thấy) và bộ điều khiển (kết nối giữa hai thứ này). Mô hình WebForms (aspx) là một nỗ lực của Microsoft nhằm sử dụng tính năng nhúng javascript phức tạp để mô phỏng một ứng dụng trạng thái hơn tương tự như ứng dụng WinForms hoàn chỉnh với các sự kiện và vòng đời trang có khả năng giữ lại trạng thái của chính nó từ trang này sang trang khác.
Lựa chọn sử dụng cái này hay cái kia sẽ luôn là một lựa chọn gây tranh cãi vì có những lập luận ủng hộ và chống lại cả hai hệ thống. Tôi cho một người thích sự đơn giản trong kiến trúc MVC (mặc dù định tuyến là bất cứ điều gì nhưng đơn giản) và sự dễ dàng của cú pháp Razor. Tôi cảm thấy kiến trúc WebForms quá nặng để trở thành một nền tảng web hiệu quả. Nói như vậy, có rất nhiều trường hợp mà khung công tác WebForms cung cấp một mô hình rất ngắn gọn và có thể sử dụng được với cấu trúc sự kiện phong phú được xác định rõ ràng. Tất cả đều phụ thuộc vào nhu cầu của ứng dụng và sở thích của những người xây dựng nó.
Razor là một công cụ xem cho ASP.NET MVC và cũng là một công cụ mẫu . Mã dao cạo và mã nội tuyến ASP.NET (mã trộn với đánh dấu) đều được biên dịch trước và được chuyển thành một tập hợp tạm thời trước khi được thực thi. Do đó, giống như C # và VB.NET đều biên dịch thành IL, điều này làm cho chúng có thể hoán đổi cho nhau, mã Razor và nội tuyến đều có thể hoán đổi cho nhau.
Do đó, vấn đề nhiều hơn là phong cách và sở thích. Tôi cảm thấy thoải mái hơn với dao cạo, thay vì mã nội tuyến ASP.NET, tức là tôi thích các trang Razor (cshtml) hơn các trang .aspx.
Hãy tưởng tượng rằng bạn muốn nhận một Human
lớp học và hiển thị nó. Trong các tệp cshtml bạn viết:
<div>Name is @Model.Name</div>
Khi ở trong tệp aspx bạn viết:
<div>Name is <%= Human.Name %></div>
Như bạn có thể thấy, @
dấu hiệu của dao cạo giúp trộn mã và đánh dấu dễ dàng hơn nhiều.
Model
được sử dụng cho các chế độ xem được đánh máy mạnh, trong đó bạn xác định loại của mình ở trên cùng bằng cách sử dụng model
từ khóa.
Mặc dù cú pháp chắc chắn là khác nhau giữa Razor ( .cshtml
/ .vbhtml
) và WebForms ( .aspx
/ .ascx
), (Razor ngắn gọn hơn và hiện đại hơn trong số hai), chưa ai đề cập đến điều đó trong khi cả hai đều có thể được sử dụng như View Engine / Templating Engines, ASP.NET truyền thống Điều khiển Biểu mẫu Web có thể được sử dụng trên bất kỳ tệp .aspx hoặc .ascx nào, (ngay cả khi gắn kết với kiến trúc MVC).
Điều này có liên quan trong các tình huống mà các giải pháp lâu dài cho một vấn đề đã được thiết lập và đóng gói thành một thành phần có thể cắm được (ví dụ: điều khiển tải lên tệp lớn) và bạn muốn sử dụng nó trong một trang web MVC. Với Razor, bạn không thể làm điều này. Tuy nhiên, bạn có thể thực thi tất cả cùng một quá trình xử lý phụ trợ mà bạn sẽ sử dụng với kiến trúc ASP.NET truyền thống với dạng xem Biểu mẫu Web.
Hơn nữa, các dạng xem biểu mẫu web ASP.NET có thể có các tệp Code-Behind, cho phép nhúng logic vào một tệp riêng biệt được biên dịch cùng với dạng xem. Mặc dù cộng đồng phát triển phần mềm ngày càng phát triển để coi các kiến trúc được kết hợp chặt chẽ và mô hình Smart Client là phương pháp không tốt , nhưng nó từng là cách hoạt động chính và vẫn rất khả thi với các tệp .aspx / .ascx. Dao cạo, cố ý, không có chất lượng như vậy.
Các tệp Cshtml là những tệp được Razor sử dụng và như đã nêu là câu trả lời cho câu hỏi này , lợi thế chính của chúng là chúng có thể được hiển thị bên trong các bài kiểm tra đơn vị. Các câu trả lời đa dạng cho chủ đề này khác sẽ mang lại rất nhiều điểm thú vị khác.