Extension Metotlar

Sunday, February 05, 2012 4:12 PM

Hepimiz biliyoruz ki LINQ c# 3.0 ile birlikte biz çok farklı bir bakış açısı kazandırmıştır.LINQ ile gelen bir çok yenilik .net 2.0 üzerine genişletilebilir özelikler ile olmuştur. Extensin, partial method, var  keywordü ve bir çok özellik örnek verilebilir.Mümkün mertebe bloğumda küçük ipuçlarına yermekte fayda görüyorum.

Konumuz extension'lar. Bunun hakkında detaylı bilgi vermeyeceğim. Eline sağlık Burak Selim Şenyurt hocamız zaten döktürmüş.  Konu hakkında detaylı bilgi almak istyenle linkteki makaleyi okuyabilir.

Ben projelerimde mümkün mertebe Util sınıflar kullanmaktansa extensionları kullanmayı tercih ediyorum.Geçen nette konu ile ilgili bir araştırma yaparken

http://extensionmethod.net

 adresine rastgeldim. Extensionlar class lara göre düzenlemişler. Gayet işe yara extensionlar var. 

Herkese iyi çalışmalar.

Etiketler Etiket Yok

.Net uygulamalarında dll arama dizinleri

Friday, November 18, 2011 8:09 PM

Hepimizin bildiği üzere .Net çatısı altında çalışan bütün uygulamalar dll mantığı ile çalışıyor ve biz bu dll ler üzerinden işlemler gerçekleştiriyoruz. Kendi yazdığımız uygulamalardaki referans edilen dll'ler ise Asp.Net ve Asp.Net MVC uygulamaları için "BIN" klasörü altında , masaüstü uygulamalarında da kendi bulunduğu klasörde yada  sistemin PATH değişkeninde bulunan klasörlerde aranır.Eğer bu dll gerel web gerek masaüstü uygulamalarında belirttiğim dizinlerin birisinde değilse programı çalıştırdığınızda bir hata mesajı alırsınız. Bu tip durumlarda (örneğin dlll 'erinizi ayrı bir klasörde toplamak istemeniz durumunda) bir configürasyon dosyası oluştururarak bu durumun üstesinden geleblirsiniz.

 

 WinForm uygulamalar için Visual Studioda projenize sağ tıklayarak Add --> New Item seçeneği ile bir application configuration File eklemelisiniz.Önemli bir noktayı hatırlatmalıyım. Eklemiş olduğunuz Configuration File dosyası uygulamaadı.exe.config şeklinde olmalıdır. Şimdi gelelim configuration File dosyasının içeriğine ;

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

<probing privatePath="extension;data"/>

</assemblyBinding>

</runtime>

</configuration>

 

Yukarıdaki xml configurasyon dosyasını biraz incelemek gerekirse bilmediğimiz sadece bir element var probing elementi.

Orda belirtilen dll dosyalarını extension ve data klasörleri içinde aramak. Eğer eğer bir setup oluşturacaksanız configrasyon dosyasının exe niz ile aynı klasörde olmasına dikkat ediniz.

 

Web uygulamlarında ise aşağı yukarı aynı işlem gerçekleştiriliyor.Açtığımız  web projlerinde zaten bir tane configurasyon dosyası standart olarak gelmektedir. Hepimizin yakından bildiği Web.Config dosyası. 

 

<configuration>

<runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

<probing  privatePath="App_Data/Dependencies"/>

</assemblyBinding>

</runtime>

</configuration>

 

Aslında web.config dosyasına ekliyeceğimiz tek bir satır."<probing  privatePath="App_Data/Dependencies"/>"

Yukardada aynı şekilde referans edilen dll lerimizi "App_Data/Dependencies" klasörü altında arayacak.

 

 

Etiketler Etiket Yok

Neden Poco?

Thursday, June 09, 2011 12:00 PM

Geçen hafta okumaktan zevk aldığım ALT.NET guruba bir başlık açmıştım. Neden poco? Gökhan ERCAN arkadaşımızın verdiği cevap konuyu gayet iyi anlatan bir cevap olmuştu.

 

POCO entity'leri mevcut kullanılan ORM'ye ya da diğer bir dış sisteme ait referans barındırmadığı için sistemdeki mevcut komponent'lerin hepsinden soyutlanmış olacaktır. Bu da üretilen entity'lerin daha kolay test edilmesi, daha saf olarak serialize edilmesi, daha az yer kaplaması ve hiçbir kütüphaneye bağımlılığı olmadan farklı sistemler arasında dağıtılabilmesi gibi avantajlar getirecektir. İleride ORM değiştirebilmek ve aynı entity'lerin farklı ORM kullanan sistemler arasında sorunsuz paylaşabilmesi gibi avantajları olacaktır. 

 

Dezavantaj olarak ise; mimarinin her katmanında temel data kontratları olarak kullanılan entity'lerin direk olarak veriyi ilgilendiren ChangeTracking, LazyLoading, Datatype Validation, Serialization, Databinding gibi konularda tamamen bilgisiz olması ve bu konuda kendiliğinden bir destek verememesidir. Bu özellikleri dış servislerden dinamik ya da statik proxy'ler üreterek çözmek mümkün ama her entity kullanımında 1-2 satırlık ekstra kod getirecek ve dinamik çağrımlar yapacağı için belirli bir oranda performansı düşürebilecektir.. Ayrıca POCO'ya dinamik proxy'ler ile servisler sağlarken tüm property'lerin public, virtual olması, ctor almaması, abstract olmaması gibi kısıtlamalar gelecektir. Bunlar da dezavantaj sayılabilir. "

Etiketler Poco Orm

Yazılım geliştirmeye değişik bir bakış...

Saturday, October 16, 2010 12:54 AM

Programcılıkta sabahlamanın verdiği huzur ve tatmin çok meşhur. Programcılar sabaha kadar çalışma konusunda herkesi şaşırtan derecede istekli ve beceriklidir. Bu gece çalışması boyunca beyin bir "akış" yakalayarak saatlerin su gibi geçtiği bir çalışma ortamı oluşur. Bu çalışma sırasında beyin en derin konsantrasyon düzeylerine erişir ve genellikle zor programlar bu kesintisiz, onlarca saat süren çalışmalarda ortaya çıkar. Beyin bu stilde çalışırken kişilerin mutlu oldukları, mutluluk düzeylerinin arttığı bilimsel çalışmalarla gözlemlenmiştir. Bu çalışmalar eski Chicago Üniversitesi Psikoloji Bölüm Başkanı Mihaly Csikszentmihalyi tarafından yapılmıştır. Çalışmalarda çeşitli disiplinlerden yüzlerce kişinin günlük uğraşları incelenmiş ve bu sırada "mutluluk" düzeyleri gözlemlenmiştir. Bu çalışmaların programcılar tarafındaki bulguları ise ilginçtir. Her ne kadar programcılık bir bilim dalı (Computer Science), bir mühendislik (Software Engineering) olarak düşünülse de programcıların beyninin sanatçıların çalışma stiline sahip olduğu ortaya çıkmıştır. Programcılık sırasında beyin bir "akış" moduna geçmekte, etraftan ilişkisini kesmekte ve bir probleme günlerce konstantre olabilmektedir.

Devamı...

Etiketler Etiket Yok

String or binary data would be truncated

Wednesday, January 20, 2010 1:25 PM

HATA MESAJI:
"String or binary data would be truncated."

AÇIKLAMA:
Bir tabloya kayıt eklerken yada tablodaki bir kayıdı güncellerken bu hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Bir tabloya kayıt eklerken yada tablodaki bir kayıdı güncellerken bu hata ile karşılaşmanızın.sebebi, alan genişliği az olan bir alana daha uzun bir genişlikte veri yazmaya çalışmanızdır.

Etiketler Etiket Yok