Makale Özeti

Bu makalede Exchange Server'a erişim amacıyla kullanılabilir farklı metodolojiler incelenmektedir.

Makale

Exchange Server'a Programatik Erişim Metotları

Giriş

Exchange Server, hiyerarşik bir veri tabanı olarak organize edilmiştir. Exchange Server 200X, mail haricindeki bilgileri -söz gelimi kurulum bilgileri- tutmak için active directory'i kullanır. Bunun pratik anlamı; Exchange Server 200X 'e active directory'e ilişkin yöntemlerle erişilebiliyor olmasıdır. Ancak bu yöntem, exchange ve active directory kurulumuna zarar verme olasılığı nedeniyle, Microsoft tarafından tavsiye edilmemekte ve alternatif hareket tarzları sunulmaktadır. Bu yöntemlerden hangisinin seçileceği, koşullara bağlı olarak değişmektedir.

  1. Microsoft OLE DB Internet Publishing Provider'ın kullanımı (MSDAIPP) :  
  2. Microsoft OLE DB Exchange Server Provider'ın kullanımı (ExOLEDB):
  3. SQL Server üzerinden "linked server" ortamı kurularak erişim. 


Microsoft OLE DB Exchange Server Provider'ın kullanımı (ExOLEDB)

Bu provider sadece Exchange Server'ın bulunduğu makinede kullanılabilecek (server side) şekilde tasarlanmıştır. Yani ExOLEDB ile sadece lokaldeki exchange'e erişilebilir. Keza bu provider'ın elde edilişi herhangi bir MDAC güncellemesi ile mümkün olmamakta ve ancak Exchange Server kurulumu ile sisteme register edilmektedir.

Ancak bizce ExOLEDB provider'ına ilişkin en önemli sorun; OLE DB 2.5 protokolü ile uyumlu oluşudur. Bunun yarattığı dezavantaj; ExOLEDB 'nin, .NET Framework'teki managed Ole DB provider'ı ile kullanılamamasıdır. Bu noktada çözüm COM Interop yolu ile ADO kullanmaktır.

NOT : Yukarıda söz edilen sorun Exchange Server 2000 'ne ilişkindir. Bildiğiniz gibi "bu makalenin yazıldığı tarih itibari ile" Exchange Server 2003 sürümü çıkmış hatta bir service pack yayınlanmıştır.


Microsoft OLE DB Internet Publishing Provider'ın kullanımı (MSDAIPP)

Bu provider ise -ExOLEDB 'nin aksine- Exchange'in kurulu olmadığı farklı bir makineden, Exchange Server'a erişim için tasarlanmıştır. Yani "client side" bir provider olma özelliğini taşır. 

MSDAIPP provider'ının marjinal faydası; WebDAV isimli protokolü kullanarak IIS sanal dizinlerindeki dokümanlara erişimin sağlanmasıdır. Buna ilaveten MSDAIPP ile Exchange Server 200X 'daki verilere de erişilebilmektedir. Bu noktada transfer için HTTP kullanılacağı için connection string'teki Data Source segmentine uygun bir URL atanmalıdır. Aşağıdaki kod parçasında belirli bir klasördeki tüm verilerin (gizli olanlar da dahil olmak üzere) alınışı örneklenmektedir.

string sFolder = "";

OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString = "Provider=MSDAIPP.dso; Data Source=http://exchangeserver/exchange/pruva;
uid=aykut; pwd=deniz6";
cnn.Open();

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cnn;
cmd.CommandType = CommandType.TableDirect;

OleDbDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
    for (int i=0; i <= dr.FieldCount-1; ++i)
    {
        sFolder += dr.GetName(i).ToString() + " : " +
        dr.GetString(i) + "\n"; 
    }
    MessageBox.Show(sFolder);
}

Kodun önemli kısımlarını irdelemek gerekirse;

Connection string'teki data source segment'inin uygun bir URL ile donatıldığını görmekteyiz. Açıktır ki, sizin kullanacağınız URL bilgisi örnektekinden farklı olmak zorundadır. Ancak örneklenen connection string'teki parçaların ne oldukları bilindiği takdirde, doğru URL bilgisinin yapılandırılması zor olmayacaktır.

- exchangeserver
; makine ismidir ve IP numarası ile ikame edilebilir. Ancak web server'ın exchange için dinlediği HTTP taleplerinin, hangi porttan geldiği de belirtilmelidir. Örneğin;
http://10.2.9.15:86 örneğinde olduğu gibi.

- exchange
; Exchange Server için kullanılmış örnek bir sanal dizin ismidir. 

- pruva
; erişilmek istenen mailbox'ın ismidir.

İpucu : Hatta gerekirse örneğin sadece inbox'taki bilgiler için pruva/inbox veya pruva/contacts gibi eklentiler de yapılabilir.

Ayrıca uid ve pwd niteliklerine söz konusu mailbox'a erişim izinlerine sahip kullanıcının isim ve şifresi atanmalıdır.


SQL Server Üzerinden "linked server" Ortamı Kurularak Exchange Server'a Erişim

Şayet erişilmek istenen Exchange Server, SQL Server ile aynı makine üzerinde ise linked server ortamı kurulup (sp_addlinkedserver sistem stored procedure ile) Exchange Server web store üzerinde wiev'lar yaratmak, sorgulamalar yapmak da mümkündür. 


Aykut TAŞDELEN

Microsoft MVP (Most Valuable Professional)