kurumsal yazılım geliştirme ve visual studio 2008

83

Upload: mtcakmak

Post on 15-Dec-2014

3.034 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Page 2: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Kurumsal Yazılım Geliştirme• 2008 Teknolojileri genel bakış• C# 3.0 Dil Yenilikleri – LINQ• Object Relational Mapping• LINQ to SQL, Entity Framework• Asp.Net 3.5• .Net Framework 3.0 Teknolojileri• Tavsiyeler

Page 3: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Kurumsal yazılımlar genellikle kalıcı veri ile uğraşır. Ki bu yazılımlar yıllarca veri saklamaya ihtiyaç duyarlar. Ancak bu yazılımlar yıllar boyunca değişir. Çoğu zaman üzerinde çalışması için hazırlandığı donanımlar, işletim sistemi ve derleyiciler değişir. Çoğu zaman tutulan veriler eskilere dokunulmadan genişletilir.

Page 4: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Çoğu zaman kullanıcılar veriye eş zamanlı(concurrency) erişir.

• Çoğu zaman Kurumsal yazılımların birden çok fazla Kullanıcı Arayüzü bulunur.

• Kurumsal yazılımlar çok nadiren tek başına çalışır. Çoğunlukla başka uygulamalar ile çalışmak zorundadır.

• Çoğu zaman "mantık dışı" İş Mantığı kodları nedeniyle yazılım yapmak tamamen işkence haline dönüşür.

Page 5: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Microsoft’un 2008 yazılım geliştirme ürünleri daha çok C#’ın kullanım alanları göz önüne alınarak oluşturuldu.

Genel bir dilden çok Kurumsal Yazılım Geliştirme alanına yöneldi.

Page 6: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Nesneye Dayalı Programlama geliştirmelerio Extension Methodso Anonymous Typeso Lambda Expressionso LINQ

• Veri erişim geliştirmeleri o LINQ to SQLo Entity Framework

Page 7: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Servis Tabanlı Yazılım Geliştirmeo Windows Communication Foundation(WCF)

• İş Akışlarını Yazılımlara Yerleştirmeo Windows Workflows Foundation(WF)

• Kullanıcı Deneyimi Geliştirmeo Windows Presentation Foundation

Page 8: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Language INtegrated Query

.Net dilleri içinde SQL tarzı sorgu yazılmasına izin veren bir teknolojidir.

Page 9: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

SqlConnection c = new SqlConnection(…);c.Open(); SqlCommand cmd = new SqlCommand(@"SELECT c.Name, c.PhoneFROM Customers cWHERE c.City = @p0");cmd.Parameters.AddWithValue("@po", "London"); DataReader dr = c.Execute(cmd); while (dr.Read()) {string name = dr.GetString(0);string phone = dr.GetString(1);DateTime date = dr.GetDateTime(2);}dr.Close();

Sorgu tırnak içinde

Zayıf-bağlı Parametre

Hatalar, derleme anında alınamaz

Tip-Güvenli olmayan alanlar

Page 10: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

public class Customer{public int Id;public string Name;public string Phone;…}

Table<Customer> customers = db.Customers;

var contacts =from c in customerswhere c.City == "London"select new { c.Name, c.Phone };

Sınıflar Veritabanı kayıtlarını tanımlar

Tablolar Tip-Güvenli koleksiyonlardır

Sorgu dilin doğal bir parçası

Derleyici sizi hatalardan korur

Page 11: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

IQueryable<Telefon> findTelefons(string ad){TelDBDataContext ctx = new TelDBDataContext();IQueryable<Telefon> tel = from c in ctx.Telefonswhere c.Kisi.AdSoyad == adselect c;return tel;}

private void Form_Load(…){GridView1.DataSource = findTelefons(ad);kayitSayisi.Text = findTelefons(ad).Count().ToString();}

Verileri henüz kullanmadan hazırlanmış sorgular

Gelen kayıt sayısını aynı sorgu üzerinden çek

“Select * From Telefon …” üretir

“Select Count(*) From Telefon …” üretir

Page 12: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

LINQ Query Objects SubmitChanges()

SQL Query Rows SQL or Stored Procs

LinqLinq2Sql ya da Bir ORM Aracı ile

DB Engine

from c in db.Customerswhere c.City == "London"selectnew { c.Name, c.Phone }

select Name, Phonefrom customerswhere city = 'London'

Application

Servisler:- Değişim yönetimi- Concurrency control

Page 13: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Type-Safe Sorgular ve Intellisense Desteği• Yeniden Kullanılabilir sorgular

o Sayfalamao Özetleme(Standart sorgu kullanılarak sadece

gerekli kolonları çağırma)o DB Değişikliklerin kolay implemente edilmesi

• Herhangi bir IQueryable implemente etmiş nesne sorgulanabilir.

• DB Inheritance için sorgularo Persistence for Inherited Objects desteği

Page 14: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• İlişkisel verileri, nesne tanımlarına dönüştürerek onlar üzerinde Nesneye Dayalı uygulama geliştirebilmemizi sağlayan araçlardır.

Page 15: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Şu 4 temel özelliği vardır:o Temel CRUD fonksiyonlarını gerçekleştirebilmek

için bir APIo Nesneler üzerinde sorgular oluşturabilmemiz için

sağlanmış bir sorgu dili ya da bir APIo Mapping(Eşleme) tanımlarını yapabilmek için bir

araço ORM gerçekleştirimi yapacak Transactional veri

kalıcılığı, lazy-load ilişkilerin getirilmesi vb. işlemleri gerçekleştirecek bir framework…

Page 16: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Yararlarıo Daha yüksek üretkenlik

Konsantrenizi CRUD işlemlerinden İş Mantığına yöneltebilmenizi sağlar.

o Daha kolay bakım Daha az satır kod, her zaman yazılımı daha

anlaşılabilir kılar, daha önemlisi de daha kolay “refactor” edilir. Kodlar daha çok İş Mantığından oluşur.

Page 17: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• Yararlarıo Marka bağımsız DB

ORM aracılığıyla yazılan DB erişim kodları sayesinde kolaylıkla farklı Database’ler üzerinde çalıştırılabilir.

o Performans Daha iyi yönetilebilir Caching sayesinde daha

yüksek peroformansa erişilebilir. (Örn: Distributed caching)

Page 18: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Linq 2 Sql

Vs 2008 ile piyasaya çıkan zayıf ancak kullanımı çok kolay bir ORM aracı

Page 19: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Linq to Sql

• Attribute tabanlı olarak çalışıyor.• Vs2008 içinde Wizard desteği var.• CRUD Fonksiyonları çok hızlı

gerçekleştirilebiliyor. • SP ve Function desteği devam ediyor.• Batch işlemler gerçekleştirilebiliyor.• Association(Relation)’lar kullanılabiliyor.• Concurrency kontrol için TimeStamp

kullanabiliyor.

Page 20: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Linq to Sql

Tablolar

Fonksiyon ya da Stored Procedure’ler

Entity’s

Associations(Relations)

Page 21: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

TelDBDataContext ctx= new TelDBDataContext();

Kisi ali = new Kisi() { AdSoyad = "Cin Ali" };ali.Telefons.Add(new Telefon(){TelefonNo="123456789"});

ctx.Kisis.InsertOnSubmit(ali);ctx.SubmitChanges();

Object Initializing

Yeni Veri Girişi

Tüm İşlemleri gerçekleştirir

Insert işlemi

Page 22: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Association üzerinden veri ekleme

TelDBDataContext ctx= new TelDBDataContext();var kisi = (from c in ctx.Kisiswhere c.AdSoyad.Contains(“ Ali Veli “)select c).First();kisi.Telefons.Add(new Telefon() { TelefonNo = "1234567" });ctx.SubmitChanges();

Tablolar Tip-Güvenli koleksiyonlar

String içinde taratma işlemi

Değişiklikleri takip eder.

Tüm değişiklikleri tek seferde kaydeder.

Page 23: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Linq to Sql - Dezavantajları

• Sadece SqlServer destekleniyor.• Sadece table-per-hierarchy (TPH)

inheritance destekleniyor.

Page 24: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Entity Framework

Microsoft’un sağladığı Haziran 2008 dolaylarında piyasaya çıkacak olan LINQ tabanlı güçlü bir ORM aracı

Page 25: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Entity Framework

• XML tabanlı olarak çalışıyor.• Beraberinde Wizard desteği geliyor.• CRUD Fonksiyonları çok hızlı

gerçekleştirilebiliyor.• Batch işlemler gerçekleştirilebiliyor.• Association(Relation)’lar kullanılabiliyor.• Concurrency kontrol için TimeStamp

kullanabiliyor.

Page 26: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Entity Framework

• Conceptual Model ile sanal ilişkiler oluşturabilmeo Nesnesel bazda

inheritance’ın DB’de belirtilmesi vb.

o Belli bir kolonun farklı isimdeki bir kolona map edilmesi

• String bazlı sorgulama dili: EntitySQL

Store

.NET Provider

V2.0

Conceptual Model

.NET Provider(EntitySQL)

ORM and LINQ

V3.0

Mapping

Page 27: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Entity Framework

• SP ve Function desteği var.o İstenirse CRUD fonsiyonları Stored

Procedure’lere bağlanabiliyor.• Sql Server harici veritabanları içinde provider

yazılabiliyor.• Table-per-hierarchy ve Table-per-Type

Inheritance desteği var.

Page 28: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

EF – Dezavantajları

• Açık kaynak kodlu değilo İhitiyaçlara göre özelleştirmek çok fazla mümkün

değil• Henüz Beta seviyesinde• Microsoft sadece SQL Server Provider’ı

yazıyor. Diğer providerlar, başkaları ya da siz tarafından implemente edilmeli

• Caching mimarisi hiç düşünülmemiş(Beta 3 itibariyle)

Page 29: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Asp.Net 3.5

• Asp.Net Ajax ve LINQ desteği

Page 30: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

ASP.NET 2.0 vs. ASP.NET 3.5

• ASP.NET 1.1 sürümünden ASP.NET 2.0 sürümüne geçişe göre daha az yenilikler bulunmaktadır

• ASP.NET 2.0’daki kontroller ve mimari aynen korunmaktadır

• AJAX ile bütünleşik görsel olarak zengin içerikli sayfalar hedeflenmektedir

• LINQ ve yeni veri kontrolleri ile daha gelişmiş veri işlemleri

Page 31: Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Page 32: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

AJAX Entegrasyonu

• ASP.NET AJAX artık .NET Framework ile bütünleşik hale geldi

• Önceki sürümdeki eksiklikler ve sorunlar giderilerek tutarlı bir yapıya kavuştu

• Control Toolkit ile gelen kontrollerle çok kolay şekilde daha zengin arayüzler tasarlanabilir (Extender)

Page 33: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Yeni Veri Kontrolleri

ListView• ListView kontrolü ile daha gelişmiş veri

görüntüleme• GridView ve DataList kontrolünün

harmanlanması• Veri sayfalama, sıralama, güncelleme, seçme,

silme işlemleri yapılabilir• Görüntülenen veri esnek şekilde

formatlanabilir

Page 34: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Yeni Veri Kontrolleri

DataPager• Veri sayfalama işleminin ne şekilde

yapılacağını belirler• ListView ile bütünleşik kullanılabilir• Kolay şekilde özelleştirilebilir

Page 35: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Yeni Veri Kontrolleri

LinqDataSource• Linq to SQL class’ları ile oluşturulan entity

katmanları üzerinde sorgulamalar yapılmasını sağlar

• Tüm veri kontrollerine veri sağlar• Veri sayfalama işlemlerinde diğer DataSource

kontrollerine göre performans kazancı sağlar

Page 36: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Asp.Net 3.5 Extensions

Dynamic Data, Data Services, Asp.Net MVC

Page 37: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Dynamic Data

• Linq-To-Sql yardımı ya da direk App_Data içinde bulunan bir Database üzerinde herhangi bir "İş Akışı" söz konusu olmadan verilere, erişim kolay bilgi değişimi gibi kolaylıklar sağlayan bir sistemdir.

• Linq2Sql Context'i oluşturduğunuzda basit bir ayar ile bütün listeleme, ayrıntıları incelme, Delete-Insert-Update gibi işlemleri otomatik oluşturur.

Page 38: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Dynamic Data

• Eğer direk DB üzerinden çalışacak isek de, herhangi bir ayar dahi gerekmez... Tablolar arasındaki assosaciton'ları otomatik olarak gerçekleştirir. Mesela Product listesinde; Category kolonu altına tıklandığında O Category'e ait tüm ürünler listelenir; ya da edit modda Category kolonu altına otomatik olarak bir dropdownList içinde tüm Category'ler listelenir.

• Hatta veritabanında Image olarak belirtilen kolonlar; direk olarak Image tipinde gösterilir, Insert yapmak istediğinizde Upload tagını görürsünüz.

Page 39: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Dynamic Data

• Elbette ki yine sadece Sql Server’ı destekler• Geliştirilebilir olup olmayacağı hakkında

herhangi bir bilgi yoktur.

Page 40: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Data Services

• WebService gibi bir Servis üzerinden Javascript yardımıyla Query’ler gerçekleştirebilmeni sağlayan bir Client-Side API ve kendi servisleri... Micrsoft’un Ajax Library’si üzerinde bir ek olarak çalışıyor.

• Svc denilen bir Server dosyası var. Bu svc üzerinde LINQ’nun C# tarafında yaptığına benzer şekilde Javascript ile sorgulamalar gerçekleştirebilmemizi sağlıyan alt yapı.

Page 41: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Asp.Net MVC

• Asp.Net’in Model-View-Controller implementasyonu... C# Generics kullanımı ile Type-Safe kod yazımını sağlıyor. Tüm kodları elle yazıyorlar, sürükle-bırak desteği henüz geliştirilmemiş. Microsoft MVP’lerinden Scott Guthrie ve Rob Conery geliştirmekte.

• Herhangi bir Server Control yazılmamış durumda.

• Gelişmesi uzun sürecek...

Page 42: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

.Net Framework 3.0

Microsoft’un IT Sektörü ihtiyaçları doğrultusunda hazırladığı, 4 temel parçadan oluşan Framework

Page 43: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

.NET At The Core

Page 44: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Workflow Foundation

İş Akışı tabanlı uygulamalar geliştirmek için tasarlanmış bir

programlama modeli, motoru ve araçları bütünü.

Page 45: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

İş akışı nedir?

Akış diyagramı.. Durum diyagramı.. Kural tabanlı..

• Bir takım “aktivite”ler ile tanımlanabilen programlaro İnsanları ve yazılımları koordine edebiliro Gerçek zamanlı bir kontrol-akışına sahiptiro Sürekli ve şeffaf çalışıro Dinamik değişimlere izin verir ve tolere edebilir

Page 46: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Workflow Foundation

• İş akışlarını modellemek için kullanılan bir altyapıdır.• İnsan ya da Sistem prosesleri modellenebilir;

o İhityaç çerçevesinde özelleştirilmeli ve kodlanmalıdır.• WS-BPEL’den farkı

o Activity’ler Web Servisi değil kodlanmış Assembly’dir.o .Net Framework üzerinde herhangi bir uygulamada host

edilir, tek ihtiyacı Frameworktür.o BPEL server birden fazla vardır

Microsoft –BiztalkServer IBM – WebSphere Apache - ODE

Page 47: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Workflow Foundation

• İş akışlarını daha kolay modelleyebilmemiz ve uzun kod akışlarını yönetebilmemiz için bir çatı.

• Tam olarak bir Workflow yazılımı değildir.• Yazılım geliştiricilere bir çatı sunar. Biraz daha

kod akışı sağladığı söylenebilir. Geniş uygulamalardaki iş akışlarının bir kısmını kodun içersinden kurtarmayı hedeflemiştir.

Page 48: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

WF’ının Yapısı Bütün workflow örnekleri , process dahilindeki runtime içerisinde yaratılırlar ve işlem görürler. Aynı applicationDomain içerisinde birden fazla runtime oluşturulabilir vebu runtime motorları tutarlı çalışacak şekilde bir çokWorkflow örneğini çalıştırabilir.

Bir workflow derlendikten sonra, bir windows prosesinde, bir web uygulamasında veya bir web servisinde host edilebilir ve bu uygulama ile kolayca iletişimde bulunabilir. Host eden uygulama olmadan workflow’larımızçalıştırılamaz.

Page 49: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

WF’nin Yapısı

• Workflow’lar aktivitelerin toplamıdır.• Workflow’lar bir Host process üzerinde çalışırlar . Bu bir uygulama

veya server olabilir.• Uygulama geliştiriciler kendi aktivite kütüphanelerini oluşturabilirler.• Base Activity Library: Kullanabileceğimiz aktiviteleri ve kendi

aktivitelerimizi oluşturabileceğimiz base’leri teşkil eder. • Runtime Engine: Workflow’ların çalıştırılmasından ve state

yönetimininde sorumludur.• Runtime Services: Hosting esnekliğini ve iletişimi sağlar.• Visual Designer: Grafiksel ve kod tabanlı üretim

Page 50: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

İş Akışı Tipleri(Sequential)• Sequential Workflow : Sürekli tekrar eden , tahmin edilebilir,aktiviteleri

daha önceden değişmeyecek şekilde kesin bir şekilde sıralanmış iş süreçleri için ideal olanıdır . Belirli bir sırada dizilen aktiviteler çeşit kurallar ve olaylarla dallanarak yukarıdan aşağı doğru bir akış izler.

Page 51: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

İş Akışı Tipleri(State Machine)• State Machine Workflow : State’lerden oluşur . Bir state başlangıcı bir

state de bitişi temsil eder. Sequential Workflow’dan daha esnek bir yapıya sahiptir . Aktivitelerin sıralı bir şekilde işleyiş gösterdiği Sequential Workflow’un aksine ,State Machine aktiviteleri dış olaylara dayalı bir şekilde işleyiş gösterirler. Bir olayin meydana gelmesiyle state’ler arası geçiş gerçekleşir. Son bitiş state’ine geçiş yapıldığı vakit , workflow tamamlanmış olur .

Page 52: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Runtime Servisleri

Host Application

App DomainRuntime

Services

WorkflowPersistenceService

TrackingService

WorkflowSchedulerService

WorkflowCommitWorkBatchService

Bir thread üzerinde Workflow’un çalışmasını zamanlar

Transaction’ları Commit eder

Process’in bulunğu durum ya da adımla ilgili değişiklikleri tutar

Workflow Instance’ını veritabanına saklar

Page 53: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Workflow Servisleri• Servisler ihtiyaç duyulduğu gibi eklenebilirler• Bazı servisler varsayılan olarak eklenir ama sonradan üzerine başka bir

servis yazılarak deiştirilebilirler• Servisler “Provider Pattern” kullanılarak yaratılırlar

• Persistence Service• Tracking Service• Scheduler Service• Kendi yarattığınız servisler

• Servisler aracılığıyla WF ve host iletişim kurulur

• Başlangıçta ExternalDataExchangeService runtime’a eklenir• Servisler iletişim için soyut araçtır

• Örneğin bir mail servisiyle mail gönderdiğiniz vakit , mailin gideceğini bilirsiniz ama nasıl gideceği sizi ilgilendirmez. Bunu servis sağlayıcının sağlaması gerekir.

Page 54: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Tracking

TrackingServiceHost Application

Activities

WorkflowInstance

Profile

• Kullanımıo State görselliğio KPI bilgisio Arşivlemeo Denetleme

• Data takibio State ve data değişimlerio Koddan izleme bilgisinin

emilmesio Dinamik değişiklikler

• Tracking Profileo Neyin track edileceğini belirlero XML formatında serileşir

• Tracking Serviceo Profilleri yönetiro Track edilecek olayları yakalaro Workflow üzerinde çalışır

Page 55: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Persistence

PersistenceService

Host Application

WorkflowInstance

Persist

Load

Unload

• Kullanımo Workflow örneğini

,timer’ları ve kuyrukları DB’de depolar

• Persisto Örnek

WorkflowPersistenceService kullanılarak kaydedilir.o Transactional aktiviteler

TransactionScope CompensatableTransactionSc

ope

• Loado WorkflowPersistenceService

kullanılarak örnek oluşturulur.• UnLoad

o Örneğin state’ini kaydederek geçici bellekten çıkartır.

o Policy WorkflowPersistenceService veya host application tarafında kontrol edilir

Page 56: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

XAML

Markup

XAML C#/VB

Markup + kod

C#/VB

Sadece kod

Workflow derleyicisi

C#/VB derleyicisi

XAML

Markup

NET Assembly

Workflow Runtime

Workflow Instance

Geliştirme Seçenekleri

Page 57: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Communication Foundation

Servis Tabanlı Yazılımları hızlıca geliştirebilmek için

Tümleşik Altyapı

Page 58: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Communication Foundation

Birlikte çalışabilirlik ÜretkenlikServis tabanlı yazılım

geliştirme

• WS-* tanımlamalarına geniş çaplı destek

• Geçmiş MS tabanlı dağıtık sistem çözümleri ile tam uyumlu

• Günümüz dağıtık sistem teknolojilerini birleştirir

• Özellik tabanlı geliştirme sağlar

• Visual Studio 2005 ile entegre

• “Loosely Coupled” servisler geliştirmeye imkan tanır

• İletişim yetenekleri konfigürasyon tabanlı

Page 59: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Farklı platformlarla

çalışma

ASMX

Olay tabanlı

programlama

Enterprise Services

WS-*Protokolleri

WSE

Mesaj tabanlı

programlama

System.Messaging

Mekan bağımsız nesneler

.NET Remoting

Bütünleşik Programlama Modeli

Page 60: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Yan Yana çalışma

Birlikte çalışma

Kolay upgrade imkanları

WCF Sürüm Uyumluluğu

Page 61: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Communication Foundation

• Yazılım mimarilerinde birden fazla mesajlaşma stili var. Bu nedenle yazılım geliştirme zorlaşabiliyor. Kolay kullanım sağlanabilmesi için WCF Mimarisi kurulmuştur.

• WCF .Net Remoting, MSMQ, WS-* vb. Protokollerin kolay kullanılabilmesi için soyut bir arayüz sağlamaktadır.

• Asıl fikir SOA tabanlı yazılımları kolay gerçekleşetirebilmektir. Özellikle WebService’leri üzerine yoğunlaşmıştır. Atomic Transaction, WS-Security gibi konularda ciddi kolaylıklar sağlamaktadır.

Page 62: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Presentation Foundation

Benzersiz bir kullanıcı deneyimi oluşturmak için UI ve medya

kavramlarını kapsayan bütünleşik ve üretkenlik sağlayan bir framework

Page 63: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Presentation Foundation

• Windows tabanlı yazılımlarada kullanıcı deneyimini maksimuma çıkartmak adına hazırlanan bir framework. XAML (eXtensible Application Markup Language) denilen bir altyapı ile Web ya da Windows’a gömülebilen görsellik öğelerini sunan bir altyapı.

• Form öğelerini bu XAML yapısı sayesinde tanımlamamızı sağlıyor.

Page 64: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

XAML ve tanımsal programlamaXAML = Extensible Application Markup Language

• Kolayca araçlar geliştirilebilir• Kod ve içerik ayrı• Tarayıcılarda veya kendi başına çalışabilir

<Button Width="100"> OK<Button.Background>LightBlue</Button.Background></Button>

XAML

Button b1 = new Button();b1.Content = "OK";b1.Background = new SolidColorBrush(Colors.LightBlue);b1.Width = 100;

C#

Dim b1 As New Buttonb1.Content = "OK"b1.Background = New _SolidColorBrush(Colors.LightBlue)b1.Width = 100

VB.NET

Page 65: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Presentation Foundation

• Microsoft Expression Blend ile tasarlanan tasarım öğelerini Windows programlarınızda kullanmanızı sağlar.

• Expression Blend ürünü; Adobe’un Flash yazılımına çok benzer olduğunu söyleyebiliriz. Böylece Windows yazılımlarına Tasarım etkenini koyabilir ve daha kolay kullanımlı yazılımlar üretebiliriz.

Page 66: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Cardspace

• Windows tabanlı kimliklendirme altyapısı.• .Net Passport’un mimarisinin server’larını

kendimizin kurabildiği bir sistem.• Bir server’dan aldığınız kimlik sayesinde

başka yazılımlara istekte bulunuyorsunuz, aldığınız token hakkındaki ayrıntılara; token’ı aldığınız server gidip yazılım kendisi soruyor.

• Böylece tekrar üyelik işlemleriyle uğraşmamış oluyorsunuz.

Page 67: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

IDE Yenilikleri

• LINQ desteği• .Net Framework’ün bazı kütüphaneleri’nin

kaynak kodları açılmış• Bütün yeni teknolojiler için arayüzler

sağlanmış

Page 68: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

IDE Yenilikleri – Web Editor

• Design ve Source penceresine ek olarak Split ekranı koyulmuş; böylece görsel öğelerle uğraşırken aynı zamanda Html ve Server Control taglarını da yönetebiliyor; hızlıca çeşitli değişiklikler gerçekleştirebiliyorsunuz.

• CSS Manage Styles penceresi ile Sayfa içine gömülü ve link edilmiş uzak .css dosyalarını yönetebiliyorsunuz.

Page 69: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

IDE Yenilikleri – Web Editor

• CSS Properties penceresi ile de belli bir tag’ı miras aldığı kurallar, ve miras aldığı özellikleri ile birlikte gösterilir; eğer miras alınan özellik değiştirilmişse; üzeri çizgi olarak gösterilir.

