VB.NET ve C# ile Aynı Projede Çalışmak

VB.NET ve C# ile Aynı Projede Çalışmak
Pek çoğunuzun bildiği gibi .Net uygulamaları bir  çok programlama dili ile geliştirilebiliyor.
Bu dillerin içinde tanımlı olarak gelen ve en çok bilinenleri VB.NET, c# dır.
Bu yeni bir şey değil.
Ancak .NET 2.0 da farklı olan bir durum var, artık bu diller aynı proje içinde kullanılabiliyor.
ASP.NET özelinde konuşursak, eskiden bir ASP.NET projesi VB.NET veya C# (veya herhangi üçüncü parti bir dille) geliştirilebiliyordu. Ancak aynı proje içinde her iki dil aynı anda kullanılamıyordu. Bunlardan birini seçmek durumundaydınız.
Bu durum özellikle takım çalışması ile proje geliştiren gruplar için sorun oluşturuyordu.
Ancak şimdi 2.0 versiyonu ile bu dillerle aynı anda çalışmak mümkün.
Bunun sebebi .NET 2.0 framework’ünün yapısal olarak değişmesi olmuştur.

2.0 sürümü dinamik derleme ve farklı kodlarla çalışma imkânını sunmuştur.
Eskiden kodların etkin hale gelmesi için derleme işlemi yapılması gerekirdi.

Şimdi de öyle ancak bu derleme dinamik olarak yapılıyor.
Siz kodlarınızda bir değişiklik yaptığınızda bu değişiklik otomatik olarak algılanıyor ve anında etkin hale getiriliyor.
Bu yüzden .NET 2.0 projelerinde sadece kayıt butonuna basmak ile kodları etkin hale getirebiliyorsunuz.
Çünkü çalışma esnasında (çalışma zamanında) farklılıklar algılanıp otomatik derleniyorlar.
Bu yazımda ben size farklı dillerle aynı projede nasıl çalışılacağını anlatacağım.

Öncelikle herhangi bir dil seçeneğinde (VB.NET veya C# olabilir, ben bu örnek için c# ile oluşturuyorum) bir ASP.Net projesi oluşturun.
Default.aspx sayfasına aşağıdaki kodları yazın:

 

Bu kodlarda iki radyo butonu bulunmaktadır.
Bunlar bize çalışacağımız programlama dilini seçmemize imkân tanıyacak.

Şimdi yapmamız gereken her iki dille de kodlarımızı yazmak.
Kodlarımız birer metin döndüren basit fonksiyonlar olacak.
Bu kodları bir sınıf olarak oluşturup App_Code özel klasöründe tutacağız.
Bilmeyenler için burada küçük bir açıklama yapmakta fayda var.
ASP.NET 2.0 projelerinde, özel yazılmış kodlar ASP.NET için özel olan (App_Code) Ayrı bir klasörde tutulurlar.
Projenin derlenmesi esnasında ASP.NET 2.0 buradaki kodlara bakar ve gerekenleri yapar.
Bildiğiniz gibi aslında kodlar her bir sayfanın kendi içinde tutulur ancak bazen bütün bir projenin kullandığı ortak kodlara ihtiyaç duyulur, işte bu kodlar App_Code klasöründe tutulur.
Bizde uygulamamızda örnekleme olsun diye bu tarz bir kod yapısı kullanacağız.

Kodlarımızı Yazalım


Evet, kaldığımız yerden devam edersek yazacağımız kodlar basit birer fonksiyondur. Görevleri çağrıldığı yere bir metin göndermek.
Her iki dil için kodlar aşağıdaki gibidir.

C# için
Class1.cs


 

VB.NET için

Class2.vb

 


Her iki programlama dili için oluşturulmuş içinde c# için  Sinif1 ve vb.net için Sinif2 class larını barındıran iki ayrı dosya.
Birisinin uzantısı vb diğerinin ki cs.
Eskiden bu iki dosyayı aynı proje içinde barındıramazdık.
Ama aşağıda yazacaklarımı yaparsanız her ikisini de kullanabileceksiniz.

Web.config Tanımları
Normal koşullarda bu tarz kod dosyaları doğrudan App_Code klasörüne atılır ve çalıştırılır.
Ancak iki farklı programlama dili olunca bazı tanımlamalar yapmalıyız.
Öncelikle web.config dosyamıza gidip aşağıdaki tanımları ekleyin

<system.web>
      <compilation debug="true">
        <codeSubDirectories>
          <add directoryName="CSkod"></add>
          <add directoryName="VBkod"></add>
        </codeSubDirectories>
      </compilation>
        <authentication mode="Windows" />
    </system.web>



Bu tanımda derleme yapılacak alt klasörler belirtiliyor.
Böylece ASP.Net derleyeceğimiz bu klasörleri dikkate alacak ve derleme işlemini gerçekleştirecek. Aksi takdirde hangi dille çalışacağı konusunda kafası karışır.

Bu tanımdan sonra yapmamız gereken tanımda belirtilen alt klasörleri fiziksel olarak App_Code klasöründe oluşturmak ve kod dosyalarımızı içine eklemek:


Yandaki ekran görüntüsü tam olarak yapmamız gerekeni gösteriyor.

Böylece iki farklı programlama diliyle yazdığımız kodlar projede yerini alıyor.
Sıra geldi bu kodları kullanmaya.





Kodlarımızı Çalıştıralım

Hatırlayacağınız gibi projemize Default.aspx isimli bir sayfa eklemiştik.

Bu sayfanın kod kısmına gidelim ve aşağıdakileri yazalım:

 


Bu kodları ben c# ile yazdım ama siz isterseniz VB.net ile de yazabilirsiniz.
Kodlara dikkat ederseniz “switch case” yordamı ile radyo buton seçeneklerimiz tespit ediliyor.
Daha sonra seçeneğe göre o dil’e ait sınıf çalıştırılarak Label kontrolümüze fonksiyondan gelen metin mesaj olarak yazdırılıyor.
Eğer VB.net’i seçmişsek, class2.vb dosyamızdaki Sinif2 sınıfımıza ait fonksiyon çağrılıyor ve onun mesajı yazdırılıyor.
C# butonunu seçmişsek Clas1.cs dosyamızdaki Sinif1 sınıfına ait fonksiyon çağrılıyor ve onun mesajı Label kontrolüne atanıyor.
Şimdi sayfamızı çalıştırıp herhangi bir seçeneği işaretleyip gönder butonuna basarsak:



Sonucunu alırız.
Bu çok önemli bir sonuç.
Çünkü artık herhangi bir kod bulduğumuzda bunun hangi dil’e ait olduğunun çok önemi kalmıyor kodları alıp rahatlıkla projenizde kullanabiliyorsunuz.
Veya takım halinde proje oluştururken takımdaki programcıların hangi programlama dili ile uygulama geliştirdiklerinin önemi kalmıyor.
Faydalı bir kolaylık değil mi?