22 Ekim 2008 Çarşamba

Programcılıkta sihirli dokunuşlar .... Codsmith , NHibernate, ExpressAppFramework, NetTiers, LLBLGEN, DeKlarit vs.vs.

Bi süredir geniş bir projenin nasıl daha kolay yapılabileceği ile ilgil olarak sayfalar dolusu makele düzinelerce program inceledim ve örnekler yapmaya çalıştım.
Varabildiğim sonuç yada edindiğim izlenimden önce deneyimlerimi paylaşmak istiyorum ;

Başlamadan önce ; The Vietnam of Computer Science makalesini okumanızı tavsiye ederim.Her ne kadar ORM araçlarını savunsamda, ;)

İlk etapta, Tüm yazılımlarda kullanıcı güvenliği ,log kaydetme(Auditing, User and Role based) konusunda bir alt yapı gerekiyor,
Hangi veritabanı yada programlama dilini kullanırsanız kullanın bunu sağlamanın çeşitli yolları mevcut, ister elle kendniz yazın ister otomatik geliştirici bir araç kullanın.
Bu konuda ExpressAppFramework oldukça iyi bir altyapı sunuyor.

ExpressAppFramework ; Active Directory Based, Simple ve Complex olarak üç çeşit kullanıcı yönetimi fonksiyonu sunuyor.

Module içerisinde çalışırken sadece sürükle bırak yaparak login ekranından yönetim konsoluna kadar herşey emrinize amade.
Kulanıcı hareketlerinin loglamasını yapmaksa tablolara bir kaç satır Auditing kodu eklemekle programımıza ilave edilebiliyor.Ve bunu her alan için ayrı ayrı yapıyor.Her değişikliği kaydedebiliyor.GC isimli oluşturulan alanlar sayesinde silinmiş kayırların bile Audit bilgilerini alabilmek mümkün.Taki kesin temizleme yapılana kadar.
Peki Programı DD yapmak konusunda ne kadar başarılılar inherited objects konularında ne kadar iyiler.
Diyelimki c# ta aşağıdaki kodu module içerisine namespace inize eklediniz.

[DefaultClassOptions] //-> Bu alanda attribute tanımlıyoruz. Default Class Options dışında 3 çeşit daha mevcut XAF Built-in Attributes
public class Contact : Person
{
private string webPageAddress;
private string nickName;
private string spouseName;
private TitleOfCourtesy titleOfCourtesy;
private string notes;
private DateTime anniversary;
public Contact(Session session) : base(session) { }
public string WebPageAddress
{
get { return webPageAddress; }
set { SetPropertyValue("WebPageAddress", ref webPageAddress, value); }
}
public string NickName
{
get { return nickName; }
set { SetPropertyValue("NickName", ref nickName, value); }
}
public string SpouseName
{
get { return spouseName; }
set { SetPropertyValue("SpouseName", ref spouseName, value); }
}
public TitleOfCourtesy TitleOfCourtesy
{
get { return titleOfCourtesy; }
set { SetPropertyValue("TitleOfCourtesy", ref titleOfCourtesy, value); }
}
public DateTime Anniversary
{
get { return anniversary; }
set { SetPropertyValue("Anniversary", ref anniversary, value); }
}
[Size(4096)]
public string Notes
{
get { return notes; }
set { SetPropertyValue("Notes", ref notes, value); }
}
}
public enum TitleOfCourtesy { Dr, Miss, Mr, Mrs, Ms };

}

Programı derlediğinizde !!! ki bazen bi kaç defa build yapmanız gerekebiliyor
Daha önce uygulama ayarlarında eklediğiniz bağlantı parametrelerinde geçen veritabanında bir
yukarıdaki sınıfı veritabanında manupüle edebielcek bir tablo oluşturuluyor.

Bunun yanın da UI tarafında 3 adet görünüm yaratılıyor.
Contact Listview // Tüm kayıtları gösteren ve içeirisinde arama yapabildiğiniz bir grid.
Contact Detailview // Sadece yeni kayıt girişi için kullanılan bir arabirim. Primary keyler gizlenmiş bağlantılı tablolardaki kayırlar otomatik olarak lookupedit(Comboboxlar) içinde gösterilmiş olarak hazır önünüze geliyor
Contact Lookupeditview // Bağlı olabilecek tablolarda bu kişi kullanmak için hazır look up edit.

Herşey yolunda ve çok güzel gibi görünüyor.Fakat çok seri ve büyük sorunlarlada karşılaşabiliyorsunuz.Örneğin detailview variant mevcut değil ve bu büyük sorun.

Küçük bir iş için ble çok uzun zaman uğraşmanız gerekiyor ve yeni başlamışsanız başınız büyük derde girebiliyor.
Çünkü genel anlamda yeni bir sistem ve geliştirilmesi hala devam ediyor.
Yinede orta büyüklükte bir işi kaldırabilecek yapıda geliştirmeye açık ve KAYNAK KODLARI ile gelen bir çözüm.



şimdilik bu kadar yeter. sanırım.

Sadece Devexpress için bile yazılabilecek o kadar çok şey varki.
İlerleyen yazılarımda
eXpressApp Framework ile devam etmek
bunun yaında LLBlGEN, NHibrnate DeKlarit konularında yazmak istiyorum fırsat buldukça.
Özellikle DeKlarit i denemenizi öneririm.Çok ilginç özellikler barındıran değişik bir bakış açısı.

Diğerlerine de sırayla değinerek devam etmek istiyorum.

sevgi saygı ve selamlar.

Mehmet Kanpınar

Hiç yorum yok: