Situs Web adalah apa yang Anda sebarkan ke server web ASP.NET seperti IIS. Hanya banyak file dan folder. Tidak ada apa pun di Situs Web yang mengikat Anda ke Visual Studio (tidak ada file proyek). Pembuatan kode dan kompilasi halaman web (seperti .aspx, .ascx, .master) dilakukan secara dinamis saat runtime , dan perubahan pada file-file ini terdeteksi oleh framework dan secara otomatis dikompilasi ulang. Anda dapat meletakkan kode yang ingin Anda bagikan di antara halaman-halaman dalam folder App_Code khusus, atau Anda dapat melakukan pra-kompilasi dan meletakkannya di folder Bin.
Aplikasi Web adalah proyek Visual Studio khusus. Perbedaan utama dengan Situs Web adalah bahwa ketika Anda membangun proyek semua file kode dikompilasi menjadi satu rakitan, yang ditempatkan di direktori bin. Anda tidak menyebarkan file kode ke server web. Alih-alih memiliki folder khusus untuk file kode bersama, Anda dapat menempatkannya di mana saja, seperti yang Anda lakukan di perpustakaan kelas. Karena Aplikasi Web berisi file yang tidak dimaksudkan untuk digunakan, seperti file proyek dan kode, ada perintah Publikasikan di Visual Studio untuk menampilkan Situs Web ke lokasi yang ditentukan.
App_Code vs Bin
Menyebarkan file kode bersama umumnya adalah ide yang buruk, tetapi itu tidak berarti Anda harus memilih Aplikasi Web. Anda dapat memiliki Situs Web yang merujuk proyek perpustakaan kelas yang menyimpan semua kode untuk Situs Web. Aplikasi Web hanyalah cara mudah untuk melakukannya.
Kode di Balik
Topik ini khusus untuk file .aspx dan .ascx. Topik ini semakin relevan dalam kerangka kerja aplikasi baru seperti ASP.NET MVC dan ASP.NET Web Pages yang tidak menggunakan file codebehind.
Dengan memiliki semua file kode dikompilasi dalam satu sidang, termasuk CodeBehind file dari halaman .aspx dan kontrol Ascx, Aplikasi Web Anda harus membangun kembali untuk setiap perubahan kecil, dan Anda tidak dapat membuat perubahan hidup. Ini bisa sangat menyakitkan selama pengembangan, karena Anda harus terus membangun kembali untuk melihat perubahan, sementara dengan Situs Web perubahan terdeteksi oleh runtime dan halaman / kontrol secara otomatis dikompilasi ulang.
Memiliki runtime mengelola majelis codebehind kurang bekerja untuk Anda, karena Anda tidak perlu khawatir tentang memberikan halaman / mengontrol nama-nama unik, atau mengaturnya ke dalam ruang nama yang berbeda.
Saya tidak mengatakan menyebarkan file kode selalu merupakan ide yang baik (khususnya tidak dalam kasus file kode bersama), tetapi file codebehind hanya boleh berisi kode yang melakukan tugas-tugas spesifik UI, wire-up event handler, dll. Aplikasi Anda harus berlapis sehingga kode penting selalu berakhir di folder Bin. Jika itu masalahnya, maka menyebarkan file codebehind tidak dianggap berbahaya.
Keterbatasan Aplikasi Web lainnya adalah Anda hanya dapat menggunakan bahasa proyek. Di Situs Web Anda dapat memiliki beberapa halaman di C #, beberapa di VB, dll. Tidak perlu dukungan Visual Studio khusus. Itulah keindahan dari ekstensibilitas penyedia layanan.
Juga, di Aplikasi Web Anda tidak mendapatkan deteksi kesalahan di halaman / kontrol karena kompilator hanya mengkompilasi kelas codebehind Anda dan bukan kode markup (dalam MVC Anda dapat memperbaikinya menggunakan opsi MvcBuildViews), yang dikompilasi pada saat runtime.
Studio visual
Karena Aplikasi Web adalah proyek Visual Studio Anda mendapatkan beberapa fitur yang tidak tersedia di Situs Web. Misalnya, Anda dapat menggunakan build event untuk melakukan berbagai tugas, mis., Minify dan / atau menggabungkan file Javascript.
Fitur bagus lain yang diperkenalkan dalam Visual Studio 2010 adalah transformasi Web.config .Ini juga tidak tersedia di Situs Web. Sekarang berfungsi dengan Situs Web di VS 2013.
Membangun Aplikasi Web lebih cepat daripada membangun Situs Web, khususnya untuk situs besar. Ini terutama karena Aplikasi Web tidak mengkompilasi kode markup. Dalam MVC jika Anda mengatur MvcBuildViews menjadi true maka ia mengkompilasi kode markup dan Anda mendapatkan deteksi kesalahan, yang sangat berguna. Sisi buruknya adalah bahwa setiap kali Anda membangun solusi, ia membangun situs lengkap, yang bisa lambat dan tidak efisien, khususnya jika Anda tidak mengedit situs. Saya menemukan diri saya menghidupkan dan mematikan MvcBuildViews (yang membutuhkan pembongkaran proyek). Di sisi lain, dengan Situs Web Anda dapat memilih apakah Anda ingin membangun situs sebagai bagian dari solusi atau tidak. Jika Anda memilih untuk tidak melakukannya, maka membangun solusinya sangat cepat, dan Anda selalu dapat mengklik simpul Situs Web dan pilih Build, jika Anda telah membuat perubahan.
Dalam proyek Aplikasi Web MVC, Anda memiliki perintah dan dialog tambahan untuk tugas-tugas umum, seperti 'Tambah Tampilan', 'Buka Tampilan', 'Tambah Kontroler', dll. Ini tidak tersedia di Situs Web MVC.
Jika Anda menggunakan IIS Express sebagai server pengembangan, di Situs Web Anda dapat menambahkan direktori virtual. Opsi ini tidak tersedia di Aplikasi Web.
Pemulihan Paket NuGet tidak berfungsi di Situs Web, Anda harus menginstal paket secara manual yang terdaftar di packages.configPackage Restore sekarang berfungsi dengan Situs Web mulai NuGet 2.7