Folder kode bersama di situs web asp.net
Jika aplikasi web Anda menyertakan kode yang ingin Anda bagikan di antara beberapa halaman, Anda dapat menyimpan kode tersebut dalam sebuah file di dua folder khusus (folder Bin dan folder App_Code) di direktori akar aplikasi web Terjepit. Saat Anda membuat folder ini dan menyimpan tipe file tertentu di dalamnya, ASP.NET menangani file tersebut dengan cara khusus.
Folder bin Anda dapat menyimpan rakitan yang dikompilasi dalam folder Bin, dan kode lain (seperti kode halaman) di mana pun dalam aplikasi Web secara otomatis mereferensikan folder tersebut. Contoh umumnya adalah kode kompilasi Anda untuk kelas khusus. Anda dapat menyalin rakitan yang telah dikompilasi ke dalam folder Bin pada aplikasi Web Anda sehingga semua halaman dapat menggunakan kelas ini.
Rakitan di folder Bin tidak perlu didaftarkan. Selama file .dll ada di folder Bin, ASP.NET akan mengenalinya. Jika Anda mengubah file .dll dan menulis versi baru ke folder Bin, ASP.NET akan mendeteksi pembaruan dan menggunakan versi baru file .dll untuk permintaan halaman baru berikutnya.
Keamanan Folder Bin Menempatkan rakitan yang dikompilasi dalam folder Bin menimbulkan risiko keamanan. Jika Anda menulis dan mengkompilasi kodenya sendiri, Anda pasti tahu apa fungsi kode tersebut. Namun, Anda harus memperlakukan kode yang dikompilasi di folder Bin seperti kode yang dapat dieksekusi. Berhati-hatilah dengan kode yang dikompilasi sampai Anda mengujinya dan yakin bahwa Anda memahami fungsinya.
Harap perhatikan aspek keamanan berikut terkait dengan perlu atau tidaknya menempatkan kode yang dikompilasi di folder Bin:
Rakitan di folder Bin tercakup dalam aplikasi saat ini. Oleh karena itu, mereka tidak dapat mengakses sumber daya di luar aplikasi Web saat ini atau kode panggilan di luar aplikasi Web saat ini.
Pada saat dijalankan, tingkat akses suatu rakitan ditentukan oleh tingkat kepercayaan yang ditentukan pada komputer lokal. Untuk informasi selengkapnya, lihat Tingkat Kepercayaan dan File Kebijakan ASP.NET.
Jika Anda menggunakan desainer seperti Visual Studio, kode di folder Bin dijalankan dalam konteks yang berbeda dibandingkan saat dijalankan. Misalnya, kode mungkin dijalankan dengan kepercayaan penuh.
Folder App_Code Anda dapat menyimpan kode sumber di folder App_Code, yang akan dikompilasi secara otomatis pada saat run time. Kode lain apa pun di aplikasi web dapat mengakses rakitan yang dihasilkan. Oleh karena itu, folder App_Code berfungsi seperti folder Bin, hanya saja Anda dapat menyimpan kode sumber di dalamnya, bukan kode yang dikompilasi. Folder App_Code dan tempat khususnya dalam aplikasi web ASP.NET memungkinkan Anda membuat kelas khusus dan file khusus kode sumber lainnya dan menggunakannya dalam aplikasi web Anda tanpa harus mengompilasinya secara terpisah.
Folder App_Code dapat berisi file kode sumber yang ditulis dalam bentuk file kelas tradisional (yaitu file dengan ekstensi .vb, .cs, dll.). Namun, dapat juga berisi file yang tampaknya tidak ditulis secara eksplisit dalam bahasa pemrograman tertentu. Contohnya termasuk file .wsdl (Bahasa Deskripsi Layanan Web) dan file skema xml (.xsd). ASP.NET dapat mengkompilasi file-file ini ke dalam rakitan.
Folder App_Code dapat berisi file dan subfolder sebanyak yang Anda perlukan. Anda dapat mengatur kode sumber Anda sesuka Anda, dan ASP.NET akan tetap mengkompilasi semua kode ke dalam satu rakitan, dan rakitan tersebut dapat diakses oleh kode lain di mana pun dalam aplikasi Web.
Melihat
Kontrol pengguna tidak diperbolehkan di folder App_Code. Ini mencakup kontrol pengguna file tunggal serta kontrol pengguna yang menggunakan model di belakang kode. Menempatkan kontrol pengguna di direktori App_Code menyebabkan kode kontrol pengguna dikompilasi di luar urutan yang diperlukan dan oleh karena itu tidak diperbolehkan. Perhatikan bahwa tidak perlu menempatkan kontrol pengguna di folder App_Code; kontrol ini sudah tersedia untuk halaman mana pun dalam aplikasi.
Menyimpulkan bahasa pemrograman folder App_Code
Folder App_Code tidak secara eksplisit ditandai sebagai berisi file yang ditulis dalam salah satu bahasa pemrograman. Sebaliknya, ASP.NET menyimpulkan kompiler mana yang harus dipanggil untuk folder App_Code berdasarkan file yang dikandungnya. Jika folder App_Code berisi file .vb, ASP.NET menggunakan kompiler Visual Basic; jika berisi file .cs, ASP.NET menggunakan kompiler C#, dan seterusnya.
Jika folder App_Code hanya berisi file yang tidak secara eksplisit menunjukkan bahasa pemrograman (seperti file .wsdl), ASP.NET akan menggunakan kompiler default aplikasi web, yang ditemukan di elemen kompilasi aplikasi web atau file konfigurasi komputer Tentu .
Menggunakan Beberapa Bahasa Pemrograman di Folder App_Code Karena source code di folder App_Code dikompilasi menjadi satu assembly, maka semua file di folder App_Code harus ditulis dalam bahasa pemrograman yang sama. Misalnya, folder App_Code tidak boleh berisi kode sumber yang ditulis dalam Visual Basic dan C#.
Namun, Anda dapat mengonfigurasi aplikasi web Anda untuk memperlakukan subfolder dari folder App_Code sebagai unit terpisah yang dapat dikompilasi. Dengan cara ini, setiap folder dapat berisi kode sumber yang ditulis dalam bahasa pemrograman berbeda. Anda menentukan konfigurasi ini dengan membuat elemen kompilasi di elemen codeSubDirectories dari file Web.config dan kemudian menambahkan referensi ke subfolder. Contoh berikut mengilustrasikan cara mengonfigurasi subfolder bernama VBCode dan CSCode untuk dikompilasi ke dalam rakitan yang berbeda:
Salin kode
Keamanan folder App_Code
Masalah keamanan dengan kode di folder App_Code pada dasarnya sama dengan masalah keamanan dengan kode di folder Bin - kode dikompilasi ke dalam perakitan pada saat run time. Yang lebih baik dari folder Bin adalah Anda dapat membaca kode sumber file di folder App_Code. Namun, tetap ada risiko keamanan jika Anda tidak sepenuhnya memahami kodenya. Oleh karena itu, kode sumber di folder App_Code harus diperlakukan dengan hati-hati seperti kode kompilasi yang dihasilkan dari kode sumber yang sama.
Dikutip dari: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-