• AJAX uygulamaları için güçlendirilmiş Debug araçları...

• Daha güçlü javascript Intellisense

Page 70: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

2008 ve Tavsiyeler

Microsoft’un 2008 vizyonu ve Firmamızda uygulanması

Page 71: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

2008 ve Tavsiyeler

• 2008 teknolojileri daha çok genel problemleri çözmeye yönelmiş; ancak sağlam bir entegrasyon bulunmuyor.

• Hedef daha çok alt yapıları sunup, tam çözüm ve entegrasyonun şirketlerin IT Staratejisi çerçevesinde geliştirilmesi

• Firmamız adına güçlü bir Application Framework altında gerekli teknolojiler birleştirilebilir.

Page 72: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Application Framework Hedefleri

• Daha az satır kod barındıran• Daha hızlı• Bakımı kolay• Kolay entegre edilebilir

Yazılım geliştirmek…

Page 73: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

NHibernate

• Bir ORM aracı• 15’den fazla Database’i SQL Syntax’ı ile

beraber destekler.• Açık kaynak kodlu• Güçlü Caching mimarisi• String bazlı yada ICriteria API’si ile hızlı veri

çekimi

Page 74: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Linq to NHibernate

• NHibernate’in tek kötü yanı dil sınırları nedeniyle çoğu noktada string bazlı çalışması idi.

• Eğer ki Linq NHibernate’e uygulanırsa(ki internette bazı örnekleri bulunuyor) çok güçlü bir altyapı sağlayacaktır.

• Linq’nun yararları + NHibernate’in gücü

Page 75: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Workflow Foundation

• Yazılım geliştirmenin en zor kısmı İş Mantığı kodlarını yerleştirmektir.

• Sağlanan bu altyapıyı ihtiyaçlarımız doğrultusunda özelleştirilerek çok daha hızlı şekilde yazılım geliştirebilmemize yardımcı olabilir.

• Visio çizimlerimizin bir Framework tarafında çalıştırılması gibi

Page 76: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Aspect Oriented Programming

• Kodun kesişen yönlerini ortak olarak toplamaya yarayan bir teknik.

• 2 yılı aşkın süredir Java tarafında büyük projelerde kullanılıyor.

• Ciddi kolaylaştırmalar sağlanıyor.

Page 77: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Aspect Oriented Programming

Page 78: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Aspect Oriented Programming

• GetFoo komutunu çağırdığınızda diğer tüm işlemleri standart hazırlanan fonksiyonlar size ek kod yazdırmadan halledebilmenizi sağlıyor.

• Hatta bir sınıfa genel olarak bir Aspect’i uygulayabilmemizi sağlayan yapılar dahi var.

Page 79: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Spring.Net Framework

• NHibernate, Dependency Injection, AOP, MVC gibi konularda destek sağlayan komple bir Open Source Framework

• İhtiyaçlarımıza göre özelleştirilebilir.

Page 80: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

UI Bileşenleri

• Kullanıcıya daha yüksek görsellik ve kullanışlılık sağlayabilecek;

• Yazılımcıya ise daha hızlı Kullanıcı Arayüzü geliştirebilmesini sağlayacak bir framework; kaynak kodları ile satın alınıp ihtiyaçlara göre özelleştirilebilir. (Mesela: DevXpress)o Security ayarlarını kendi framework’umuz ile entegre etmeko Mesela NHibernate ve Workflow Foundation ile birlikte

kullanmak için FODatasource

Page 81: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Windows Communication Foundation

• Sistemlerin entegrasyonu ve Service Oriented Architecture’a hazırlık yapılması açısından önemli olacaktır.

• İhtiyaçlar çerçevesinde sistemlerimize entegre edilebilir.

Page 82: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

Application Framework Modülleri

• ORM aracıo Nhibernate & LINQ

• Windows Workflow Foundation• Spring

o Dependency Injectiono Aspect Oriented Programmingo MVC Framework Entegrasyonu

• UI Componentler• Windows Communication Foundation

Page 83: Kurumsal Yazılım Geliştirme ve Visual Studio 2008

• MSDN• Hibernate in Action, Manning 2005• Patterns of Enterprise Application

Architecture, Martin Fowler, Adisson Wesley 2002

• Spring.Net Application Framework Reference Guide