Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
Alfa - Beta
Genel
İş Yaşamı
Kodlama
İpucu
Yorum
Duyuru - Haber
İnceleme
Kitap - Kaynak
Tasarım
YAZAR HAKKINDA
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ı
:
45862
Yorum Sayısı
:
1
yorum yaz
SİTE İÇİ ARAMA
Ü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.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
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.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA
23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
23.11.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
C++ / C++.NET
/
Microsoft Visual C++ .Net ve ASP.NET Uygulamaları
Microsoft Visual C++ .Net ve ASP.NET Uygulamaları
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Visual Studioda 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 methodlar ç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 methodların ayıklanması gerekiği veya gerekmediğini belirtmektedir. True olarak tanımlanırsa tanımlı methodlar 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 10ar 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 rootuna 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 DataGridi 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 DataViewu 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 forms 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();
}
};
}
DataGridin 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 rootuna 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 datagridin 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 :
[email protected]
Makale:
Microsoft Visual C++ .Net ve ASP.NET Uygulamaları C++ ve C++.NET dili Ahmet İpek
Yazılan Yorumlar
Yorum Yaz
ARA
22
2004
TANIL ERGİN
/
üye hakkında
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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl