Situs Web ASP.NET atau Aplikasi Web ASP.NET?


848

Ketika saya memulai proyek ASP.NET baru di Visual Studio, saya bisa membuat Aplikasi Web ASP.NET atau saya bisa membuat Situs Web ASP.NET.

Apa perbedaan antara Aplikasi Web ASP.NET dan Situs Web ASP.NET? Mengapa saya memilih satu dari yang lain?

Apakah jawabannya berbeda berdasarkan versi Visual Studio yang saya gunakan?


6
Perbandingan dan penjelasan lengkap dan lebih baru (untuk 4,5) ditemukan di sini di MSDN: Proyek Aplikasi Web versus Proyek Situs Web di Visual Studio
Gustav

Jawaban:


556

Situs web:

The Web Site proyek dikompilasi dengan cepat. Anda berakhir dengan lebih banyak file DLL, yang bisa sangat menyebalkan. Ini juga memberikan masalah ketika Anda memiliki halaman atau kontrol dalam satu direktori yang perlu merujuk halaman dan kontrol di direktori lain karena direktori lain mungkin belum dikompilasi ke dalam kode. Masalah lain bisa di penerbitan.

Jika Visual Studio tidak diperintahkan untuk menggunakan kembali nama yang sama secara konstan, itu akan muncul dengan nama baru untuk file DLL yang dihasilkan oleh halaman sepanjang waktu. Itu dapat menyebabkan memiliki beberapa salinan dekat file DLL yang mengandung nama kelas yang sama, yang akan menghasilkan banyak kesalahan. Proyek Situs Web diperkenalkan dengan Visual Studio 2005, tetapi ternyata tidak menjadi populer.

Aplikasi web:

The Web Application Project diciptakan sebagai add-in dan sekarang ada sebagai bagian dari SP 1 untuk Visual Studio 2005. Perbedaan utama adalah Application Project Web dirancang untuk bekerja sama dengan proyek-proyek Web yang dikirimkan dengan Visual Studio 2003. Ini akan mengkompilasi aplikasi menjadi satu file DLL saat membangun. Untuk memperbarui proyek, itu harus dikompilasi ulang dan file DLL diterbitkan agar terjadi perubahan.

Fitur bagus lain dari proyek Aplikasi Web adalah lebih mudah untuk mengecualikan file dari tampilan proyek. Dalam proyek Situs Web, setiap file yang Anda kecualikan diganti dengan kata kunci yang dikecualikan dalam nama file. Dalam Proyek Aplikasi Web, proyek hanya melacak file mana yang akan dimasukkan / dikecualikan dari tampilan proyek tanpa mengubah nama mereka, membuat hal-hal jauh lebih rapi.

Referensi

Artikel ASP.NET 2.0 - Situs Web vs proyek Aplikasi Web juga memberikan alasan mengapa menggunakan satu dan bukan yang lain. Berikut ini kutipannya:

  • Anda perlu memigrasi aplikasi Visual Studio .NET 2003 yang besar ke VS 2005? gunakan proyek Aplikasi Web.
  • Anda ingin membuka dan mengedit direktori apa pun sebagai proyek Web tanpa membuat file proyek? gunakan proyek Situs Web.
  • Anda perlu menambahkan langkah pra-bangun dan pasca-bangun selama kompilasi? menggunakan proyek Aplikasi Web.
  • Anda perlu membangun aplikasi Web menggunakan beberapa proyek Web? menggunakan proyek Aplikasi Web.
  • Anda ingin membuat satu unit untuk setiap halaman? gunakan proyek Situs Web.
  • Anda lebih suka kompilasi dinamis dan bekerja pada halaman tanpa membangun seluruh situs pada setiap tampilan halaman? gunakan proyek Situs Web.
  • Anda lebih suka model kode satu halaman daripada model di belakang kode? gunakan proyek Situs Web.

Proyek Aplikasi Web versus Proyek Situs Web (MSDN) menjelaskan perbedaan antara situs web dan proyek aplikasi web. Juga, membahas konfigurasi yang akan dibuat di Visual Studio.


5
Anda masih dapat mengkompilasi seluruh situs Anda menjadi dll dengan Situs Web berbasis file.
dtc

