Minggu, 01 September 2013

Sedikit tentang file web.config

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