94
.Net 2.0 ile Gelen .Net 2.0 ile Gelen Yenilikler Yenilikler Burak Selim Şenyurt Burak Selim Şenyurt MVP (Visual Developer – Visual MVP (Visual Developer – Visual C#) C#)

Ready to Rock

Embed Size (px)

Citation preview

Page 1: Ready to Rock

.Net 2.0 ile Gelen .Net 2.0 ile Gelen Yenilikler Yenilikler .Net 2.0 ile Gelen .Net 2.0 ile Gelen Yenilikler Yenilikler Burak Selim ŞenyurtBurak Selim ŞenyurtMVP (Visual Developer – Visual C#)MVP (Visual Developer – Visual C#)

Page 2: Ready to Rock

Ajanda – Visual Studio Ajanda – Visual Studio 20052005 ClickOnce TekniğiClickOnce Tekniği

RefactoringRefactoring

Class DesignerClass Designer

Debugger VisualizerDebugger Visualizer

Page 3: Ready to Rock

Ajanda – C# 2.0Ajanda – C# 2.0 GenericsGenerics

Kısmi Tipler (Partial Types)Kısmi Tipler (Partial Types)

Yeni İterasyon Tekniği (Yield Kullanımı)Yeni İterasyon Tekniği (Yield Kullanımı)

İsimsiz Metodlar (Anonymous Methods)İsimsiz Metodlar (Anonymous Methods)

Kısmi Tipler (Partial Types)Kısmi Tipler (Partial Types)

Static SınıflarStatic Sınıflar

Nullable Değer TürleriNullable Değer Türleri

Page 4: Ready to Rock

Ajanda – Ado.Net 2.0Ajanda – Ado.Net 2.0 ConnectionStrings Kavramı ve StringBuildersConnectionStrings Kavramı ve StringBuilders Veri Sağlayıcıdan Bağımsız Mimari (Data Provider Veri Sağlayıcıdan Bağımsız Mimari (Data Provider

Independent Architect)Independent Architect) MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active

Result Sets)Result Sets) Toplu Güncelleştirme (Batch Update)Toplu Güncelleştirme (Batch Update) Asenkron Komut Yürütmek (Asynchronous Asenkron Komut Yürütmek (Asynchronous

Command Executing)Command Executing) Bulk Data Kopyalama MekanizmasıBulk Data Kopyalama Mekanizması Yeni Transaction MimarisiYeni Transaction Mimarisi Binary SerileştirmeBinary Serileştirme

Page 5: Ready to Rock

Ajanda – Asp.Net 2.0Ajanda – Asp.Net 2.0

On-Demand Compiling Çalışma ModeliOn-Demand Compiling Çalışma Modeli Cross Page PostingCross Page Posting Master Pages Master Pages Veri Kaynağı Kontrolleri (Data Source Controls)Veri Kaynağı Kontrolleri (Data Source Controls) Temalar (Themes)Temalar (Themes) Site Navigasyonu (Site Navigation)Site Navigasyonu (Site Navigation) Profil Yönetimi (Profile Management)Profil Yönetimi (Profile Management) Konfigurasyon Yönetimi (Configuration Konfigurasyon Yönetimi (Configuration

Management)Management) Üyelik Yönetimi (Membership Management)Üyelik Yönetimi (Membership Management)

Page 6: Ready to Rock

Visual Studio 2005 ile Visual Studio 2005 ile Gelen Yenilikler Gelen Yenilikler

Visual Studio 2005 ile Visual Studio 2005 ile Gelen Yenilikler Gelen Yenilikler

Page 7: Ready to Rock

Visual Studio 2005 - ClickOnceVisual Studio 2005 - ClickOnce

Web uygulamalarının sağladığı Web uygulamalarının sağladığı dağıtım dağıtım (deployment) kolaylığının(deployment) kolaylığının, windows , windows tabanlı uygulamalar içinde tabanlı uygulamalar içinde sağlanabilmesini amaçlar.sağlanabilmesini amaçlar.

Page 8: Ready to Rock

Visual Studio 2005 - RefactoringVisual Studio 2005 - Refactoring

Kodların yeniden gözden geçirilmesi Kodların yeniden gözden geçirilmesi dahada dahada kolaylaştırılmıştırkolaylaştırılmıştır.. Yeniden isimlendirme (Rename)Yeniden isimlendirme (Rename) Alanlardan (Field) özelliklere (Property) hızlı Alanlardan (Field) özelliklere (Property) hızlı

geçişgeçiş Metodlaştırma (Extract Method)Metodlaştırma (Extract Method) Arayüz (Interface) çıkartmaArayüz (Interface) çıkartma Parametre sıralarını değiştirmeParametre sıralarını değiştirme

Page 9: Ready to Rock

Visual Studio 2005 – Class DesignerVisual Studio 2005 – Class Designer

Uygulamaların yazılımcı dostu UML Uygulamaların yazılımcı dostu UML diagramları ile diagramları ile tam entegrasyonunutam entegrasyonunu sağlar.sağlar.

Sınıf diagramlarında Sınıf diagramlarında yapılan yapılan değişikliklerin, uygulamalaradeğişikliklerin, uygulamalara, , uygulamalarda yapılan değişikliklerin uygulamalarda yapılan değişikliklerin şemalaraşemalara yansıtılmasını sağlar. yansıtılmasını sağlar.

Page 10: Ready to Rock

Visual Studio 2005 – Debugger Visual Studio 2005 – Debugger VisualizerVisualizer

Çalışma zamanındaÇalışma zamanında tabular veya xml tabular veya xml bazlı nesnelerin içeriğinin bazlı nesnelerin içeriğinin

Xml, Xml, Html, Html, Text ve Table Text ve Table

formatında izlenebilmesini sağlar.formatında izlenebilmesini sağlar.

Page 11: Ready to Rock

Class DesignerClass DesignerClickOnceClickOnce

RefactoringRefactoringDebugger VisualizerDebugger Visualizer

Page 12: Ready to Rock

C# 2.0 ile Gelen C# 2.0 ile Gelen Yenilikler Yenilikler C# 2.0 ile Gelen C# 2.0 ile Gelen Yenilikler Yenilikler

Page 13: Ready to Rock

C# 2.0 - GenericsC# 2.0 - Generics

Türden bağımsızTürden bağımsız olarak algoritma geliştirmek olarak algoritma geliştirmek için kullanılan dilin güçlü bir yapısıdır. için kullanılan dilin güçlü bir yapısıdır.

Değişik türler ile çalışacak Değişik türler ile çalışacak birden fazla tip birden fazla tip yazmak yerine tek bir tipyazmak yerine tek bir tip kullanılabilmesini kullanılabilmesini sağlar.sağlar.

Gereksiz boxing ve unboxing süreçlerini Gereksiz boxing ve unboxing süreçlerini ortadan ortadan kaldırırkaldırır..

Page 14: Ready to Rock

C# 2.0 - GenericsC# 2.0 - Generics Uygulama AlanlarıUygulama Alanları

Koleksiyonlar(Collections)Koleksiyonlar(Collections)

Sınıflar(Classes)

Yapılar(Structs)

Arayüzler(Interfaces)

Metodlar(Methods)

Temsilciler(Delegates)

Page 15: Ready to Rock

GenericsGenerics Koleksyion SınıflarıKoleksyion Sınıfları

KoleksiyonKoleksiyon ArayüzleriArayüzleri

Koleksiyon Temel SınıflarıKoleksiyon Temel Sınıfları

YararlıYararlı SınıflarSınıflar

List<T>List<T>Dictionary<K,V>Dictionary<K,V>SortedDictionary<SortedDictionary<K,V>K,V>Stack<T>Stack<T>Queue<T>Queue<T>

IList<T>IDictionary<K,V>ICollection<T>IEnumerable<T>IEnumerator<T>IComparable<T>IComparer<T>

Collection<T>KeyedCollection<T>ReadOnlyCollection<T>

Nullable<T>EventHandler<T>Comparer<T>

Page 16: Ready to Rock

GenericsGenerics

Page 17: Ready to Rock

GenericsGenerics Mimaride Mimaride KısıtlamalarKısıtlamalar Generic tipler için çeşitli Generic tipler için çeşitli zorunluluklar (Constraints)zorunluluklar (Constraints)

tanımlayabiliriz.tanımlayabiliriz.

Koşul Syntax

Değer tipi olma zorunluluğu where Tip : structwhere Tip : struct

Referans tipi olma zorunluluğu where Tip : classwhere Tip : class

Constructor zorunluluğu where Tip : new()where Tip : new()

Türeme zorunluluğu where Tip : <Temel where Tip : <Temel Sınıf>Sınıf>

Interface zorunluluğu where Tip : where Tip : <Interface><Interface>

Page 18: Ready to Rock

Generic Koleksiyonlar (Collections)Generic Koleksiyonlar (Collections)Generic Struct (Yapı)Generic Struct (Yapı)

Generic Performance TestGeneric Performance Test

Page 19: Ready to Rock

Kullanıcı tanımlı tiplere ait nesne dizileri Kullanıcı tanımlı tiplere ait nesne dizileri üzerinde üzerinde foreachforeach iterasyonunun iterasyonunun tip güvenlitip güvenli ve ve daha kolaydaha kolay uygulanabilmesini amaçlar. uygulanabilmesini amaçlar.

C# 2.0 – Yeni İterasyon Tekniği C# 2.0 – Yeni İterasyon Tekniği (Yield Kullanımı)(Yield Kullanımı)

Page 20: Ready to Rock

C# 2.0 – Yeni İterasyon Tekniği C# 2.0 – Yeni İterasyon Tekniği (Yield Kullanımı)(Yield Kullanımı)

C# 1.0/1.1 için Iteratif Uygulama Deseni

Page 21: Ready to Rock

Yeni İterasyon TekniğiYeni İterasyon Tekniği(Yield Kullanımı)(Yield Kullanımı)

Page 22: Ready to Rock

Temsilcileri(delegates) işaret edecekleri Temsilcileri(delegates) işaret edecekleri metodların metodların sahip oldukları kod blokları ile sahip oldukları kod blokları ile bir seferde tanımlayabilmeyibir seferde tanımlayabilmeyi amaçlar. amaçlar.

Metod blokları, Metod blokları, çalışma zamanındaçalışma zamanında kendisini çağıracak olan temsilci nesnesine kendisini çağıracak olan temsilci nesnesine eklenir. eklenir.

Dışarıdan Dışarıdan parametreparametre alabilirler ve alabilirler ve geriye geriye değerdeğer döndürebilirler. döndürebilirler.

Metod ile birlikte Metod ile birlikte kullanılan temsilcinin kullanılan temsilcinin bilinmesine gerek yokturbilinmesine gerek yoktur. . delegatedelegate anahtar anahtar sözcüğü bu işi üstlenir. sözcüğü bu işi üstlenir.

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

Page 23: Ready to Rock

KlasikKlasik temsilci (delegate) temsilci (delegate) yaklaşımı.yaklaşımı.

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

public delegate double dlgCircle(double a, double b);

static double TestMethod(double pi, double r){

return pi * r * r;}

dlgCircle tOld = new dlgCircle(TestMethod);double result=tOld(1, 4);

Page 24: Ready to Rock

YeniYeni temsilci (delegate) temsilci (delegate) yaklaşımı.yaklaşımı.

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

dlgCircle tNew = delegate(double pi, double r){

return pi * r * r;};

double alan = tNew(3.14, 10);

Page 25: Ready to Rock

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

static void UpCounter(){

for (int i = 0; i < 100; i++){

Console.Write("+");Thread.Sleep(100);

}}

Thread t1 = new Thread(new ThreadStart(UpCounter));t1.Start();

Çok kanallı programlama (Multi Threading)Çok kanallı programlama (Multi Threading) için için klasik yaklaşım.klasik yaklaşım.

Page 26: Ready to Rock

Çok kanallı programlama (Multi Threading) Çok kanallı programlama (Multi Threading) için için yeni yaklaşım.yeni yaklaşım.

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

static void UpCounter(){for (int i = 0; i < 100; i++){

Console.Write("+");Thread.Sleep(100);

}}Thread trdUpCounter = new Thread(delegate(){ UpCounter(); });

Thread trdDownCounter = new Thread(delegate(){

for (int i = 1; i <100; i++){Console.Write("-");Thread.Sleep(150);

}});

trdUpCounter.Start();trdUpCounter.Start();trdDownCounter.StartrdDownCounter.Start();t();

Page 27: Ready to Rock

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

this.btnAnonymous.Click += new System.EventHandler(this.btnAnonymous_Click);

private void btnAnonymous_Click(object sender, EventArgs e){}

Event – Driven (Olay güdümlü) programlama Event – Driven (Olay güdümlü) programlama için için klasik yaklaşım.klasik yaklaşım.

Page 28: Ready to Rock

C# 2.0 – İsimsiz Metodlar C# 2.0 – İsimsiz Metodlar (Anonymous Methods)(Anonymous Methods)

this.btnAnonymous.Click += delegate(object sender, System.EventArgs arg){

MessageBox.Show("Onay 1")};

Event – Driven (Olay güdümlü) programlamaEvent – Driven (Olay güdümlü) programlama için için yeni yaklaşım.yeni yaklaşım.

Page 29: Ready to Rock

Kısmi tipler, bir tipin bütününü oluşturan Kısmi tipler, bir tipin bütününü oluşturan soyutsal parçalardırsoyutsal parçalardır. .

SınıflarSınıflar (Class), (Class), ArayüzlerArayüzler (Interface), (Interface), YapılarYapılar (Struct) kısmi olarak tanımlanıp (Struct) kısmi olarak tanımlanıp kullanılabilir.kullanılabilir.

Çoğunlukla görsel taraf ile kod tarafının Çoğunlukla görsel taraf ile kod tarafının ayrıştırılmasında kullanılır.ayrıştırılmasında kullanılır.

C# 2.0 – Kısmi Tipler (Partial C# 2.0 – Kısmi Tipler (Partial Types)Types)

Page 30: Ready to Rock

C# 2.0 – Kısmi Tipler (Partial C# 2.0 – Kısmi Tipler (Partial Types)Types)

Page 31: Ready to Rock

C# 2.0 – Kısmi Tipler (Partial C# 2.0 – Kısmi Tipler (Partial Types)Types) partial class DbManager{partial class DbManager{

public DbManager(string conStr){}public DbManager(string conStr){} public void SetCommand(string public void SetCommand(string qryStr){}qryStr){} public void Metod() { }public void Metod() { }}}

