C#nedir?com
 
YAZAR HAKKINDA
Ahmet İpek
Ahmet İpek
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
9 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ardindan asp.net belirtilen dosyasini dosyayi ilgili method?lar namespace paging sender session sorting tanimli visual yazdigimiz C++ / C++.NET Ahmet İpek
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : C++ / C++.NET
Yayınlanma Tarihi : 18.12.2004
Okunma Sayısı : 30871
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 22.10.2017
Turhal Temizer 'in Blogu
C# – IRR Function 22.10.2017
Burak Selim Şenyurt
Asp.Net Core'da Bir WebSocket Macerası 22.10.2017
Burak Selim Şenyurt
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 22.10.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Microsoft Visual C++ .Net ve ASP.NET Uygulamaları
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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. <%@ 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
 
<%@ 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.
// CPlusWeb.h

#pragma once

using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;
using namespace System::Web;
using namespace System::Web::SessionState;
using namespace System::Web::UI;
using namespace System::Web::UI::WebControls;
using namespace System::Web::UI::HtmlControls;

namespace CPlusWeb
{
  public __gc class DataGridSortPaging : public System::Web::UI::Page // Page özelliklerini alıyoruz
  {
  protected:
    System::Web::UI::WebControls::DataGrid* DataGrid1; // aspx dosyasındaki kontrolümüz
    DataView* myDataView; // diğer method lardan erişmek için DataView’u sınıf içinde tanımlarız

  private:
    void Page_Load(Object* sender, EventArgs* e)
    {
      if(!IsPostBack){
        SqlConnection* myConnection;
        SqlCommand* myCommand;
        SqlDataAdapter* myDataAdapter;
        DataSet* myDataSet;

        myConnection = new SqlConnection("server=(local);integrated security=sspi;database=Northwind");
        myCommand = new SqlCommand("SELECT * FROM Customers",myConnection);

        myDataAdapter = new SqlDataAdapter(myCommand);
        myDataSet = new DataSet("Order Details");
        myDataAdapter->Fill(myDataSet);

        myDataView = new DataView(myDataSet->Tables->Item[0]); // DataView Sorting ve Paging özelliğini kullanmak için gerekli bir arayüzdür.
        Session->Add("myDataView", myDataView); // Değişken sonraki çağrılara session içinden cevap vericektir.
      }
      else
      {
        myDataView = dynamic_cast<DataView*>(Session->get_Item("myDataView")); // Session değişkenleri object olarak tutar bu yüzden tipini explicit olarak belirtmemiz gerekir
      }

      this->DataGrid1->DataSource = myDataView;
      this->DataGrid1->DataBind(); // Windows form’s da binding yapmanıza gerk yoktur fakat ASP.NET kontrollerinde data değiştirildikten sonra bind edilmelidir.
    }

  public:
    void Sort_Grid(Object* sender, DataGridSortCommandEventArgs* e)
    {
      // aspx dosyasının içinde belirtilen sort işlemini gerçekleştirecek method
      this->myDataView->Sort = e->SortExpression->ToString();
      this->DataGrid1->DataBind();
    }

    void Grid_Change(Object* sender, DataGridPageChangedEventArgs* e)
    {
      // aspx dosyasının içinde belirtilen paging işlemini gerçekleştirecek method
      this->DataGrid1->CurrentPageIndex = e->NewPageIndex;
      this->DataGrid1->DataBind();
    }
  };
}
DataGrid’in Paging ve Sorting özelliklerini kullanırken dikkat ettiğimiz şey şu. Sayfa sadece ilk çağırışdığında veritabanı ile etkileşime giriyor. Bunu IsPostBack değişikeni ile anlayabiliyoruz ve değişkenimizi Session değişkenin içine atıyoruz eğer sayfa tekrar geri gelirse bu sefer session dan çektiğimiz değişkenin üzerinde işlem yapıyoruz. Bu şekilde defalarca veritabanına bağlanmak zorunda kalmıyoruz ve işlemlerimiz hızlanıyor.

Visual Studioda kütüphanemizi artık derleyebiliriz. Derleme sonunda bir dialog çıkacak bu kütüphanenizi test etmek için bir exe seçmenizi tavsiye eder. Fakat bunu yapmak zorunda değilsiniz Cancel ile geçebilirsiniz. Artık Projenizi yarattığınız klasörün içinden Release dizininden CPlusWeb.dll ’i C:\inetpub\wwwroot\bin\ altına kopyalayabilirsiniz. Eğer Debug modunda derlediyseniz Debug dizininden de ilgili dosyayı ISS root’una kopyalayabilirsiniz.

http://localhost/DataGridSortPaging.aspx ’i çalıştırdığınızda karşınıza aşağıdaki gibi bir tablo gelecektir.



 

 

 

 

 

 

 

 


 

Bu yazıda ne yaptığımızı özetlemek gerekirse bir C++.NET kütüphanesi yarattık ve bundan türeyen bir aspx sayfası tasarladık. Burda ASP.NET kontrollerinden datagrid’in Paging ve Sorting özellerinden faydalanarak basit bir uygulama geliştirdik.

ps: Visual Studio olmadan da bu işlemleri gerçekleştirebilirsiniz. Bunun için VC++ 2003 SDK yı kurmalısınız içindeki CL.exe ve Link.exe ile .cpp doysanızdan DLL oluşturabilirsiniz. Ayrıntılı bilgi için önce yazıları inceleyebilirsiniz.

Yazar : Sadun Sevingen
e-Posta : sadun@isikun.org
Makale:
Microsoft Visual C++ .Net ve ASP.NET Uygulamaları C++ ve C++.NET dili Ahmet İpek
  • Yazılan Yorumlar
  • Yorum Yaz
ARA
22
2004
Not: Bu durum tabi ki .NET VC++ ile çalışmakta olup, yıllardır olusturdugunuz c++ kütüphanelerini kullanmak isterseniz ters tepecektir. Bu durumda yapilmasi gereken cok daha acılarla dolu bir yol olan wrapper class lar dan, managed code yazmaktan geçecektir:)
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor