Trang web là những gì bạn triển khai đến một máy chủ web ASP.NET như IIS. Chỉ cần một loạt các tập tin và thư mục. Không có gì trong một trang web liên kết bạn với Visual Studio (không có tệp dự án). Việc tạo mã và biên dịch các trang web (như .aspx, .ascx, .master) được thực hiện một cách linh hoạt khi chạy và các thay đổi đối với các tệp này được phát hiện bởi khung và tự động biên dịch lại. Bạn có thể đặt mã mà bạn muốn chia sẻ giữa các trang trong thư mục App_Code đặc biệt hoặc bạn có thể biên dịch trước mã đó và đặt cụm trong thư mục Bin.
Ứng dụng web là một dự án Visual Studio đặc biệt. Sự khác biệt chính với các trang web là khi bạn xây dựng dự án, tất cả các tệp mã được biên dịch thành một tập hợp duy nhất, được đặt trong thư mục bin. Bạn không triển khai các tệp mã đến máy chủ web. Thay vì có một thư mục đặc biệt cho các tệp mã được chia sẻ, bạn có thể đặt chúng ở bất cứ đâu, giống như bạn sẽ làm trong thư viện lớp. Vì Ứng dụng web chứa các tệp không được triển khai, chẳng hạn như tệp dự án và mã, nên có lệnh Xuất bản trong Visual Studio để xuất Trang web đến một vị trí đã chỉ định.
App_Code vs Bin
Triển khai các tệp mã được chia sẻ nói chung là một ý tưởng tồi, nhưng điều đó không có nghĩa là bạn phải chọn Ứng dụng Web. Bạn có thể có một Trang web tham chiếu dự án thư viện lớp chứa tất cả mã cho Trang web. Ứng dụng web chỉ là một cách thuận tiện để làm điều đó.
Mã ẩn
Chủ đề này dành riêng cho các tệp .aspx và .ascx. Chủ đề này có liên quan nhẹ nhàng trong các khung ứng dụng mới, chẳng hạn như các trang web ASP.NET MVC và ASP.NET không sử dụng các tệp mã.
Bằng cách có tất cả các tệp mã được biên dịch thành một tập hợp duy nhất, bao gồm các tệp mã của các trang .aspx và các điều khiển .ascx, trong Ứng dụng web, bạn phải xây dựng lại cho mỗi thay đổi nhỏ và bạn không thể thực hiện thay đổi trực tiếp. Đây có thể là một nỗi đau thực sự trong quá trình phát triển, vì bạn phải tiếp tục xây dựng lại để xem các thay đổi, trong khi với các thay đổi Trang web được phát hiện bởi thời gian chạy và các trang / điều khiển được tự động biên dịch lại.
Việc quản lý thời gian chạy quản lý các hội đồng mã hóa sẽ ít làm việc hơn đối với bạn, vì bạn không cần phải lo lắng về việc cung cấp các trang / điều khiển tên duy nhất hoặc sắp xếp chúng thành các không gian tên khác nhau.
Tôi không nói rằng việc triển khai các tệp mã luôn là một ý tưởng tốt (đặc biệt không phải trong trường hợp các tệp mã được chia sẻ), nhưng các tệp mã chỉ nên chứa mã thực hiện các tác vụ cụ thể của UI, trình xử lý sự kiện nối dây, v.v. xếp lớp sao cho mã quan trọng luôn kết thúc trong thư mục Bin. Nếu đó là trường hợp thì việc triển khai các tệp codebehind không nên được coi là có hại.
Một hạn chế khác của Ứng dụng web là bạn chỉ có thể sử dụng ngôn ngữ của dự án. Trong trang web, bạn có thể có một số trang bằng C #, một số bằng VB, v.v. Không cần hỗ trợ Visual Studio đặc biệt. Đó là vẻ đẹp của khả năng mở rộng của nhà cung cấp xây dựng.
Ngoài ra, trong Ứng dụng web, bạn không nhận được lỗi phát hiện trong các trang / điều khiển vì trình biên dịch chỉ biên dịch các lớp mã của bạn chứ không phải mã đánh dấu (trong MVC bạn có thể sửa lỗi này bằng tùy chọn MvcBuildViews), được biên dịch khi chạy.
Visual Studio
Bởi vì Ứng dụng web là dự án Visual Studio, bạn nhận được một số tính năng không khả dụng trong Trang web. Chẳng hạn, bạn có thể sử dụng các sự kiện xây dựng để thực hiện nhiều tác vụ khác nhau, ví dụ như thu nhỏ và / hoặc kết hợp các tệp Javascript.
Một tính năng hay khác được giới thiệu trong Visual Studio 2010 là chuyển đổi Web.config .Điều này cũng không có sẵn trong các trang web. Bây giờ hoạt động với các trang web trong VS 2013.
Xây dựng một ứng dụng web nhanh hơn xây dựng một trang web, đặc biệt cho các trang web lớn. Điều này chủ yếu là do Ứng dụng web không biên dịch mã đánh dấu. Trong MVC nếu bạn đặt MvcBuildViews thành true thì nó sẽ biên dịch mã đánh dấu và bạn nhận được lỗi phát hiện, điều này rất hữu ích. Mặt trái là mỗi khi bạn xây dựng giải pháp, nó sẽ xây dựng trang hoàn chỉnh, có thể chậm và không hiệu quả, đặc biệt nếu bạn không chỉnh sửa trang. Tôi thấy mình bật và tắt MvcBuildViews (yêu cầu hủy tải dự án). Mặt khác, với các Trang web, bạn có thể chọn nếu bạn muốn xây dựng trang web như một phần của giải pháp hay không. Nếu bạn chọn không, thì việc xây dựng giải pháp rất nhanh và bạn luôn có thể nhấp vào nút Trang web và chọn Xây dựng, nếu bạn đã thực hiện thay đổi.
Trong dự án Ứng dụng web MVC, bạn có các lệnh và hộp thoại bổ sung cho các tác vụ phổ biến, như 'Thêm chế độ xem', 'Chuyển đến chế độ xem', 'Thêm bộ điều khiển', v.v. Những thứ này không có sẵn trong Trang web MVC.
Nếu bạn sử dụng IIS Express làm máy chủ phát triển, trong Trang web, bạn có thể thêm các thư mục ảo. Tùy chọn này không có sẵn trong Ứng dụng web.
Khôi phục gói NuGet không hoạt động trên các trang web, bạn phải cài đặt thủ công các gói được liệt kê trên gói.configGói Khôi phục hiện hoạt động với các Trang web bắt đầu NuGet 2.7