partial class DbManager{partial class DbManager{private SqlConnection private SqlConnection

con;con;private SqlCommand private SqlCommand

cmd;cmd;public SqlConnection public SqlConnection

ConnConn{{

get { return get { return con; }con; }

set { con = set { con = value; }value; }

}}public SqlCommand public SqlCommand

CmndCmnd{{

get { return cmd; get { return cmd; }}

set { cmd = set { cmd = value; }value; }

}}}}

Page 32: Ready to Rock

C# 2.0 – Static SınıflarC# 2.0 – Static Sınıflar SSadece adece static üyelerstatic üyeler içeren,içeren,

örneklendirilemörneklendirilemeeyenyen ve ve kalıtımkalıtım için için kullanılamayankullanılamayan sınıflardır. sınıflardır.public static class CommonMath

{public static double Total(double

valueA, double valueB){}public static double pi = 3.14;public static double PI{

get{return pi;}set{pi = value;}

}...

Page 33: Ready to Rock

Static sınıflara ait Static sınıflara ait nesne örneklerinesne örnekleri üretilemez.üretilemez.

Static sınıflara ait Static sınıflara ait nesne tanımlamalarınesne tanımlamaları yapılamaz.yapılamaz.

Yapıcı metodlar (Yapıcı metodlar (constructorsconstructors) içermez.) içermez. Sadece static üyelerSadece static üyeler den oluşur. den oluşur. Türetme (Inheritance) için kullanılamaz.Türetme (Inheritance) için kullanılamaz.

C# 2.0 – Static SınıflarC# 2.0 – Static Sınıflar

Page 34: Ready to Rock

C# 2.0 - C# 2.0 - Nullable TypesNullable Types

Değer türlerinin (Value Types), referans Değer türlerinin (Value Types), referans türleri (reference types) gibi türleri (reference types) gibi nullnull değer değer taşıyabilmesitaşıyabilmesi özelliği. özelliği.

int? degerTipi;degerTipi = null;

Veritabanı uygulamalarıVeritabanı uygulamaları için yararlı bir için yararlı bir özelliktir.özelliktir.

System.Nullable<T>System.Nullable<T> sınıfı yardımıyla kendi sınıfı yardımıyla kendi değer türlerimizi nullable olarak değer türlerimizi nullable olarak kullanabiliriz.kullanabiliriz.

Page 35: Ready to Rock

Ado.Net 2.0 ile Gelen Ado.Net 2.0 ile Gelen Yenilikler Yenilikler

Ado.Net 2.0 ile Gelen Ado.Net 2.0 ile Gelen Yenilikler Yenilikler

Page 36: Ready to Rock

Bağlantı bilgisinin herhangibir .Net Bağlantı bilgisinin herhangibir .Net uygulamasında uygulamasında aynı şekilde saklanmasınıaynı şekilde saklanmasını sağlar.sağlar.

Yeni Yeni Configuration APIConfiguration API sayesinde kod sayesinde kod tarafından tarafından kolayca yönetilebilirkolayca yönetilebilir..

Ado.Net 2.0 – ConnectionStrings Ado.Net 2.0 – ConnectionStrings KullanımıKullanımı

<configuration> <connectionStrings> <add name="AdvConStr" connectionString="data source=Manchester;database=AdventureWorks;integrated Security=true" providerName="System.Data.SqlClient"/> </connectionStrings></configuration>

ConfigurationManager.ConnectionStrings["AdvConStr"].ConnectionString;

Web (Web.config)Web (Web.config) Desktop (App.config)Desktop (App.config)

Page 37: Ready to Rock

Data Provider (Veri Sağlayıcı) seçimine göre Data Provider (Veri Sağlayıcı) seçimine göre daha daha kolay ConnectionStringkolay ConnectionString oluşturulmasını sağlayan yeni oluşturulmasını sağlayan yeni tipler.tipler.

Ado.Net 2.0 – ConnectionStringBuilder Ado.Net 2.0 – ConnectionStringBuilder NesneleriNesneleri

SqlConnectionStringBuilder sqlConStrBdr = new SqlConnectionStringBuilder();sqlConStrBdr.DataSource = "Manchester";sqlConStrBdr.InitialCatalog = "AdventureWorks";sqlConStrBdr.IntegratedSecurity = true;sqlConStrBdr.AsynchronousProcessing = true;sqlConStrBdr.MultipleActiveResultSets=true;Console.WriteLine(sqlConStrBdr.ConnectionString);

SqlConnectionStringBuilderSqlConnectionStringBuilder

OleDbConnectionStringBuilderOleDbConnectionStringBuilder

OracleConnectionStringBuilderOracleConnectionStringBuilder

OdbcConnectionStringBuilderOdbcConnectionStringBuilder

DbConnectionStringBuilderDbConnectionStringBuilder

Page 38: Ready to Rock

Tüm veri sağlayıcı bağımlı nesneleri Tüm veri sağlayıcı bağımlı nesneleri tek bir tek bir çatıçatı altında toplar. altında toplar.

Çok biçimliliği kullanarak çalışma Çok biçimliliği kullanarak çalışma zamanında zamanında veri sağlayıcılar arasındaki veri sağlayıcılar arasındaki geçişigeçişi kolaylaştırır. kolaylaştırır.

Tüm istekler Tüm istekler managed (yönetimli) nesneler managed (yönetimli) nesneler vasıtasıylavasıtasıyla kolayca gerçekleştirilir. kolayca gerçekleştirilir.

Gerçek bir kullanım alan Enterprise Library Gerçek bir kullanım alan Enterprise Library içerisindeki içerisindeki Data Access Application BlockData Access Application Block’ ’ tur.tur.

Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Mimari (Data Provider Independent Mimari (Data Provider Independent Architect)Architect)

Page 39: Ready to Rock

Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Mimari (Data Provider Independent Mimari (Data Provider Independent Architect)Architect)

•Provider ToplayıcıProvider Toplayıcı•Factory ÜreticiFactory Üretici

•Gerekli Ürün Gerekli Ürün ÜreticiÜretici

Page 40: Ready to Rock

Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Ado.Net 2.0 – Veri Sağlayıcı Bağımsız Mimari (Data Provider Independent Mimari (Data Provider Independent Architect)Architect)

Sistemde yüklü olan tüm Sistemde yüklü olan tüm veri veri sağlayıcılarının elde edilmesinisağlayıcılarının elde edilmesini sağlar. sağlar.

Seçilen veri sağlayıcıyı kullanarak uygun Seçilen veri sağlayıcıyı kullanarak uygun Connection, Command, DataAdapter, Connection, Command, DataAdapter, Parameter, DataReader, CommandBuilder Parameter, DataReader, CommandBuilder vb. nesnelerinin vb. nesnelerinin üretilmesindenüretilmesinden sorumludur. sorumludur.

DbProviderFactories

DbProviderFactoryDbProviderFactory

Page 41: Ready to Rock

Veri Sağlayıcı Bağımsız MimariVeri Sağlayıcı Bağımsız Mimari(Data Provider Independent (Data Provider Independent

Architecture)Architecture)

Page 42: Ready to Rock

Ado.Net 2.0 – MARSAdo.Net 2.0 – MARS

Page 43: Ready to Rock

Ado.Net 2.0 – MARS Çoklu Aktif Ado.Net 2.0 – MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active Sonuç Kümeleri (Multiple Active Result Sets)Result Sets) AAynı açık bağlantı üzerinden birden fazla ynı açık bağlantı üzerinden birden fazla

sonuçsonuç kümesini elde edebileceğimiz sql kümesini elde edebileceğimiz sql sorgularınınsorgularının tek bir bağlantı üzerindentek bir bağlantı üzerinden çalıştırılçalıştırılabilmesi.abilmesi.

Çalışma Şartları;Çalışma Şartları;

Veri tabanı sunucusunun Veri tabanı sunucusunun MARS desteğininMARS desteğinin olması gerekir.olması gerekir.

Bağlantı katarı bilgisinde varsayılan değeri Bağlantı katarı bilgisinde varsayılan değeri false olan false olan MultipleActiveResultSetsMultipleActiveResultSets özelliği özelliği truetrue olmalıdır. olmalıdır.

Page 44: Ready to Rock

try{  SqlConnection con=new SqlConnection(bağlantı);  SqlDataReader dr1;  SqlDataReader dr2;  SqlDataReader dr3;  SqlCommand cmd1=new SqlCommand("SELECT * FROM Customers",con);  SqlCommand cmd2=new SqlCommand("SELECT * FROM Orders",con);  SqlCommand cmd3=new SqlCommand("SELECT * FROM [Order Details]",con);  con.Open();             dr1=cmd1.ExecuteReader();  dr2=cmd2.ExecuteReader();  dr3=cmd3.ExecuteReader(); con.Close();

}

catch(Exception hata)

{ Console.WriteLine(hata.Message);}

Ado.Net 2.0 – MARS Çoklu Aktif Ado.Net 2.0 – MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active Sonuç Kümeleri (Multiple Active Result Sets)Result Sets)

Page 45: Ready to Rock

Ado.Net 2.0 – MARS Çoklu Aktif Ado.Net 2.0 – MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active Sonuç Kümeleri (Multiple Active Result Sets)Result Sets)

Ado.Net 1.0 / 1.1

Page 46: Ready to Rock

Ado.Net 2.0 – MARS Çoklu Aktif Ado.Net 2.0 – MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active Sonuç Kümeleri (Multiple Active Result Sets)Result Sets)

Ado.Net 1.0 / 1.1

SqlCommand cmd1=new SqlCommand("SELECT * FROM Customers",con1);SqlCommand cmd2=new SqlCommand("SELECT * FROM Orders",con2);SqlCommand cmd3=new SqlCommand("SELECT * FROM [Order Details]",con3);

Page 47: Ready to Rock

Ado.Net 2.0 – MARS Çoklu Aktif Ado.Net 2.0 – MARS Çoklu Aktif Sonuç Kümeleri (Multiple Active Sonuç Kümeleri (Multiple Active Result Sets)Result Sets)

Page 48: Ready to Rock

MARS (Mutliple Active Result Sets)MARS (Mutliple Active Result Sets)

Page 49: Ready to Rock

Ado.Net 2.0 – Toplu Güncelleştirme Ado.Net 2.0 – Toplu Güncelleştirme (Batch Update)(Batch Update)Birden fazla sql ifadesinin Birden fazla sql ifadesinin tek bir seferdetek bir seferde

çalıştırılması.çalıştırılması.

DataAdapter için gDataAdapter için güncelleme işlemlerinin üncelleme işlemlerinin toplu toplu olarak hangi periyottaolarak hangi periyotta gerçekleştirileceğini gerçekleştirileceğini belirtir. belirtir.

public override int UpdateBatchSize {get;set;}

UpdateBatchSizUpdateBatchSize e

DeğeriDeğeriKomut Çalışma ŞekliKomut Çalışma Şekli

00 Sunucunun desteklediği en büyük Sunucunun desteklediği en büyük boyutta 1 keredeboyutta 1 kerede

11 Hepsi ayrı ayrı (UpdateBatchSize Hepsi ayrı ayrı (UpdateBatchSize devre dışı)devre dışı)

nn n seferde 1’ er keren seferde 1’ er kere

Page 50: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)Birden fazla sql komutunun Command nesneleri Birden fazla sql komutunun Command nesneleri

yardımıyla, yardımıyla, eş zamanlıeş zamanlı ve ve uygulamanın çalışmasına uygulamanın çalışmasına paralelparalel olarak yürütülebilmesi imkanı. olarak yürütülebilmesi imkanı.

Page 51: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

Page 52: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

BeginExecuteNonQuery

BeginExecuteReaderBeginExecuteXmlRead

erEndExecuteNonQueryEndExecuteReaderEndExecuteXmlReader

IAsyncResult

Anahtar İlişkiAnahtar İlişki

Page 53: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

Polling Modeli

IAsyncResult tipinden nesne örneği ile sahip IAsyncResult tipinden nesne örneği ile sahip olunan olunan process’ inprocess’ in tamamlanıp tamamlanmadığı tamamlanıp tamamlanmadığı sürekli sürekli olarakolarak kontrol edilir. kontrol edilir.

Page 54: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing) Polling Modeli

Page 55: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

Callback Modeli

AAsenkron olarak çalışan sql komutlarının senkron olarak çalışan sql komutlarının işleyişlerinin sona erdiği noktalardaişleyişlerinin sona erdiği noktalarda yürürlüğe yürürlüğe giren giren metodlarımetodları bünyesinde barındıran bir bünyesinde barındıran bir tekniktir.tekniktir.

Page 56: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing) Callback Modeli

Page 57: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

Callback Modeli

public IAsyncResult BeginExecuteNonQuery public IAsyncResult BeginExecuteNonQuery ((AsyncCallback callback, object stateObje callback, object stateObjecct);t);

public IAsyncResult BeginExecuteReader public IAsyncResult BeginExecuteReader ((AsyncCallback callback, object stateObje callback, object stateObjecct);t);

public IAsyncResult BeginExecuteXmlReader public IAsyncResult BeginExecuteXmlReader ((AsyncCallback callback, object stateObje callback, object stateObjecct); t);

Page 58: Ready to Rock

Ado.Net 2.0 – Asenkron Komut Ado.Net 2.0 – Asenkron Komut Yürütmek (Asynchronous Command Yürütmek (Asynchronous Command Executing)Executing)

Wait Modeli

Eş zamanlı yürütülen komutlar tamamlanıncaya kadar Eş zamanlı yürütülen komutlar tamamlanıncaya kadar uygulamanın ve diğer komutların uygulamanın ve diğer komutların beklemesinibeklemesini istediğimizde.istediğimizde.

Farklı sunucularda çalışacak ve dönüş değerleri ilerleyen Farklı sunucularda çalışacak ve dönüş değerleri ilerleyen kod satırlarında kod satırlarında kullanılacakkullanılacak olan eş zamanlı sorgularda olan eş zamanlı sorgularda tercih edilebilir.tercih edilebilir.

WaitOne WaitAll WaitAny

Page 59: Ready to Rock

PollingPollingCallbackCallback

WaitHandleWaitHandle

Page 60: Ready to Rock

Ado.Net 2.0 – Bulk Data Kopyalama Ado.Net 2.0 – Bulk Data Kopyalama MekanizmasıMekanizması

BBir veritabanı tablosundan, başka bir hedef ir veritabanı tablosundan, başka bir hedef tabloya tabloya veri taşımaveri taşıma işleminin,Yönetimsel işleminin,Yönetimsel Kod Kod (Managed Code)(Managed Code) ile ile gerçekleştirilebilmesi.gerçekleştirilebilmesi.

TransferTransfer işlemi bir işlemi bir transactiontransaction içerisinde içerisinde yürütülüryürütülür..

Kaynak ve hedef tablolar Kaynak ve hedef tablolar farklıfarklı sunuculardaki sunuculardaki farklı veritabanlarındafarklı veritabanlarında bulunabilir.bulunabilir.

Page 61: Ready to Rock

Ado.Net 2.0 – Bulk Data Kopyalama Ado.Net 2.0 – Bulk Data Kopyalama MekanizmasıMekanizması

Page 62: Ready to Rock

Bulk Data Bulk Data Kopyalama MekanizmasıKopyalama Mekanizması

Page 63: Ready to Rock

Ado.Net 2.0 – Transactions MimarisiAdo.Net 2.0 – Transactions Mimarisi

Veri Sağlayıcı (Data Provider)’ dan Veri Sağlayıcı (Data Provider)’ dan bağımsızbağımsız bir yapı sunar.bir yapı sunar.

OtomatikOtomatik olarak transactionların olarak transactionların açılmasıaçılması ve ve kapatılmasıkapatılması sağlanmıştır. sağlanmıştır.

Dağıtık (Distributed) TransactionDağıtık (Distributed) Transaction modelinde modelinde COM+ nesnelerin yazılmasına (dolayısıyla COM+ nesnelerin yazılmasına (dolayısıyla ContextUtil kullanılmasına) ContextUtil kullanılmasına) gerek yokturgerek yoktur..

DTC Dağıtık Transaction Yöneticisi DTC Dağıtık Transaction Yöneticisi (Distributed Transaction Coordinator) (Distributed Transaction Coordinator) otomatik olarakotomatik olarak devreye girer. devreye girer.

Page 64: Ready to Rock

Ado.Net 2.0 – Transactions MimarisiAdo.Net 2.0 – Transactions Mimarisi

LightWeight LightWeight TransactionsTransactionsLightWeight LightWeight TransactionsTransactions

OleTxTransactions

OleTxTransactions

Mimari temel olarak iki tip transaction Mimari temel olarak iki tip transaction modeli içerir.modeli içerir.

Tek veri kaynağı Tek veri kaynağı üzerinde çalışır.üzerinde çalışır.Tek veri kaynağı Tek veri kaynağı üzerinde çalışır.üzerinde çalışır.

Farklı veri Farklı veri kaynakları kaynakları

üzerinde ortak üzerinde ortak çalışır.çalışır.

Farklı veri Farklı veri kaynakları kaynakları

üzerinde ortak üzerinde ortak çalışır.çalışır.

Page 65: Ready to Rock

Ado.Net 2.0 – Transactions MimarisiAdo.Net 2.0 – Transactions Mimarisi

LightWeight TransactionsLightWeight TransactionsLightWeight TransactionsLightWeight Transactions

using (TransactionScope tsScope = new TransactionScope()) { using (SqlConnection con = new SqlConnection("data source=localhost;database=AdventureWorks;integrated security=SSPI")) { SqlCommand cmd = new SqlCommand("INSERT INTO Books (BookPrice,Name,Category,PubDate) VALUES (1000,'C#','Computer','1.1.2006')", con); con.Open(); cmd.ExecuteNonQuery(); tsScope.Complete(); }}

Page 66: Ready to Rock

Transaction MimarisiTransaction Mimarisi

Page 67: Ready to Rock

Ado.Net 2.0 – Binary SerileştirmeAdo.Net 2.0 – Binary Serileştirme

DataTable ve DataSet nesneleri için gerçek DataTable ve DataSet nesneleri için gerçek anlamda binary serileştirme imkanı anlamda binary serileştirme imkanı sağlanmıştır.sağlanmıştır.

RemotingFormat = SerializationFormat.Binary;RemotingFormat = SerializationFormat.Binary;

Page 68: Ready to Rock

Asp.Net 2.0 ile Gelen Asp.Net 2.0 ile Gelen Yenilikler Yenilikler

Asp.Net 2.0 ile Gelen Asp.Net 2.0 ile Gelen Yenilikler Yenilikler

Page 69: Ready to Rock

Ado.Net 2.0 – OnDemand CompilingAdo.Net 2.0 – OnDemand Compiling

Web uygulamasına ait kodların, Web uygulamasına ait kodların, yeniden yeniden derlemeye gerek duyulmadanderlemeye gerek duyulmadan güncellenmesidir.güncellenmesidir.

Kaynak kod dosyası veya sunu katındaki Kaynak kod dosyası veya sunu katındaki üyelerdeki değişikliklerin, kullanımdaki üyelerdeki değişikliklerin, kullanımdaki sürüme gelecek ilk talep ile birlikte sürüme gelecek ilk talep ile birlikte yanısıtılmasını sağlar.yanısıtılmasını sağlar.

Page 70: Ready to Rock

OnDemand CompilingOnDemand Compiling

Page 71: Ready to Rock

Asp.Net 2.0 - CrossPage PostingAsp.Net 2.0 - CrossPage Posting

BBir ir form’ dan, başka bir form’ a verilerin form’ dan, başka bir form’ a verilerin Post BackPost Back tekniğine göre tekniğine göre taşınabilmesini taşınabilmesini sağlar.sağlar.

Hedef form üzerinden, Hedef form üzerinden, kaynak forma ait kaynak forma ait referanslarreferanslar ele alınabilir. ele alınabilir.

CrossPage CrossPage PostbackPostback

Hedef.aspxHedef.aspxForm.aspxForm.aspx

Page 72: Ready to Rock

Asp.Net 2.0 - CrossPage PostingAsp.Net 2.0 - CrossPage Posting

Bir sayfaya Bir sayfaya birden fazla sayfadanbirden fazla sayfadan Cross Cross Page Post Back işlemi yapılabilir.Page Post Back işlemi yapılabilir.

CrossPage CrossPage PostbackPostback

Hedef.aspxHedef.aspx

Form1.aspxForm1.aspx

Form2.aspxForm2.aspx

Page 73: Ready to Rock

Cross Page PostingCross Page Posting

Page 74: Ready to Rock

Asp.Net 2.0 – Master PagesAsp.Net 2.0 – Master Pages

Master Page, uygulandığı diğer aspx Master Page, uygulandığı diğer aspx sayfalarının sayfalarının nasıl görünmesinasıl görünmesi gerektiğine karar veren bir gerektiğine karar veren bir şablondurşablondur..

ContentPlaceHolderContentPlaceHolder bileşeni bileşeni sayesinde, Master Page' leri sayesinde, Master Page' leri uygulayan diğer aspx sayfalarının, uygulayan diğer aspx sayfalarının, istenilen içeriğeistenilen içeriğe sahip olması sahip olması sağlanır. sağlanır.

Master Page’ ler normal bir aspx Master Page’ ler normal bir aspx sayfası gibi sayfası gibi tasarlanabilirtasarlanabilir,, html, html, image, server control gibi üyeleri image, server control gibi üyeleri içerebilir. içerebilir.

Page 75: Ready to Rock

Asp.Net 2.0 - MasterPagesAsp.Net 2.0 - MasterPages

Statik ÖğelerStatik Öğeler

Dinamikİçerik

Default.aspx

Page 76: Ready to Rock

Asp.Net 2.0 - MasterPagesAsp.Net 2.0 - MasterPages

Master Page' i uygulayan bir aspx sayfası Master Page' i uygulayan bir aspx sayfası tarayıcıda açıldığında tarayıcıya gelen sayfa, tarayıcıda açıldığında tarayıcıya gelen sayfa, Master Page ile aspx sayfasının birleştirilmesiMaster Page ile aspx sayfasının birleştirilmesi sonucu ortaya çıkan başka bir aspx sayfasıdır.sonucu ortaya çıkan başka bir aspx sayfasıdır.

Page 77: Ready to Rock

Master PagesMaster Pages

Page 78: Ready to Rock

SqlDataSourceSqlDataSource AccessDataSourceAccessDataSource ObjectDataSourceObjectDataSource XmlDataSourceXmlDataSource SiteMapDataSourceSiteMapDataSource

Sunu Katmanı

Veri Kaynağı

Veri Kaynağı Kontrolleri

Asp.Net 2.0 - Veri Kaynağı Asp.Net 2.0 - Veri Kaynağı KontrolleriKontrolleri

Page 79: Ready to Rock

VeritabanıVeritabanıObjectDataObjectDataSourceSource

KontrolüKontrolü

ObjectDataObjectDataSourceSource

KontrolüKontrolü

SelectMetodu()SelectMetodu()InsertMetodu()InsertMetodu()

UpdateMetodu()UpdateMetodu()DeleteMethodu()DeleteMethodu()

CRUDCRUD

SelectMetodu()SelectMetodu()InsertMetodu()InsertMetodu()

UpdateMetodu()UpdateMetodu()DeleteMethodu()DeleteMethodu()

CRUDCRUD

İş nesnesiİş nesnesi

Sunu KatmanıSunu Katmanı

Asp.Net 2.0 - Veri Kaynağı Asp.Net 2.0 - Veri Kaynağı KontrolleriKontrolleri ObjectDataSourceObjectDataSourceObjectDataSourceObjectDataSource

Page 80: Ready to Rock

Veri Kaynağı KontrolleriVeri Kaynağı Kontrolleri

Page 81: Ready to Rock

Asp.Net 2.0 - TemalarAsp.Net 2.0 - Temalar

Bir web projesinin çeşitli bölümlerinin, Bir web projesinin çeşitli bölümlerinin, tamamının ya da web projesini barındıran tamamının ya da web projesini barındıran sunucunun tümüne ait web uygulamalarının, sunucunun tümüne ait web uygulamalarının, belirli font, renkbelirli font, renk gibi özelliklere göre gibi özelliklere göre ortak bir ortak bir noktadan şekillendirilmesinenoktadan şekillendirilmesine imkan sağlar. imkan sağlar.

Temalar değişik seviyelerde Temalar değişik seviyelerde (sayfa, uygulama, (sayfa, uygulama, makinemakine) uygulanabilir. ) uygulanabilir.

Temaların içerdiği Temaların içerdiği skinskin’ ler yardımıyla ’ ler yardımıyla sunucu sunucu kontrolleri içinkontrolleri için ortak görsel şablonlar ortak görsel şablonlar oluşturulabilir.oluşturulabilir.

Page 82: Ready to Rock

Asp.Net 2.0 - TemalarAsp.Net 2.0 - Temalar

Page 83: Ready to Rock

TemalarTemalar(Themes)(Themes)

Page 84: Ready to Rock

Asp.Net 2.0 - Site NavigationAsp.Net 2.0 - Site Navigation

Web sitelerinde kullanıcıların Web sitelerinde kullanıcıların neredenerede olduklarını bilmelerine ve diğer sayfalar olduklarını bilmelerine ve diğer sayfalar arasında arasında kolayca gezinmelerinekolayca gezinmelerine yardımcı yardımcı olan yeni bir yaklaşım modelidir. olan yeni bir yaklaşım modelidir.

Site içeriği Site içeriği XML tabanlıXML tabanlı tutulur. Bu site tutulur. Bu site yönetimi için yönetimi için büyük esneklikbüyük esneklik sağlar. sağlar.

Page 85: Ready to Rock

Asp.Net 2.0 - Site NavigationAsp.Net 2.0 - Site Navigation

SiteMap(Xml)

SiteMap(Xml)

SiteMapPathSiteMapPath(Web Control)(Web Control)SiteMapPathSiteMapPath

(Web Control)(Web Control)

MenuMenu(Web Control)(Web Control)

MenuMenu(Web Control)(Web Control)

TreeViewTreeView(Web Control)(Web Control)

TreeViewTreeView(Web Control)(Web Control)

SiteMapDataSourceSiteMapDataSource(Xml)(Xml)

SiteMapDataSourceSiteMapDataSource(Xml)(Xml)

Page 86: Ready to Rock

Asp.Net 2.0 - Site NavigationAsp.Net 2.0 - Site Navigation

Page 87: Ready to Rock

Site NavigationSite Navigation

Page 88: Ready to Rock

Asp.Net 2.0 - Üyelik ve Rol Asp.Net 2.0 - Üyelik ve Rol YönetimiYönetimi Kolay ve genişletilmiş Kolay ve genişletilmiş güvenlik, kullanıcı, güvenlik, kullanıcı,

erişim ve rolerişim ve rol yönetimleriniyönetimlerini içerir. içerir. Hem görsel araçlar’ lar Hem görsel araçlar’ lar (Asp.Net Web (Asp.Net Web

Application Administration)Application Administration) hemde hemde yönetimli sınıflar yönetimli sınıflar (managed class-(managed class-MemberShip)MemberShip) yardımıyla uygulanabilir. yardımıyla uygulanabilir.

Sql Server 2005Sql Server 2005 ve daha pek çok ve daha pek çok veritabanını üyelik sistemi için destekler.veritabanını üyelik sistemi için destekler.

Page 89: Ready to Rock

Asp.Net 2.0 - Üyelik ve Rol Asp.Net 2.0 - Üyelik ve Rol YönetimiYönetimi

Sunucu KontrolleriSunucu Kontrolleri<asp:Login><asp:Login>

Sunucu KontrolleriSunucu Kontrolleri<asp:Login><asp:Login> MemberShip APIMemberShip APIMemberShip APIMemberShip API

MemberShip ProvidersMemberShip Providers

AspNetSqlProviderAspNetSqlProvider X ProviderX Provider

AccessAccess SqlSql XX

Page 90: Ready to Rock

Asp.Net 2.0 – Profile YönetimiAsp.Net 2.0 – Profile Yönetimi

Web uygulamalarının Web uygulamalarının kişiselleştirilmesinikişiselleştirilmesini kolaylaştırmakkolaylaştırmak amacıyla geliştirilmiş yeni amacıyla geliştirilmiş yeni bir yönetim modelidir.bir yönetim modelidir.

MembershipMembership sisteminin alt parçalarından sisteminin alt parçalarından birisidir.birisidir.

Page 91: Ready to Rock

Asp.Net 2.0 – Profile YönetimiAsp.Net 2.0 – Profile Yönetimi

<profile>    <properties>        <add name="Kategorim" type="System.String" defaultValue="Dvd"/>        <add name="KarsilamaMesajim" type="System.String" defaultValue="Kişisel Mesajınız"/>        <add name="SonGirisZamanim" type="System.DateTime"/>        <add name="ButonFontBuyuklugu" type="System.Int32" defaultValue="12"/>    </properties></profile>

Profile.SonGirisZamanim = DateTime.Now;Profile.KarsilamaMesajim = txtMesaj.Text;Profile.Kategorim = ddlKategoriler.SelectedItem.Text;Profile.Save();

Konfigurasyon tarafı. Konfigurasyon tarafı. (web.config)(web.config)

Managed Code Tarafı.Managed Code Tarafı.

Page 92: Ready to Rock

Asp.Net 2.0 – Konfigurasyon Asp.Net 2.0 – Konfigurasyon YönetimiYönetimi Web uygulamalarında Web uygulamalarında konfigurasyonkonfigurasyon

bilgisinin bilgisinin yönetimli kod (managed code) yönetimli kod (managed code) tarafındantarafından ele alınabilmesi sağlanmıştır. ele alınabilmesi sağlanmıştır.

Web.configWeb.config gibi konfigurasyon gibi konfigurasyon dosyalarında dosyalarında bilgi düzenleme, parametre bilgi düzenleme, parametre ekleme, şifrelemeekleme, şifreleme işlemlerinde işlemlerinde kullanılabilir.kullanılabilir.

Web uygulamalarının Web uygulamalarının daha kolay ve daha daha kolay ve daha güçlü yönetimgüçlü yönetim sağlar. sağlar.

Page 93: Ready to Rock

TeşekkürlerTeşekkürler

Burak Selim ŞENYURTBurak Selim ŞENYURT

MVP (Visual Developer – Visual C#)MVP (Visual Developer – Visual C#)[email protected]@bsenyurt.com

www.bsenyurt.comwww.bsenyurt.com

Page 94: Ready to Rock

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.