kurumsal yazılım geliştirme ve visual studio 2008
DESCRIPTION
TRANSCRIPT
• 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
• 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.
• Ç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.
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.
• Nesneye Dayalı Programlama geliştirmelerio Extension Methodso Anonymous Typeso Lambda Expressionso LINQ
• Veri erişim geliştirmeleri o LINQ to SQLo Entity Framework
• 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
Language INtegrated Query
.Net dilleri içinde SQL tarzı sorgu yazılmasına izin veren bir teknolojidir.
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
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
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
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
• 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
• İlişkisel verileri, nesne tanımlarına dönüştürerek onlar üzerinde Nesneye Dayalı uygulama geliştirebilmemizi sağlayan araçlardır.
• Ş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…
• 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.
• 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)
Linq 2 Sql
Vs 2008 ile piyasaya çıkan zayıf ancak kullanımı çok kolay bir ORM aracı
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.
Linq to Sql
Tablolar
Fonksiyon ya da Stored Procedure’ler
Entity’s
Associations(Relations)
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
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.
Linq to Sql - Dezavantajları
• Sadece SqlServer destekleniyor.• Sadece table-per-hierarchy (TPH)
inheritance destekleniyor.
Entity Framework
Microsoft’un sağladığı Haziran 2008 dolaylarında piyasaya çıkacak olan LINQ tabanlı güçlü bir ORM aracı
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.
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
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.
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)
Asp.Net 3.5
• Asp.Net Ajax ve LINQ desteği
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
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)
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
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
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
Asp.Net 3.5 Extensions
Dynamic Data, Data Services, Asp.Net MVC
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.
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.
Dynamic Data
• Elbette ki yine sadece Sql Server’ı destekler• Geliştirilebilir olup olmayacağı hakkında
herhangi bir bilgi yoktur.
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ı.
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...
.Net Framework 3.0
Microsoft’un IT Sektörü ihtiyaçları doğrultusunda hazırladığı, 4 temel parçadan oluşan Framework
.NET At The Core
Windows Workflow Foundation
İş Akışı tabanlı uygulamalar geliştirmek için tasarlanmış bir
programlama modeli, motoru ve araçları bütünü.
İş 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
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
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.
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.
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
İş 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.
İş 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 .
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
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.
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
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
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
Windows Communication Foundation
Servis Tabanlı Yazılımları hızlıca geliştirebilmek için
Tümleşik Altyapı
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ı
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
Yan Yana çalışma
Birlikte çalışma
Kolay upgrade imkanları
WCF Sürüm Uyumluluğu
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.
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
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.
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
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.
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.
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ış
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.
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
2008 ve Tavsiyeler
Microsoft’un 2008 vizyonu ve Firmamızda uygulanması
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.
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…
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
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ü
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
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.
Aspect Oriented Programming
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.
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.
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
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.
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
• MSDN• Hibernate in Action, Manning 2005• Patterns of Enterprise Application
Architecture, Martin Fowler, Adisson Wesley 2002
• Spring.Net Application Framework Reference Guide