S
|St_AnGeR|
Guest
Visual Studio'da C++ bölümünde web uygulamalarına dair sadece web servisi gözükmesine rağmen ASP.NET sayfalarının kalıtımsallık özelliğini kullanarak C++ ile yarattığımız MSIL kütüphaneleri ile web uygulamaları geliştirebiliriz.
ASP.NET çalışma prensiplerinin detayını ASP.NET bölümünden edinebilirsiniz fakat bu yazı boyunca bilmemiz gerekenşey yazdığımız aspx dosyalarının kalıtımdan etkilenme özelliklerinin bulunmasıdır. Buda bizim herhan gibi .net dilinde geliştirdiğimiz kütüphanenin web arayüzündede kullanılabileceğini göstermektedir. Peki aspx dosyaları nasıl kalıtım "Inheritance" edinirler.
Aspx uygulamalarını çalıştıran iis tarafından tetiklenen asp_wp.exe dosyayı ilkkez okudukdan sonra Inherits anahtarında belirtilen ilgili sınıfı aynı klasör içerisinde /bin dizinin altında arar. Ardından ilgili Assembly dosyasını hafızaya yükler ve sayfada bir işlem gerçekleştirdiğinde "PostBack" ilgili kütüphanedeki method'lar çağrılır. Burda birde AutoEventWireup anahtarını görüyoruz bu da ilgili kütüphaneden Init ve Page_Load gibi evvelden tanımlı bizim üzerine yazdığımız method'ların ayıklanması gerekiği veya gerekmediğini belirtmektedir. True olarak tanımlanırsa tanımlı method'lar ayıklanmaz.
Şimdi örnek bir Aspx dosyası ile bunun için bir C++ kütüphanesi hazırlayacaz. Burda önemli olan konu şudur ki aspx içinde tanımladığınız tüm kontrollerin bir karşılığıda kütüphane içerisinde olmalıdır.
Örnek Aspx dosyası: DataGridSortPaging.aspx
Yukarda Grid Web Kontrol'ü içerisinde kontrol ile ilgili parametreler görüyorsunuz. Bu konuyu ASP.NET bölümünde daha ayrıntılı inceleyebilirsiniz. Fakat bilmeniz gereken Paging ile sayfaları bu örnekte 10'ar olmaz üzere bölebileceğiniz ve de Sorting ile datalarınızı sıraya koyabileceğiniz. Bu işlemler için Grid_Change gibi EventHandler 'lar belirlemeliyiz ve bunları .dll içinde tanımlamış olmalıyız.
Yarattığımız dosyamızı IIS root'una atabiliriz. Eğer değiştirmediyseniz bu C:\inetpub\wwwroot\ olacaktır. Şimdi aynı klasörde yoksa birde \bin klasörü açalım yani .dll 'imiz kopyalacağımız C:\inetpub\wwwroot\bin\
Şimdi Oluşturduğumuz DataGrid'i dolduracak CodeBehind'ı yazmamız gerekli. Gerçi biz tam anlamıyla CodeBehind kavramını kullanıyor olmayacağız çünki CLR içinde bulununan yorumlayıcı bildiğiniz üzere sadece VB, J# ve C# dillerini destekliyor. Bu yüzden aspx dosyası içerisinde de C++ kullanmamız da mümkün olmayacak. Sıra geldi gerekli kütüphaneyi oluşturmaya. Bunun için Yeni Bir C++.NET Kütüphanesi Projesi başlatmalıyız.
Projemize referans olarak System.Web ve System.XML kütüphanelerini eklemeliyiz. Ardından otomatik oluşan ve içine programımızı yazacağımız CPlusWeb.h dosyasını açıp içini aşağıdaki gibi düzenleyiniz.
ASP.NET çalışma prensiplerinin detayını ASP.NET bölümünden edinebilirsiniz fakat bu yazı boyunca bilmemiz gerekenşey yazdığımız aspx dosyalarının kalıtımdan etkilenme özelliklerinin bulunmasıdır. Buda bizim herhan gibi .net dilinde geliştirdiğimiz kütüphanenin web arayüzündede kullanılabileceğini göstermektedir. Peki aspx dosyaları nasıl kalıtım "Inheritance" edinirler.
Kod:
<%@ Page AutoEventWireup="true" Inherits="Namespace.Class" %>
Aspx uygulamalarını çalıştıran iis tarafından tetiklenen asp_wp.exe dosyayı ilkkez okudukdan sonra Inherits anahtarında belirtilen ilgili sınıfı aynı klasör içerisinde /bin dizinin altında arar. Ardından ilgili Assembly dosyasını hafızaya yükler ve sayfada bir işlem gerçekleştirdiğinde "PostBack" ilgili kütüphanedeki method'lar çağrılır. Burda birde AutoEventWireup anahtarını görüyoruz bu da ilgili kütüphaneden Init ve Page_Load gibi evvelden tanımlı bizim üzerine yazdığımız method'ların ayıklanması gerekiği veya gerekmediğini belirtmektedir. True olarak tanımlanırsa tanımlı method'lar ayıklanmaz.
Şimdi örnek bir Aspx dosyası ile bunun için bir C++ kütüphanesi hazırlayacaz. Burda önemli olan konu şudur ki aspx içinde tanımladığınız tüm kontrollerin bir karşılığıda kütüphane içerisinde olmalıdır.
Örnek Aspx dosyası: DataGridSortPaging.aspx
Kod:
<%@ Page AutoEventWireup="true" Inherits="CPlusWeb.DataGridSortPaging" %>
<HTML>
<HEAD>
<title>DataGridSortPaging</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C++">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server"
AllowPaging="True" PageSize="10" OnPageIndexChanged="Grid_Change"
AllowSorting="True" OnSortCommand="Sort_Grid"
GridLines="Horizontal" Font-Size="Smaller" Font-Names="Tahoma"></asp:DataGrid>
</form>
</body>
</HTML>
Yukarda Grid Web Kontrol'ü içerisinde kontrol ile ilgili parametreler görüyorsunuz. Bu konuyu ASP.NET bölümünde daha ayrıntılı inceleyebilirsiniz. Fakat bilmeniz gereken Paging ile sayfaları bu örnekte 10'ar olmaz üzere bölebileceğiniz ve de Sorting ile datalarınızı sıraya koyabileceğiniz. Bu işlemler için Grid_Change gibi EventHandler 'lar belirlemeliyiz ve bunları .dll içinde tanımlamış olmalıyız.
Yarattığımız dosyamızı IIS root'una atabiliriz. Eğer değiştirmediyseniz bu C:\inetpub\wwwroot\ olacaktır. Şimdi aynı klasörde yoksa birde \bin klasörü açalım yani .dll 'imiz kopyalacağımız C:\inetpub\wwwroot\bin\
Şimdi Oluşturduğumuz DataGrid'i dolduracak CodeBehind'ı yazmamız gerekli. Gerçi biz tam anlamıyla CodeBehind kavramını kullanıyor olmayacağız çünki CLR içinde bulununan yorumlayıcı bildiğiniz üzere sadece VB, J# ve C# dillerini destekliyor. Bu yüzden aspx dosyası içerisinde de C++ kullanmamız da mümkün olmayacak. Sıra geldi gerekli kütüphaneyi oluşturmaya. Bunun için Yeni Bir C++.NET Kütüphanesi Projesi başlatmalıyız.
Projemize referans olarak System.Web ve System.XML kütüphanelerini eklemeliyiz. Ardından otomatik oluşan ve içine programımızı yazacağımız CPlusWeb.h dosyasını açıp içini aşağıdaki gibi düzenleyiniz.