31
Cara saya cenderung memikirkannya. Jika Anda memprogram aplikasi yang kebetulan menggunakan HTML seperti UI, maka gunakan Aplikasi Web. Jika Anda memiliki situs web yang membutuhkan sedikit Asp.net pada beberapa halamannya gunakan Proyek Situs Web.
Ian Ringrose

35
Sebenarnya, Proyek Aplikasi Web adalah tipe proyek ASP.NET yang asli. Mereka bukan "seperti" proyek yang kami miliki di Visual Studio 2003. Mereka tidak dibuat sebagai tambahan. Visual Studio 2005 SP1 hanya mengembalikan apa yang Visual Studio 2005 RTM salah hapus.
John Saunders

1
Anda dapat menggunakan output WebApplication dalam proyek WebDeployment. Anda tidak dapat menggunakan output WebSite dalam proyek WebDeployment. Jika Anda ingin membuat proyek Penempatan, tetap menggunakan Aplikasi Web. Tetapi untuk pengembangan, WebSite lebih nyaman. Namun, konversi tidak selalu bermasalah, jadi mulailah dengan Aplikasi Web segera.
Stefan Steiger

8
@xarzu: "proyek" situs web tidak memiliki file .csproj atau .vbproj. Mereka tidak benar-benar proyek - mereka hanya folder yang penuh dengan file.
John Saunders

171

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


43
Karena programmer menulis aplikasinya, maka aplikasi tersebut kemudian dibangun. Tim uji menguji aplikasi pada sistem uji. Kemudian pelanggan menginstal aplikasi. Yang LAST pikir Anda inginkan adalah siapa pun yang membuat perubahan langsung!
Ian Ringrose

12
Bagi saya memiliki pilihan adalah yang terbaik, di situs web Anda selalu dapat mewarisi dari kelas dasar yang sudah dikompilasi jika Anda mau. Ada banyak bahasa / kerangka kerja (misalnya PHP) di mana orang terbiasa dengan gagasan menggunakan kode sumber. Itu tidak berarti itu bukan aplikasi 'serius'.
Max Toro

6
"Sebenarnya, kamu tidak mengelola DLL itu, [...] kamu bahkan tidak perlu tahu mereka ada. Bukan masalah." - Hingga kerangka menjadi bingung, tidak membersihkan versi lama dengan benar, dan mulai melempar pengecualian kompilasi dengan nama yang bertentangan di seluruh situs ... Anda dapat menambahkan deteksi kesalahan markup melalui penggunaan proyek WebDeployment. Saya juga tidak yakin pada poin terakhir Anda "dengan situs web Anda dapat menggunakan IIS sebagai server", Anda dapat melakukan ini dengan Aplikasi Web juga - dan saya memiliki proyek seperti ini di mana proyek tersebut merupakan bagian dari aplikasi web yang lebih besar.
Zhaph - Ben Duguid

3
Menyebarkan situs web tidak selalu harus ke server langsung. Iterasi pembangunan harus, di dunia yang sempurna, diuji pada cermin lingkungan hidup. Dengan Ketidakmampuan Aplikasi Web untuk membuat perubahan kode cepat ke situs yang berjalan pada server Pengembangan IIS (yaitu tidak menjalankan menggunakan contoh VS lokal) membuatnya sulit untuk menguji solusi cepat kecil. Ini terjadi setiap saat dalam sistem di mana Anda tidak dapat mereplikasi kondisi yang sama pada mesin lokal Anda.
NikoRoberts

4
"Ini bisa menjadi rasa sakit yang nyata selama pengembangan, karena Anda harus terus membangun kembali untuk melihat perubahan" ... ingatlah itu harus menjadi proyek BESAR atau komputer BENAR-BENAR TUA agar menjadi susah untuk dilakukan a membangun kembali hari ini.
Darren

75

Situs Web = digunakan ketika situs web dibuat oleh desainer grafis dan programmer hanya mengedit satu atau dua halaman

Aplikasi Web = digunakan ketika aplikasi dibuat oleh programmer dan desainer grafis hanya mengedit satu atau dua halaman / gambar.

Situs Web dapat dikerjakan menggunakan alat HTML apa pun tanpa harus memiliki studio pengembang, karena file proyek tidak perlu diperbarui, dll. Aplikasi web terbaik ketika tim sebagian besar menggunakan studio pengembang dan ada konten kode yang tinggi.

(Beberapa kesalahan pengkodean ditemukan di Aplikasi Web pada waktu kompilasi yang tidak ditemukan di Situs Web hingga waktu berjalan.)

Peringatan: Saya menulis jawaban ini bertahun-tahun yang lalu dan sejak itu tidak menggunakan Asp.net. Saya berharap hal-hal sekarang telah pindah.


40

Kecuali jika Anda memiliki kebutuhan khusus untuk proyek yang dikompilasi secara dinamis, jangan gunakan proyek situs web .

Mengapa? Karena proyek situs web akan membuat Anda bingung ketika mencoba mengubah atau memahami proyek Anda. Fitur pencarian pengetikan statis (mis. Penggunaan penggunaan, refactor) di Visual Studio semuanya akan berlangsung selamanya pada setiap proyek berukuran wajar. Untuk informasi lebih lanjut, lihat pertanyaan Stack Overflow Lambat "Temukan Semua Referensi" di Visual Studio .

Saya benar-benar tidak dapat melihat mengapa mereka menjatuhkan aplikasi web di Visual Studio 2005 untuk jenis proyek situs web carbuncle yang merangsang rasa sakit, menguras produktivitas, dan meningkatkan produktivitas.


30

Ada artikel di MSDN yang menjelaskan perbedaan:

Membandingkan Proyek Situs Web dan Proyek Aplikasi Web

BTW: ada beberapa pertanyaan serupa tentang topik itu, misalnya:


Saya kira jawabannya tentang haruskah saya menggunakan codefile atau codebehind dalam markup hilang dengan jawaban yang telah dihapus oleh SO ...
frenchone

Jadi bagi mereka yang bertanya-tanya: aplikasi web = solusi terstruktur dengan baik = codebehind di markup VS situs web = sekelompok file = codefile di markup
frenchone

22

Ini mungkin terdengar agak jelas, tetapi saya pikir itu adalah sesuatu yang disalahpahami karena Visual Studio 2005 hanya dikirim dengan situs web pada awalnya. Jika proyek Anda berurusan dengan situs web yang cukup terbatas dan tidak memiliki banyak pemisahan logis atau fisik, situs web itu baik-baik saja. Namun jika itu benar-benar aplikasi web dengan modul berbeda di mana banyak pengguna menambahkan dan memperbarui data, Anda lebih baik dengan aplikasi web.

Pro terbesar dari model situs web adalah bahwa apa pun di app_codebagian ini dikompilasi secara dinamis. Anda dapat membuat pembaruan file C # tanpa menggunakan kembali sepenuhnya. Namun ini datang dengan pengorbanan besar. Banyak hal terjadi di bawah selimut yang sulit dikendalikan. Ruang nama sulit untuk dikendalikan dan penggunaan DLL tertentu keluar jendela secara default untuk apa pun di bawahapp_code karena semuanya dikompilasi secara dinamis.

Model aplikasi web tidak memiliki kompilasi dinamis, tetapi Anda mendapatkan kendali atas hal-hal yang telah saya sebutkan.

Jika Anda melakukan pengembangan n-tier, saya sangat merekomendasikan model aplikasi web. Jika Anda melakukan situs web terbatas atau implementasi cepat dan kotor, model situs web mungkin memiliki kelebihan.

Analisis lebih rinci dapat ditemukan di:


3
> Pro terbesar dari model situs web adalah apa pun yang ada di bagian app_code dikompilasi secara dinamis. Ini memiliki kerugian besar juga. Situs web saya di-host dengan webhost4life yang murah tapi kaya fitur. The downside adalah bahwa mereka mendaur ulang proses pekerja sangat sering (15 menit?) Yang berarti bahwa pengguna berikutnya memiliki halaman pertama yang sangat lambat sebagai aplikasi dikompilasi ulang.
Rob Nicholson

19

Dari buku kit pelatihan MCTS self-pacu 70-515 buku:

