Sedikit tentang file web.config
Sedikit tentang file web.config
What is web.config?
Web.config
adalah sebuah file text berformat XML. File web.config ini merupakan
file konfigurasi yang akan menyimpan data-data penting yang dibutuhkan
oleh sebuah aplikasi ASP.NET. Data konfigurasi yang biasa disimpan dalam
file web.config adalah data tentang Connection Strings. Namun demikian,
isi file web.config tidak terbatas pada Connection Strings saja. Mail
Server Settings merupakan contoh lain data konfigurasi yang biasa
disimpan pada file web.config.
Why web.config?
Data
konfigurasi bisa langsung di “hard-code” pada file source code, namun
hal tersebut merupakan ide yang kurang bagus. Dengan menyimpan data-data
konfigurasi pada file web.config maka ketika ada perubahan tentang
data-data konfigurasi tersebut maka tidak usah repot-repot merubah code,
melakukan re-build dan re-deploy. Perubahan tinggal dilakukan pada file
web.config saja.
How does it look like?
Berikut adalah file web.config yang automatically generated:
<?xml version="1.0"?> <configuration> <appSettings> </appSettings> <connectionStrings> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> </system.web> </configuration>
Seperti
dapat dilihat diatas, file web.config merupakan sebuah file text dengan
format XML. Data-data konfigurasi diletakan diantara
<configuration> dan </configuration>. Data disimpan dengan
konsep Key Value Pair (Pasangan Key dan Value). Key akan berisi
identitas dan Value akan berisi data konfigurasi. Berikut adalah contoh
penambahan data konfigurasi yang berupa Key Value pair.
<?xml version="1.0"?> <configuration> <appSettings> <add key="NamaKu" value="Ismail Hamzah Test"/> </appSettings> <connectionStrings> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> </system.web></configuration>
Pada source code, value dapat diakses dengan menggunakan kelas System.Configuration.ConfigurationManager.
protected void Button1_Click(object sender, EventArgs e) { Button1.Text = (string)ConfigurationManager.AppSettings["NamaKu"];
}
|
Dengan code diatas, maka text dari control Button1 akan diisi oleh nilai yang terkandung dalam Value dari Key “NamaKu”.
Menambahkan Connection String
Connection
String akan berisi informasi tentang database yang akan digunakan oleh
aplikasi ASP.NET yang sedang didevelop. Oleh karena itu, maka attribute
Value akan berisi informasi tentang nama server, nama database, userid
dan password.
<?xml version="1.0"?> <configuration> <appSettings> <add key="NamaKu" value="Ismail Hamzah Test"/> <add key="KoneksiKu" value="server=dev06;database=northwind;uid=northwind;pwd=password123"/> </appSettings> <connectionStrings> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> </system.web></configuration>
Dari
file web.config diatas maka dapat diketahui data konfigurasi yang
digunakan yaitu, dev06 sebagai nama server, northwind adalah database
yang digunakan, userid yang digunakan northwind dan password nya adalah
password123. Seperti biasa, data-data tersebut dapat diakses menggunakan
kelas ConfigurationManager.
protected void Button1_Click(object sender, EventArgs e) { Button1.Text = (string)ConfigurationManager.AppSettings["NamaKu"]; string dataKoneksi = (string)ConfigurationManager.AppSettings["KoneksiKu"]; using (SqlConnection conn = new SqlConnection(dataKoneksi)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from employees"; try { conn.Open(); SqlDataReader sr = cmd.ExecuteReader(); GridView1.DataSource = sr; GridView1.DataBind(); } catch (Exception) { } }}
Tips1: Menggunakan <connectionStrings></connectionStrings>
Jika
diperhatikan, pada file web.config yang auto generated, terdapat
element <connectionStrings></connectionStrings>. Element
tersebut khusus digunakan untuk menyimpan data konfigurasi connection
strings.
<?xml version="1.0"?> <configuration> <appSettings> <add key="NamaKu" value="Ismail Hamzah Test"/> <add key="KoneksiKu" value="server=dev06;database=northwind;uid=northwind;pwd=password123"/> </appSettings> <connectionStrings> <add name="KoneksiKuLainnya" connectionString="server=dev06;database=northwind;uid=northwind;pwd=password123" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> </system.web></configuration>
Contoh cara mengakses data connection strings tersebut adalah:
protected void Button2_Click(object sender, EventArgs e) { string dataKoneksi = ConfigurationManager.ConnectionStrings["KoneksiKuLainnya"].ToString(); using (SqlConnection conn = new SqlConnection(dataKoneksi)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from employees"; try { conn.Open(); SqlDataReader sr = cmd.ExecuteReader(); GridView1.DataSource = sr; GridView1.DataBind(); } catch (Exception) { } }}
Tips2: Encapsulation
Akses
pada connection strings akan sering dilakukan pada source code. Kalau
melakukannya seperti cara diatas maka jika ada perubahan akan ada
potensi untuk melakukannya di banyak tempat. Lokalisasi hard-code
merupakan cara yang menurut saya cukup elegan, meminjam istilah Object
Oriented, let’s abstract the connection string information. Cara
sederhananya adalah dengan membuat sebuah class. Buat sebuah property
static yang akan meng-Get connection strings.
using System.Configuration; public class Configuration { public static string Koneksi { get { return ConfigurationManager.ConnectionStrings["KoneksiKuLainnya"].ToString(); } }}
Akses pada connection strings tersebut dilakukan dengan cara:
protected void Button3_Click(object sender, EventArgs e) { string dataKoneksi = Configuration.Koneksi; using (SqlConnection conn = new SqlConnection(dataKoneksi)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from employees"; try { conn.Open(); SqlDataReader sr = cmd.ExecuteReader(); GridView1.DataSource = sr; GridView1.DataBind(); } catch (Exception) { } }}
Note:
Selain
web.config, ada juga yang disebut machine.config. Sesuai yang
diberitakan oleh namanya, machine.config akan mengkonfigurasi aplikasi
berdasarkan mesin tertentu (hardware). Konfigurasi machine.config akan
mempengaruhi semua aplikasi yang berada pada mesin tersebut.
Tidak ada komentar:
Posting Komentar