Makale Özeti

Bu yazımızda klasik bir ASP 3.0 uygulamasından bir .NET assembly çağırabilmek için yapılması gerekenler üzerinde duracağız.

Makale




ASP 3.0 Uygulamasından .NET Assembly Çağırmak

Bu yazımızda klasik bir ASP 3.0 uygulamasından bir .NET assembly çağırabilmek için yapılması gerekenler üzerinde duracağız.

Öncelikle çok basit bir .NET uygulaması yaratalım. Uygulama dili olarak C# seçiyoruz.

using System;

namespace Integrity

{

   public class CRM

   {

      private string LicenseKey; // Özel lisans anahtar değeri

      public CRM() // Constructor (yapıcı) ile deneme amaçlı sabit bir değer verelim.

      {

         LicenseKey = "CCC-XX-v001";

      }

      public string GetKey() // Lisans anahtarını okuyalım.

      {
         return LicenseKey;
      }

   }

}

Normal şartlar altında csc /target:library Integrity.cs komutu çalıştırdığımız zaman o dizin altında Integrity.dll adında bir dosya yaratılır ve bu dll diğer ilgili uygulamalar tarafından referans edilebilir ve çağrılarak kullanılabilir.

Fakat uygulama içinde assembly’ler diğer yabancı uygulamalarla paylaşılacaksa , bu assembly’lerin global assembly cache denilen ortak bir alana alınması ve versiyon bilgisini içeren strong name ‘ e sahip olması gerekir.

Bu bilgiler ışığında Visual Studio Command Prompt üzerinde sn -k OrgKey1.snk komutunu çalıştıralım. Bu komut bize Strong Name Assembly yaratmamız için bir anahtar dosya yaratacak.

Daha sonra gidip Integrity.cs içinde namespace satırlarının üzerine aşağıdaki satırları ekleyelim.

#if STRONG
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("OrgKey1.snk")]
#endif

Artık DLL oluşturabiliriz. Visual Studio Command Prompt içinde aşağıdaki komutu çalıştırırsak strong name assembly yaratmış olacağız.

csc /define:STRONG /target:library Integrity.cs

Yarattığımız bu strong name assembly’i Global Assembly Cache’e ekleyerek , yabancı uygulamaların bu ortak dizinden okumasını sağlayacağız.
gacutil /i Integrity.dll

İlgili dll’i regasm ile register ederek kullanıma hazır hale getirelim.
regasm /tlb Integrity.dll

Şimdi bir asp dosyası yaratarak içine aşağıdaki kodları yapıştıralım.


set Intg = createobject("Integrity.CRM")
keyValue = Intg.GetKey()
response.write keyValue

Localhost üzerinde bir sanal dizin üzerinde bu asp dosyasımızı çalıştırdığımız zaman,
Output :
CCC-XX-v001

Şeklinde olacaktır.

Onur Kulabaş
Yazılım Danışmanı

Sorularınız için onur.kulabas@bilgeadam.com