Dengan aplikasi web (proyek),

  1. Anda dapat membuat aplikasi MVC.
  2. Visual Studio menyimpan daftar file dalam file proyek (.csproj atau .vbproj), daripada mengandalkan struktur folder.
  3. Anda tidak dapat mencampur Visual Basic dan C #.
  4. Anda tidak dapat mengedit kode tanpa menghentikan sesi debugging.
  5. Anda dapat membangun ketergantungan antara beberapa proyek web.
  6. Anda harus mengkompilasi aplikasi sebelum penyebaran, yang mencegah Anda menguji halaman jika halaman lain tidak dapat dikompilasi.
  7. Anda tidak harus menyimpan kode sumber di server.
  8. Anda dapat mengontrol nama dan versi perakitan.
  9. Anda tidak dapat mengedit file individual setelah penyebaran tanpa kompilasi ulang.

# 4 salah "Edit dan Lanjutkan" dapat diaktifkan, dengan beberapa batasan. Mungkin ini benar pada tahun 2011. # 9 seharusnya mengatakan "Anda tidak dapat mengedit file kode sumber individual tanpa kompilasi ulang". Anda dapat mengedit .aspx, .js, .css, dll. Tanpa mengkompilasi ulang.
John Saunders

# 4 memiliki sudut pandang lain. Jika Anda membuka situs web menggunakan File> Open> Website dan menavigasi ke folder sistem file untuk situs web, alih-alih membuka situs melalui memilih solusi dari jendela mulai, Anda dapat mengedit modul kelas dan codebehind (setidaknya di vb.net ) tanpa menghentikan debug. Anda tidak akan melihat perubahan sampai Anda membangun kembali, namun, sering kali berguna untuk dapat melihat perilaku halaman saat Anda memodifikasi kode. Kelemahannya adalah Anda kehilangan semua yang masuk ke dalam solusi: breakpoints, file terbuka, bookmark dll. Dan Anda harus menghapus file sln / sou kadang-kadang.
musafir

16

Itu tergantung pada apa yang Anda kembangkan.

Situs web berorientasi konten akan sering mengubah kontennya dan Situs Web lebih baik untuk itu.

Suatu aplikasi cenderung memiliki data yang disimpan dalam database dan halaman-halamannya dan perubahan kode jarang terjadi. Dalam hal ini lebih baik untuk memiliki aplikasi Web di mana penyebaran majelis jauh lebih terkontrol dan memiliki dukungan yang lebih baik untuk pengujian unit.


16

Compilation Pertama ada perbedaan dalam kompilasi. Situs Web tidak dikompilasi sebelumnya di server, ini dikompilasi pada file. Ini mungkin menguntungkan karena ketika Anda ingin mengubah sesuatu di Situs Web Anda, Anda dapat mengunduh file tertentu dari server, mengubahnya dan mengunggah file ini kembali ke server dan semuanya akan berfungsi dengan baik. Dalam Aplikasi Web Anda tidak dapat melakukan ini karena semua sudah dikompilasi dan Anda hanya berakhir dengan satu dll. Ketika Anda mengubah sesuatu dalam satu file proyek Anda, Anda harus mengkompilasi ulang semuanya lagi. Jadi jika Anda ingin memiliki kemungkinan untuk mengubah beberapa file di server Situs Web adalah solusi yang lebih baik untuk Anda. Ini juga memungkinkan banyak pengembang untuk bekerja di satu Situs Web. Di sisi lain, jika Anda tidak ingin kode Anda tersedia di server Anda sebaiknya memilih Aplikasi Web.

Project structure Ada juga perbedaan dalam struktur proyek. Di Aplikasi Web Anda memiliki file proyek seperti yang Anda miliki di aplikasi normal. Di Situs Web tidak ada file proyek tradisional, yang Anda miliki hanyalah file solusi. Semua referensi dan pengaturan disimpan dalam file web.config. @Page directive Ada atribut berbeda dalam direktif @Page untuk file yang berisi kelas yang terkait dengan halaman ini. Dalam Aplikasi Web itu adalah standar "CodeBehind", di Situs Web Anda menggunakan "CodeFile". Anda dapat melihat ini dalam contoh di bawah ini:

Aplikasi web:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

Situs web:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

Namespaces - Dalam contoh di atas Anda dapat melihat juga perbedaan lain - bagaimana namespaces dibuat. Dalam Aplikasi Web namespace hanyalah nama proyek. Di situs web ada ASP namespace default untuk halaman yang dikompilasi secara dinamis.

Sunting dan Lanjutkan- Di opsi Edit dan Lanjutkan Aplikasi Web (untuk mengaktifkannya Anda harus pergi ke Menu Alat, klik Opsi kemudian temukan Sunting dan Lanjutkan di Debugging). Fitur ini tidak berfungsi di Situs Web.ASP.NET MVCI jika Anda ingin mengembangkan aplikasi web menggunakan

