Debug Edilebilir Windows Service Geliştirmek 10 Nisan 2011 Burak-Selim-Senyurt Windows Services Ancak bir developer için, kodun çalışma zamanındaki durumunu incelemenin sayısız yolu olduğu da bir gerçek. Öyleki, Debug etmek bence en güzel yollardan birisi. Lakin bir Windows Service uygulamasının Debug edilmesi de sanıldığı kadar kolay değil Thinking smile İşte bu yazımızda internet üzerinden yaptığım araştırmalar sonucu öğrendiğim ve bir Windows Service uygulamasının nasıl debug edilebeceğine dair uygulanabilen yöntemlerden birisini ele alıyor olacağız. Olabildiğince basit bir şekilde anlatmaya gayret edeceğim bu vaka çalışmamızda, adım adım ilerliyor olacağızWinking smile Öyleyse gelin şu metal entegre üzerindeki böcekleri ayıklamaya çalışalım. [Daha fazla]
Netspecter Abstract Class Peşinde 07 Nisan 2011 Burak-Selim-Senyurt C# Netspecter bu kez bir abstract sınıfın peşinde. Sizin içinde eğlenceli bir deneyim olacağına inandığım enteresan bir vakayı analiz etmeye çalışıyor olacağız. Çoğunlukla kod geliştirirken pek fark etmediğimiz bir hata ama hemen çözüm üretebiliyorz. Lakin bu çözümü üretirken istediğimizin dışında bir sonuca da neden olabiliyoruz. Dilerseniz hiç vakit kaybetmeden konumuza geçelim. İlk olarak aşağıdaki kod içeriğini göz önüne alarak başlamamızda yarar olacağı kanısındayım. [Daha fazla]
Entity Framework Üzerinde TransactionScope Kullanımı 01 Nisan 2011 Burak-Selim-Senyurt Entity Framework Yıllar yıllar önce .Net Framework 2.0 ile gelen yenilikleri takip etmeye çalıştığım dönemlerde, Amazon üzerinden getirttiğim kitaplardan birisi de yandaki resimde görülen Ado.Net and System.Xml v2.0 kitabı idi. Şu an halen kitaplığımda durmakta. O sıralar CSharpNedir? bünyesinde Ado.Net bölüm editörlüğü yaptığımdan, bu kitabı tedarik etmiş ve çalışmıştım. .Net Framework 2.0 ile gelen yeni Xml alt yapısının beta hali ile alması bir yana Ado.Net’ in yeni 2.0 sürümü için planlanan bazı kabiliyetlerde anlatılmaktaydı ki bunlardan bekli de en önemlisi System.Transaction.dll assembly içerisinde yer alan ve özellikle Distributed Transaction yönetimini daha etkili ve kolay bir şekilde ele almamızı sağlayan TransactionScope tipiydi. [Daha fazla]
Fluent Interface Nedir? 27 Mart 2011 Burak-Selim-Senyurt C# Bu günkü yazımızda ilk olarak Martin Fowler ve Eric Evans tarafından tanımlanan Fluent Interface konusunu irdelemeye çalışıyor olacağız. Aslında kelime anlamlarından yola çıkarsak okunabilir, açık, net arayüz tiplerinden bahsettiğimizi düşünebiliriz. Ancak bu şekilde söz konusu kavrama biraz haksızlık etmiş oluruz. Fluent Interface esas itibariyle daha okunabilir kodlama açısından önem arz eden ve uygulanması sırasında metod zincirlerinden yararlananan bir yaklaşım sunmaktadır. Şimdi ne demek istediğimizi ben de ifade edemedim aslında Confused smile Gelin basit bir örnek ile konuyu didiklemeye başlayalım.Bu amaçla aşağıdaki kod içeriğini göz önüne alabiliriz. [Daha fazla]
Daha iyi Kodlama için Basit Öneriler 17 Mart 2011 Burak-Selim-Senyurt C# Aslında daha okunaklı, daha efektif ve zaman zaman daha verimli kod üretmek için bir kaç küçük noktaya dikkat etmekte yarar olabilir. Bu sayede sanıyorum ki kodlarımız en azından daha şık duracaktır Wink Gelin bu bir kaç küçük püf noktadan bir kaçına hep birlikte bakalım. [Daha fazla]
jQuery İçerisinden Bir WCF Servisini Kullanmak 13 Mart 2011 Burak-Selim-Senyurt WCF, WCF 4.0 Son yıllarda özellikle Web uygulamalarında jQuery’ nin oldukça fazla yaygınlaştığını görmekteyiz. Özellikle Asp.Net MVC(Model View Controller) disiplinin de…Ben her ne kadar Javascript vey jQuery tarafında uzman olmasam da sonuçta bu istemcilerin çağrıda bulunabileceği WCF(Windows Communication Foundation) servisleri olabileceğini biliyorum Sarcastic smile Dolayısıyla bu günkü yazımızda jQuery içerisinden JSON(JavaScript Object Notation) ve XML(eXtensible Markup Language) formatında veri sunan operasyonlara sahip bir WCF servisinin nasıl kullanılabileceğini incelemeye çalışıyor olacağız. [Daha fazla]
Servis Operasyonlarını Kod Yardımıyla İzlemek – Event Kullanımı 06 Mart 2011 Burak-Selim-Senyurt WCF Oysaki operasyon çağrılarını işletim sisteminin Event Log’ larına yazdırtmak ya da, XML tabanlı bir dosyaya aktarılmasını sağlamak isteyebiliriz. Hatta söz konusu izlerin veritabanı üzerindeki bir tabloya yazdırılması da düşünülebilir vb… Bir başka deyişle operasyon çağrılarının izlenmesi sırasında oluşan log verilerini, herhangibir kaynağa doğru yazdırmak isteyebiliriz. Böyle bir durumda, tasarlamış olduğumuz tiplerin, onları kullanan object user’ lara alternatif bir yol sunması gerekmektedir. Nitekim oluşturulan log verisinin nereye yazılacağına object user’ ın karar vermesi, çok daha esnek bir izleme yapısı oluşturulmasını sağlayacaktır. Peki bunu nasıl gerçekleştirebiliriz? [Daha fazla]
Regex ve Performans İpuçları – Interpreted ve Compiled Farkı, Bir de Sürpriz 03 Mart 2011 Burak-Selim-Senyurt C# İnce ayarlar çekilmiş bir yazılım, zaman zaman çok hızlı sonuçlar verebilir. Hatırlayacağınız üzere Regex ve Performans İpuçları – Otomatik Cache başlıklı bir önceki yazımızda son derece sıcak bir gecede, Regex tipinin performanslı kullanımına ilişkin ilk ip ucunu aktarmış ve sonuçlarını incelemeye çalışmıştık. Regex kullanımında dikkat çeken noktalardan bir diğeri de(bir başka deyişle yapılabilecek ince ayarlardan bir diğeri de) yorumlanarak(Interpret) veya önceden derlenerek(Compiled) çalıştırılabilen ifadeler ile ilişkilidir. [Daha fazla]
Bana Bir Struct Yaz. Yok Yok Bana Bir Class Yaz. 28 Şubat 2011 Burak-Selim-Senyurt C# Bu yazımızda, Struct(Yapı) ile Class(Sınıf) tipleri arasındaki temel farklılıkları irdelemeye çalışıyor olacağız. Ancak benzerlikleri de yakalamaya gayret edeceğiz. (Hemen şunu hatırlatalım; .Net Framework, 5 temel veri tipi tanımlar. Bunlar Class, Struct, Enum, Interface ve Delegate tipleridir) Özellikle Struct tipinin kullanımına ilişkin örnekler geliştireceğiz. [Daha fazla]
Servis Operasyonlarını Kod Yardımıyla İzlemek 27 Şubat 2011 Burak-Selim-Senyurt WCF, WCF 4.0 Aslında bu günkü yazımızda bir WCF(Windows Communication Foundation) servisinin operasyonlarına gelen çağrılar hakkında istihbarat toplamaya çalışıyor olacağız. Ancak bunun için standart Trace ve Monitoring özellikleri yerine kod yardımıyla ilerleyeceğiz. [Daha fazla]
TCP Bazlı WCF Service ve Silverlight İstemcileri 27 Şubat 2011 Burak-Selim-Senyurt Silverlight 4.0, WCF 4.0 Bugün yazımız içinde elimizde bir takım malzemelerimiz bulunmakta. Bir adet TCP bazlı olarak çalışan WCF(Windows Communication Foundation) servisi. Bu servisi kullanan Silverlight 4.0 tabanlı bir istemci. TCP bazlı servisimiz son derece zıpkın bir delikanlı aslında. Nitekim şirketin iç ağı üzerinden Binary tabanlı mesaj formatını kullandığı için ondan daha hızlısı neredeyse yok gibi. [Daha fazla]
Yıllar Sonra Yeniden Enum Sabitleri 20 Şubat 2011 Burak-Selim-Senyurt C# İşte bu yazımızda Enum sabitlerinin başımıza dert olabileceği bir kaç vakayı ele almaya çalışıyor olacağız. Öyleyse hızlı bir başlangıç yapalım ve aşağıdaki kod parçasını göz önüne alalım. [Daha fazla]
C# 4.0 Default Parameter Kullanımına Dikkat 13 Şubat 2011 Burak-Selim-Senyurt C# 4.0 İşte bu yazımızın konusu da; C# 4.0 ile birlikte gelen yeni dil özelliklerden birisi olan Default Parameters ile ilişkili tuzaklar. Öncelikli olarak konuya aşağıdaki hazır kod parçası ile başlayalım. [Daha fazla]
Temeller Kolay Unutulur (C# – Implicitly Name Hiding Sorunsalı) 06 Şubat 2011 Burak-Selim-Senyurt C# Özellikle C#, Java gibi nesne yönelimli(Object Oriented) programlama dillerinin temelleri son derece önemlidir ve bu temeller bir süre sonra profesyonel bir geliştirici için artık bisiklet sürmek gibi unutlmayacak unsurlara dönüşmelidir. İşte bu yazımızda kolayca unutulabilen bilinçsiz üye gizleme(Implicitly Name Hiding) ile alakalı bir vakayı ele almaya çalışıyor olacağız. [Daha fazla]
TPL Senkronizasyonu Sağlamak – 2 (Interlocked) 31 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Hatırlayacağınız üzere TPL Senkronizasyonu Sağlamak – 1 başlıklı yazımız ile Task Parallel Library(TPL) tarafında senkronizasyon kullanımını incelemeye başlamıştık. Aslında başımıza iş mi açtık bilemiyorum ama sonuç itibariyle kritik bir konu olduğunda sanıyorum ki hepimiz hem fikiriz. Önceki yazımızda değerlendirdiğimiz senaryoda, lock keyword kullanımı ile izole edilmiş bir veri alanının, farklı iş parçaları tarafından nasıl güvenli bir şekilde kullanılabileceğini analiz etmiştik. Üstelik bu keyword’ ün aslında arka planda Monitor tipini kullandığını da Intermediate Language(IL) kodunda görmüştük. Elbette iş parçalarının senkronizasyonu için kullanılabilecek farklı tipler de söz konusudur. Interlocked sınıfı gibi. [Daha fazla]
TPL Senkronizasyonu Sağlamak - 1 27 Ocak 2011 Burak-Selim-Senyurt Parallel Programming, TPL TPL ve Shared Data Isolation başlıklı yazımızda, n sayıda Task örneğinin ortaklaşa kullandıkları bir veri alanı üzerindeki işlemlerinin, ne gibi sonuçlara yol açabileceğini incelemiş ve bunun önün geçmek için basit bir kaç yolu ele almıştık. [Daha fazla]
TPL ve Shared Data Isolation 20 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task Parallel Library alt yapısını kullanarak geliştirdiğimiz paralel kodlarda önem arz eden konulardan birisi de, paylaşılan verilerin hesaplamalara katıldığı durumlardaki sonuç tutarlılıklarının nasıl sağlanacağıdır. Bunun bilinen bir kaç yolu vardır. Aslında bir tanesi ve en basiti kodu tamamen senkron olarak geliştirmektir. Yani paralel çalıştırmak gibi bir maceraya hiç girmemektir. Diğer bir yol ise Task örnekleri içerisinde ele alınan paylaşılmış verilerin izole edilerek kullanılmasıdır. [Daha fazla]
Paralel Programlamada İstisna Yönetimi 13 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task örneklerinin kullanıldığı senaryolarda, bloklar içerisinde yer alan işlevselliklerin doğurabileceği çalışma zamanı istisnalarını ele almak, son derece önemlidir. Nitekim paralel çalışmakta olan blokların beklenmedik bir şekilde sonlandırılması söz konusudur. İşte bu yazımızda Task örnekleri içerisinde oluşabilecek istisnaların nasıl ele alınabileceğini incemelye çalışıyor olacağız. [Daha fazla]
Task Wait,WaitAll,WaitAny 06 Ocak 2011 Burak-Selim-Senyurt Parallel Programming Task Süreçlerinde Bilinçli Olarak Duraksatma başlıklı bir önceki yazımızda CancellationToken.WaitHandle.WaitOne, Thread.Sleep ve Thread.SpinWait metodlarından yararlanarak bir Task çalışmasının bekletme işlemlerinin nasıl yapılabileceğini incelemeye çalışmıştık. [Daha fazla]
Task Süreçlerinde Bilinçli Olarak Duraksatma 31 Aralık 2010 Burak-Selim-Senyurt Parallel Programming Bu günkü konumuz Task nesne örneklerinin işlettikleri süreçleri bilinçli olarak nasıl bekletebileceğimiz ile ilgilidir. Pek çok sebepten dolayı Task örneklerinin çalıştırdıkları iş parçalarının belirli süreler boyunca veya süre bağımsız olarak bekletilmeleri istenebilir. Burada zaman bağımlı ya da koşul bağımlı olarak bekletmelerin/duraksatmaların yapılabilmesi söz konusudur. Genel olarak 3 farklı bekletme tekniğinden söz edebiliriz. [Daha fazla]
MVP Bayrağını Bırakıyorum 21 Aralık 2010 Burak-Selim-Senyurt Teknik Dışı Konular Merhaba Arkadaşlar, Bildiğiniz üzere son 5 yıldır Microsoft tarafından MVP olarak seçilmekteyim. Ancak özellikle bu yıl eskisi kadar üretken olamadığımı ve Microsoft tarafındaki çalışmalara istediğim zamanı ayıramadığımı fark ettim. Bu nedenle MVP Lead’ imiz sevgi... [Daha fazla]
Persisted Memory-Mapped Files 17 Aralık 2010 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 .Net Framework 4.0 ile birlikte gelen yeniliklerden birisi de Memory-Mapped File kullanımı. Herşeyden önce Memory-Mapped File kavramının ne anlama geldiğini irdeleyerek işe başlayalım. [Daha fazla]
WCF Öğreniyorum Ders 3–Bağlayıcılar 13 Aralık 2010 Burak-Selim-Senyurt WCF Öğreniyorum Hız kesmeden NedirTv?com liderliğinde sürdürdüğümüz WCF Öğreniyorum Webiner serimize devam ediyoruz. Bu webinerimizde ağırlık olarak Binding Type(Bağlayıcı Tip) kavramını anlamaya çalışacağız. Sunum üzerindeki tablolardan bazı Binding tiplerini ve aralarındaki farklılıkları tartışıyor olacağız. Örnek uygulamamızda ise bir servisi birden fazla Endpoint üzerinden host edeceğiz. Ayrıca istemci(Client) ile servis(Service Host) arasındaki mesajlaşmalara ait log dosyasına bir göz atıp farklılıkları en azından bir kaç Binding tipi için kavramaya çalışacağız. Her zamanki gibi webinerimize ait sunum dosyası, Solution’ ın son hali ve ekran kaydına aşağıdaki linklerden ulaşabilirsiniz. Bir sonraki webinerimizde görüşünceye dek hepinize mutlu günler dilerim. [Daha fazla]
WCF Öğreniyorum Ders 2–Veri Sözleşmeleri II 05 Aralık 2010 Burak-Selim-Senyurt WCF Öğreniyorum 3ncü dersimizde WCF Servisimizi IIS üzerinde host edebilecek şekilde bir WCF Service Application şablonunu kullandık. Bu sayede HTTP bazlı olarak yayınlama yapan bir WCF Servisinin Web üzerinden erişilebilirliğini değerlendirdik. Ayrıca Entity bazlı bir kütüphanenin veri içeriğini istemci tarafına sunarken Surrogate tipindeki veri sözleşmelerini nasıl değerlendirebileceğimize baktık. Söz konusu servise ait operasyonları ele alan istemci tarafında da, bu veri sözleşmelerini nasıl kullanabileceğimizi gördük. Her zaman ki gibi, örnek uygulama kodlarını, Powerpoint sunum dosyasını ve Nedirtv?com üzerine eklenmiş olan ekran kayıtlarını aşağıda linkerden tedarik edebilirsiniz. Tekrardan görüşünceye dek hepinize mutlu günler dilerim. [Daha fazla]
Tuple Nedir? Anlamak, Bilmek İstiyorum. 01 Aralık 2010 Burak-Selim-Senyurt .Net Framework 4.0, C# 4.0 Tuple’ ın Türkçe' deki kelime karşılığı Demet olarak ifade edilmektedir. Matematikte elementlerin sıralanmış bir liste tasarımı olarak tanımlanmaktadır. Diğer yandan İlişkisel Veritabanı Sistemlerinde(Relational Database Management Systems) tablo içerisindeki bir satır olarak düşünülür. Dolayısıyla burada da sütunların sıralı bir dizisinden oluşan liste şeklinde ifade edildiğinde, Matematiksel tanımını da işaret ettiği ifade edilebilir. [Daha fazla]