ASP.NET MVC (Model View Controller) pilihan terbaik dan default adalah Aplikasi Web. Meskipun dimungkinkan untuk menggunakan MVC di Situs Web, itu tidak dianjurkan.

Ringkasan - Perbedaan paling penting antara Aplikasi Web ASP.NET dan Situs Web adalah kompilasi. Jadi jika Anda bekerja pada proyek yang lebih besar di mana beberapa orang dapat memodifikasinya lebih baik menggunakan Situs Web. Tetapi jika Anda melakukan proyek yang lebih kecil Anda dapat menggunakan Aplikasi Web juga.


Pada proyek besar di mana lebih dari satu orang mengubahnya, Anda menggunakan kontrol sumber, jadi ini bukan alasan untuk menggunakan "proyek" situs web.
John Saunders

+1 untuk perbedaan dalam codebehind (webapp) vs codefile (situs web) di halaman direktif. Ini adalah ketepatan yang kurang dalam jawaban yang dipilih.
frenchone

11

Ya, aplikasi web jauh lebih baik daripada situs web, karena aplikasi Web memberi kita kebebasan:

  1. Untuk memiliki beberapa proyek di bawah satu payung dan membangun ketergantungan proyek antara. Misalnya untuk PCS kita dapat mengikuti di dalam aplikasi web-

    • Portal web
    • Notification Controller (untuk mengirim Email)
    • Lapisan bisnis
    • Lapisan Akses Data
    • Manajer Pengecualian
    • Utilitas server
    • Layanan WCF (Umum untuk semua platform)
    • Daftar barang
  2. Untuk menjalankan tes unit pada kode yang ada di file kelas yang terkait dengan halaman ASP.NET

  3. Untuk merujuk ke kelas yang terkait dengan halaman dan kontrol pengguna dari kelas mandiri
  4. Untuk membuat satu perakitan untuk seluruh situs
  5. Kontrol atas nama rakitan dan nomor versi yang dihasilkan untuk situs
  6. Untuk menghindari menempatkan kode sumber pada server produksi. (Anda dapat menghindari penggunaan kode sumber ke server IIS. Dalam beberapa skenario, seperti lingkungan hosting bersama, Anda mungkin khawatir tentang akses tidak sah ke kode sumber di server IIS. (Untuk proyek situs web, Anda dapat menghindari risiko ini dengan pra-kompilasi pada komputer pengembangan dan menggunakan majelis yang dihasilkan alih-alih kode sumber. Namun, dalam hal ini Anda kehilangan beberapa manfaat dari pembaruan situs yang mudah.)
  7. Masalah Kinerja dengan Situs Web (Permintaan pertama ke situs web mungkin mengharuskan situs untuk dikompilasi, yang dapat mengakibatkan penundaan. Dan jika situs web berjalan pada server IIS yang kekurangan memori, termasuk seluruh situs dalam perakitan tunggal mungkin menggunakan lebih banyak memori daripada yang dibutuhkan untuk banyak majelis.)

11

Salah satu perbedaan utama adalah bahwa Situs Web mengkompilasi secara dinamis dan membuat rakitan on-the-fly. Aplikasi web dikompilasi menjadi satu majelis besar.

Perbedaan antara keduanya telah dihilangkan dalam Visual Studio 2008.


4
"Perbedaan antara 2 telah dihapus dengan di vs2008" - tidak yakin apa yang Anda maksud di sana - mereka masih jenis proyek yang berbeda di VS2008, berperilaku berbeda dan dibuat melalui opsi menu yang berbeda - namun setidaknya keduanya tersedia secara default dalam VS2008.
Zhaph - Ben Duguid

9

Aplikasi biasanya dikompilasi sebelum penyebaran di mana situs web menggunakan direktori app_code. Ketika ada perubahan di folder kode aplikasi server akan mengkompilasi ulang kode tersebut. Ini berarti Anda dapat menambah / mengubah kode dengan situs web saat itu juga.

Keuntungan dari suatu aplikasi adalah tidak ada kompilasi ulang sehingga waktu memulai awal akan lebih cepat.


Itu sebagian benar, Anda dapat mengkompilasi halaman di situs web jika Anda mau
Amr H. Abd Elmajeed

8

Saya sarankan Anda menonton video Project Application Projects & Web Deployment Projects di situs web ASP.NET yang menjelaskan perbedaannya dengan sangat rinci, itu cukup membantu saya.

Ngomong-ngomong, jangan bingung dengan judulnya, sebagian besar video menjelaskan perbedaan antara proyek situs web dan proyek aplikasi web dan mengapa Microsoft memperkenalkan kembali proyek aplikasi Web di Visual studio 2005 (seperti yang mungkin sudah Anda ketahui, itu awalnya dikirimkan hanya dengan proyek situs web kemudian proyek aplikasi web ditambahkan dalam SP1). Video yang luar biasa saya sangat merekomendasikan untuk siapa saja yang ingin mengetahui perbedaannya.



7

"Situs web" memiliki kode di direktori App_Code khusus dan dikompilasi ke dalam beberapa DLL (rakitan) saat runtime. "Aplikasi web" dikompilasi menjadi satu DLL tunggal.


5

Situs web dan Situs web >> situs web adalah dua metode berbeda untuk membuat aplikasi ASP.NET menggunakan visual studio. Satu tanpa proyek dan lainnya adalah lingkungan proyek. Perbedaannya adalah sebagai

  1. File solusi disimpan dalam direktori yang sama dengan direktori root di lingkungan proyek.
  2. Perlu menghapus solusi dan memproyeksikan file sebelum digunakan di lingkungan proyek.
  3. Direktori root lengkap dikerahkan di lingkungan tanpa proyek.

tidak ada banyak perbedaan mendasar dalam menggunakan kedua pendekatan tersebut. Tetapi jika Anda membuat situs web yang membutuhkan waktu lebih lama, pilihlah lingkungan proyek.


1
File solusi tidak perlu berada di folder yang sama. Juga, mekanisme publikasi standar menghapus artefak yang tidak boleh ada di situs target, misalnya, file kode belakang tidak digunakan.
John Saunders

5

Model proyek Aplikasi Web

  • Menyediakan semantik proyek Web yang sama dengan proyek Visual Studio .NET Web. Memiliki file proyek (struktur berdasarkan file proyek). Model bangun - semua kode dalam proyek dikompilasi menjadi satu perakitan. Mendukung IIS dan Server Pengembangan ASP.NET bawaan. Mendukung semua fitur Visual Studio 2005 (refactoring, generik, dll.) Dan ASP.NET (halaman master, keanggotaan dan login, navigasi situs, tema, dll). Menggunakan FrontPage Server Extensions (FPSE) tidak lagi menjadi persyaratan.

Model proyek Situs Web

  • Tidak ada file proyek (Berdasarkan sistem file).
  • Model kompilasi baru.
  • Kompilasi dinamis dan bekerja pada halaman tanpa membangun seluruh situs pada setiap tampilan halaman.
  • Mendukung IIS dan Server Pengembangan ASP.NET bawaan.
  • Setiap halaman memiliki perakitan sendiri.
  • Model kode defferent.

5

Itu selalu tergantung pada kebutuhan klien Anda. ASP.NET hanya menyertakan fitur fleksibel yang dibutuhkan pengguna untuk keamanan dan perawatan aplikasi Anda yang mudah.

Anda dapat menganggap aplikasi Web sebagai file biner yang berjalan di dalam kerangka ASP.NET. Dan situs Web sebagai halaman web statis yang dapat Anda tinjau dan dengan mudah menyebarkan kode sumber.

Tetapi keuntungan dan kerugian dari kedua teknologi ASP.NET ini datang apa yang baik.


4

Situs web - Tidak ada file solusi yang akan dibuat. Jika kita ingin membuat situs web, tidak perlu studio visual.

Aplikasi Web - File solusi akan dibuat. Jika kita ingin membuat aplikasi web harus membutuhkan visual studio. Ini akan membuat satu .dllfile di folder bin.


2
-1 Anda sebenarnya memiliki file solusi jika Anda membuat proyek situs web melalui studio visual. Anda tidak memiliki file proyek.
Darren

+1 yakin, Anda dapat membuat file solusi tetapi sebagian besar file ini kosong sehingga hanya mengganggu (VS bertanya di mana harus menyimpan file saat keluar) dan bukan sesuatu yang bermanfaat
frenchone

3

Dalam Proyek Aplikasi Web, Visual Studio membutuhkan file .designer tambahan untuk halaman dan kontrol pengguna. Proyek Situs Web tidak memerlukan overhead ini. Markup itu sendiri diartikan sebagai desain.


3

WebSite: Ini menghasilkan folder app_code secara otomatis dan jika Anda menerbitkannya di server dan setelah itu jika Anda melakukan beberapa perubahan pada file atau halaman tertentu daripada Anda tidak perlu melakukan kompilasi semua file.

Aplikasi Web Ini menghasilkan file solusi secara otomatis situs web mana yang tidak menghasilkan dan jika Anda mengubah dalam satu file daripada Anda harus mengkompilasi proyek penuh untuk mencerminkan perubahannya.


"Kompilasi proyek penuh" tidak berarti mengkompilasi setiap file dalam proyek. File kode sumber yang tidak berubah tidak akan dikompilasi ulang.
John Saunders

3

Dalam aplikasi web Anda dapat membuat lapisan fungsionalitas proyek Anda dan dapat membuat saling ketergantungan di antara mereka dengan membaginya menjadi banyak proyek, tetapi Anda tidak pernah dapat melakukan ini di situs web.


3

Pasti aplikasi web, file DLL tunggal dan mudah dirawat. Tetapi situs web lebih fleksibel; Anda dapat mengedit file aspx saat bepergian.


Anda dapat mengedit file aspx dalam proyek aplikasi web juga.
John Saunders

3

Aplikasi web memerlukan lebih banyak memori, mungkin karena Anda tidak punya pilihan selain mengkompilasi menjadi satu rakitan. Saya baru saja mengkonversi situs warisan besar ke aplikasi web dan memiliki masalah dengan kehabisan memori, keduanya pada waktu kompilasi dengan pesan kesalahan seperti di bawah ini:

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

kesalahan, dan saat runtime dengan pesan kesalahan ini seperti di bawah ini:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

Rekomendasi saya untuk mengonversi situs yang lebih besar pada perangkat keras warisan terbatas memori adalah, untuk memilih opsi untuk kembali ke model situs web. Bahkan setelah masalah sukses awal mungkin merayap nanti.


Itu tampaknya bukan pengecualian waktu kompilasi.
John Saunders

1

Berikut Aplikasi Pendukung Web adalah contoh situs web.

Berikut Aplikasi Pendukung Web adalah contoh situs web. Situs Web dan Aplikasi Web keduanya dapat bersifat dinamis / statis tergantung pada persyaratan, berikut adalah contoh untuk memahami cara kerja situs web dan aplikasi web.


Ini tidak berlaku di asp.net. Perbedaan situs web / aplikasi web (dalam terminologi asp.net) lebih tentang bagaimana file diorganisasikan (sebagai solusi yang terorganisir dengan baik atau sebagai sekelompok file) dan dikompilasi ("JIT" vs statis). Dalam kedua kasus tersebut, "program" utamanya adalah sisi server.
frenchone

0

Untuk merangkum beberapa jawaban di atas:

Fleksibilitas , dapatkah Anda membuat perubahan langsung ke halaman web?

Situs Web : Kemungkinan. Pro: manfaat jangka pendek. Con: risiko jangka panjang dari kekacauan proyek.

Aplikasi Web : Con: tidak mungkin. Edit halaman, arsip perubahan ke kontrol sumber, lalu buat dan sebarkan seluruh situs. Pro: pertahankan proyek yang berkualitas.

Masalah pembangunan

Situs Web : Struktur proyek sederhana tanpa file .csproj. Dua halaman .aspx mungkin memiliki nama kelas yang sama tanpa konflik. Nama direktori proyek acak yang mengarah ke membangun kesalahan seperti mengapa .net framework konflik dengan file yang dihasilkan sendiri dan mengapa .net framework konflik dengan file yang dihasilkan sendiri . Pro: Sederhana (simplistis). Con: tidak menentu.

Aplikasi Web : Struktur proyek mirip dengan proyek WebForms, dengan file .csproj. Nama kelas halaman asp harus unik. Pro: Sederhana (pintar). Con: tidak ada, karena aplikasi web masih sederhana.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.