{CALL SUNUCU.dbo.[stored_procedure] (?,?)}
29 Kasım 2012 Perşembe
22 Kasım 2012 Perşembe
Single Responsibility Principle SRP
Bu tasarım prensibi, her işten tek sınıfın sorumlu olmasını benimsemektedir. Yani bir sınıfta değişiklik yapmak için iki nedeniniz varsa, bu sınıfı ikiye bölmeniz gerekir. Böylece her bir sınıf, ayrı bir sorumluluğu üstlenmiş olur. Eğer bir sınıfa birden fazla sorumluluk yüklersek, sınıftaki değişiklikler sırasında işleyişi bozabiliriz.
Dependency Injection Tasarım Deseni
Yazılım dünyasında ürünlerden daha çok prensiplere ve ilkelere önem veririm. Java veya C# dilinde yazmışım çokta dert değil benim için. Bir dilin yazım kurallarını ve ürün geliştirme araçlarını öğrenmek çokta uzun zaman almaz. Yazılım geliştirdiğimiz ortamların (IDE) pratiklerini anlamak çok önemlidir tabikide. Ama yazılım prensipleri ve ilkelerini benimsemek, o ilkelere sadık kalarak yazılım geliştirmek bana göre daha önemlidir.
15 Haziran 2012 Cuma
URLScan 3.0 ve SQL Injection saldırıları
URLScan Nedir?
URLScan, IIS'in işleyeceği HTTP isteklerini kontrol edip gerektiğinde engellemeye yarayan bir güvenlik aracıdır. IIS üzerinde bir "ISAPI Filter" olarak çalışır ve filtreleme işini bizim belirlediğimiz kriterlere göre yapar. Biz bu kriterleri "urlscan.ini" isimli dosyada tanımlarız. Bu blogda URLScan'in teknik detaylarından bahsetmeyeceğim. Ancak aşağıdaki linklerde çok detaylı bilgi bulabilirsiniz:
IIS 7 üzerinde .NET 4.0 Çalıştırma Sorunu
C:\Windows\Microsoft.NET\ Framework\v4.0.30319\aspnet_ regiis.exe
aspnet_regiis.exe -i
veya zaten yüklü ise
aspnet_regiis.exe -iru
şeklinde yaparsan mevcut'u onarır.
Kaynak : https://groups.google.com/forum/#!topic/altdotnetturkiye/XtneCHqWfEU
Hangi Program Hangi Portu Dinliyor?
Merhaba,
Genelde sistemcileri daha çok ilgilendiren bir konu ama soket programlama yaparken bizi çıldırtabilecek bir durum. XYZ Server ile iletişime geçmek istiyorsunuz diyelim. XYZ server’ın 139 portunu kullansın. Windows servislerinden start etmeye çalışıyoruz ama bu port başka bir program tarafından dinlendiğinden program başlatılamadı gibi bir hata alıyoruz. Şimdi ne yapacağız?
Genelde sistemcileri daha çok ilgilendiren bir konu ama soket programlama yaparken bizi çıldırtabilecek bir durum. XYZ Server ile iletişime geçmek istiyorsunuz diyelim. XYZ server’ın 139 portunu kullansın. Windows servislerinden start etmeye çalışıyoruz ama bu port başka bir program tarafından dinlendiğinden program başlatılamadı gibi bir hata alıyoruz. Şimdi ne yapacağız?
String Split Options
Tek karaktere göre ama birden fazla belirterek , yani “+” gördüğünde yada “-” gördüğünde yada “*” gördüğünde ayırma işlemini uygula şeklinde bir örnek yapacağız.
Yeni Bir IDE istermisiniz. Hemde web üzerinden çalışsın
Bulut hesaplama (Cloud Computing) ile yön değiştiren teknoloji sunumunun bize sunduğu güzel projelerden bir tanesi olan “CodeRun“, 2005 yılından bu yana web üzerinden Microsoft .Net projelerini test etme, geliştirme ve yayımlama (deployment) imkanını bizlere sağlıyor. Temelinde bulut teknolojisinin yer aldığı, “CodeRun” ile her yerden ASP.Net ve PHP uygulamaları geliştirebilirsiniz.
Sitede geliştirilen projelere ait kodların, ancak siz paylaşmak isterseniz paylaşılacağını belirtiyorlar. Zaten kim gizliliği olan projelerini burada test eder ki?
Küçük ve anlık ihtiyaçlar için bu ücretsiz uygulama elimizin altında bulunmasında fayda var. Daha önce kullanmayanlar http://www.coderun.com/ adresinden inceleyebilirler.
14 Haziran 2012 Perşembe
Windows 7 - Kullanıcı Klasörlerinin Yerlerini Değiştirmek
User klasörüne girilir, masaüstü vs ilgili nesnenin özelliklerine girip Konum başlığı tıklatılır ve istenilen yere taşıma işlemi yapılır.
ProMax SQL Installation - Collation Setting
From: Taner Candoken
[mailto:tcandoken@promaks.com.tr]
Sent: Friday, March 23, 2012 11:17 AM
To: Mehmet Caykara
Cc: prxdestek
Subject: RE: SQL Kurulumu
To: Mehmet Caykara
Cc: prxdestek
Subject: RE: SQL Kurulumu
Mehmet Bey merhaba,
Seçim doğrudur.
İyi çalışmalar,
Taner Çandöken
From: Mehmet Caykara
[mailto:mcaykara@c????bc.com]
Sent: Friday, March 23, 2012 10:42 AM
To: prxdestek
Subject: SQL Kurulumu
Sent: Friday, March 23, 2012 10:42 AM
To: prxdestek
Subject: SQL Kurulumu
İşaretli seçenek mi kullanılacak?
12 Haziran 2012 Salı
C# LINQ Extension(Genişletilmiş) Methods
Bir önce makalemizde LINQ mimarisine giriş yapmıştık. Bugün de Enumerable adlı static sınıf içerisindeki sık kullanılan LINQ metotlarını inceleyeceğiz. Dilerseniz metotları ayrı başlıklar halinde ele alalım. Giriş yapmadan önce birkaç hatırlatma yapmakta fayda var. LINQ metotları, IEnumerable<T> interface’ini implement eden tipler üzerinde çıkmaktadır. Ayrıca, LINQ sorgularından geriye, GetEnumerator metodu olan yani IEnumerable<T> tipini implement bir nesne döner. Bu dönen nesne, bir dizi veya bir koleksiyon gibi içerisinde sorgu sonucunda elde ettiğimiz elemanları taşıyan bir nesne değildir, sorgulanabilir bir nesnedir. Bu sorgulanabilir nesneler üzerinde iterasyon yaparak sonuç kümesini elde ederiz.
C# Lambda Operatörü
Daha önceki yazılarımda Anonim metot yapısından bahsetmiştim. Kısaca hatırlayalım; bir metot bizden parametre olarak bir delege istiyorsa, aslında bir metot göndermemizi ister. Zaten delegeler metot adresleri taşıdığından dolayı, parametre olarak bir delege göndermek, o imzaya uygun bir metot göndermek ile aynı anlamdadır.
C# 3.0 ile Gelen Bazı Yenilikler ve LINQ
.Net platformu ile yapılan uygulamaları incelediğimiz takdirde, tamamına yakınının veri odaklı olduğunu söylemek mümkündür. Genellikle uygulamalarda var olan veri kaynaklarından , işimize yarayanları çekip işleyerek kullanıcıya anlamlı hale getirmeye çalışırız. Bu noktada SQL tarzı sorgular aklımıza gelmektedir.
C# Anonim Metot
C# 2.0 ile gelen bir yeniliktir. Bir delege nesnesi oluşturulması esnasında, işaret edeceği metodunda aynı anda tanımlanmasıdır. C#’da metot içinde metot tanımlanmasının tek istisnai durumudur. Anonim metodun en önemli özelliklerinden birisi de, içerisine yazılmış olduğu metodun local değişkenlerini kullanabilmesidir.
C# yield Operatörü
Bir önceki makalemizde foreach iterasyonu sırasında arka planda ne gibi işlemlerin yapıldığını ayrıntısı ile incelemiştik. foreach iterasyonunun yapılmasına olanak sağlayan interface IEnumerable'dır. Bu interface, uygulandığı sınıfa GetEnumerator adlı bir metot kazandırır ve bu metot geriye IEnumerator interface’ini implement eden bir sınıf döndürür. İşte yield operatörü burada devreye girmektedir ve bir önceki örnekte yazdığımız Numerator sınıfını yazmaktan bizi kurtarır. Örneğimiz bir önceki makalemiz ile aynı olacak. Sadece son adımdaki Numerator sınıfını yazmayacağız.
C# Foreach İterasyonu
İterasyon, belli bir kurala dayalı işlem yapmaktır. Bu yazımızda foreach iterasyonunun hangi kurallara göre yapıldığını ve arka planda ne tarz işlemlerin gerçekleştiğini incelemeye çalışacağız. Hepimizin bildiği gibi foreach döngüsü, bir koleksiyon içerisinde ilk elemandan başlanarak son elemana kadar sıra ile ilerleyen bir yapıya sahiptir. İlk olarak basit bir int dizisi oluşturup içerisinde foreach ile gezerek, dizi içerisindeki sayıların karesini ekrana yazdıralım.
9 Haziran 2012 Cumartesi
RSA Anahtar Dağıtımı Ve RSA İle Dijital İmza Oluşturmak
İlk defa 1977 yılında Ron Rivest, Adi Shamir ve Leonard Adleman tarafından
oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle anılmaktadır.
Bu yazımızda RSA'da yer alan anahtar dağıtımı algoritması ve dijital imza
oluşturmayı inceleyeceğiz.
oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle anılmaktadır.
Bu yazımızda RSA'da yer alan anahtar dağıtımı algoritması ve dijital imza
oluşturmayı inceleyeceğiz.
RSA Şifreleme Algoritması
İlk defa 1977 yılında Ron Rivest, Adi Shamir ve Leonard Adleman tarafından
oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle anılmaktadır.
Bu yazımızda RSA algoritmasını ve bu algoritmanın Microsoft .NET teknolojileri ile
nasıl gerçeklenebileceğini inceleyeceğiz.
Anahtar Sözcükler: Şifreleme Algoritması, RSA, Microsoft .NET, Kriptoloji
RSA algoritması, Amerika’ da 1983 yılında MIT’ten patent almıştır. Bu patent 21 Eylül 2000 de
son bulmuştur. Ancak patenti daha önce bir uygulamaya ait olduğu için bir başka ülkede patent
alınamaz.
oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle anılmaktadır.
Bu yazımızda RSA algoritmasını ve bu algoritmanın Microsoft .NET teknolojileri ile
nasıl gerçeklenebileceğini inceleyeceğiz.
Anahtar Sözcükler: Şifreleme Algoritması, RSA, Microsoft .NET, Kriptoloji
RSA algoritması, Amerika’ da 1983 yılında MIT’ten patent almıştır. Bu patent 21 Eylül 2000 de
son bulmuştur. Ancak patenti daha önce bir uygulamaya ait olduğu için bir başka ülkede patent
alınamaz.
7 Haziran 2012 Perşembe
SQL Server Change Data Capture ile Değişiklik Yapılan Kayıtların Loglanması
İşletmelerde en büyük sorunlardan biri geçmişe yönelik silinen ya da değiştirilen kayıtların bilgilerinin tutulmasıdır. SQL 2008 versiyonuna kadar bu işlemi yapabilmek için ya kullanılan paket programda bir değişiklik yaptırmak gerekiyordu ya da her tablonun altına trigger yazılması gerekiyordu. Bu yazılan triggerlar da değişen kayıtları algılayarak sizin istediğiniz formatta herhangi bir log tablosuna yazılmasını amaçlamaktadır.
5 Haziran 2012 Salı
Visual Studio 2010 Türkçe Dil Paketi
Merhabalar,
Aşağıda Visual Studio 2010 için Türkçe dil paketini indirebileceğiniz bağlantıyı bulabilirsiniz.
Visual Studio 2010 dil paketleri, kullanıcının İngilizce Visual Studio Professional kullanıcı arabirimini yerelleştirilmiş dillere değiştirmesini sağlayan ücretsiz eklentilerdir.Dil paketleri yazılımın kullanıcı arabirimi (UI) ve hata iletileri için kısmi yerelleştirme sağlar. Dil paketleri yüklendikten sonra, kullanıcı tarafından kullanıcı arabirimi için İngilizce ile yerelleştirilmiş dil arasında seçim yapılabilir.
Visual Studio 2012 RC & .NET Framework 4.5 RC Sizlerle
Visual Studio 2012 RC sürümüne ait kurulum ve ISO dosyalarını aşağıdaki linkten indirebilirsiniz.
Daha detaylı bilgiler için yine aşağıda yer alan iki sayfayı ziyaret edebilirsiniz.
Visual Studio 2012 RC Menuleri Küçültmek
Visual Studio 2012 RC’nin çıkması ile birlikte arayüzde sizlere daha önceden ilettiğim değişiklikleri görebilme/inceleyebilme fırsatına sahip olduk. Pek çoklarının rahasız olduğu ALL CAPS tarzında menüler, toolboxlar azaltılarak sadece birinci seviye ana menü girdilerinde ALL CAPS bırakılmıştı; fakat görüyorum ki bu durum dahi pek çok yazılım geliştirici için rahatsız olarak görülmekte. Eğer siz de bu şekilde düşünen yazılımcılardan birisi iseniz size güzel bir haberim var; bunu değiştirmeniz mümkün…
Bunun için tek yapmanı gereken kayıt kütüğünde aşağıda verdiğim adres REG_DWORD türünden bir girdi oluşturarak 1 değerini vermek;
31 Mayıs 2012 Perşembe
30 Mayıs 2012 Çarşamba
Visual Studio 2010 masaüstü resimleri
Hayatımızın bir parçası haline gelen Visual Studio derleyici arayüz programının yazılımcılar için üretilmiş masaüstü arka plan Visual Studio 2010 temalı resimlerini ilgili web sitesinden indirebilirsiniz; vs2010wallpapers.com
29 Mayıs 2012 Salı
Entity Framework–ToList().Count vs Any() vs Count()
Merhaba Arkadaşlar,
Bu yazımıza basit bir soru ile başlıyoruz :)
var email = from inc in entities.be_Settings where inc.SettingName == "email" select inc;
Yukarıdaki Linq-to-Entities sorgusunda kullandığımız kritere ait olan kaydın tabloda bulunup bulunmadığını nasıl anlarız ve en sizin önerdiğiniz en doğru kullanım hangisidir ?
A) email.ToList().Count>0
B)email.Any()
C) email.Count()>0
B)email.Any()
C) email.Count()>0
2 Nisan 2012 Pazartesi
31 Mart 2012 Cumartesi
DynamicObject in C# 4.0
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace ConsoleApplication1 {
class DynamicTest : DynamicObject {
public override bool TryInvokeMember(
InvokeMemberBinder binder, object[] args,
out object result) {
var paramList = new Dictionary<string, object>();
int i = 0;
foreach ( object obj in args ) {
string name = binder.CallInfo.ArgumentNames.Count > i ?
binder.CallInfo.ArgumentNames[i] : ("param" + i);
paramList.Add(name, obj);
i++;
}
WriteCall(binder.Name, paramList);
result = null;
return true;
}
public void WriteCall(string name, Dictionary<string, object> paramList) {
Console.WriteLine("Executing: {0}", name);
foreach ( string key in paramList.Keys ) {
Console.WriteLine("\t{0}: {1}", key, paramList[key]);
}
}
}
class Program {
static void Main(string[] args) {
dynamic cl = new DynamicTest();
cl.MyMethodCall(count:12, value: "this is a string");
}
}
}
Kaynak : http://winterdom.com/2009/05/dynamicobject-in-c-40
23 Mart 2012 Cuma
Efsane CEO’nun arkasında bıraktığı 10 liderlik sırrı
Efsane CEO’nun arkasında bıraktığı 10 liderlik sırrı
Apple’ı devrimci teknolojilerle dünyanın en büyük şirketi yapan efsane CEO Jobs’un liderlik sırlarını, kendi ağzından biyografisini yazan Walter Isaacson 10 maddede derledi
20 Mart 2012 Salı
C# (CSharp) ile Kayıt Defteri (Registry) İşlemleri
C# (csharp) da kayıt defterinden kayıt okuma (read value from Registry), kayıt defterindeki kaydı güncelleme (change value to Registry), kayıt defterine yeni kayıt yazma (write value to Registry), kayıt defterindeki kaydı silme (delete value from Registry), kayıt defterine yeni anahtar oluşturma (create key to Registry) ve kayıt defterindeki anahtarı silme (delete key from Registry) işlemlerinin nasıl gerçekleştirildiğini örneklerle sizlere aktarmaya çalışacağım.
12 Mart 2012 Pazartesi
Web Service'lerinde Güvenlik 1
Giriş
Şirketiniz bayilik sistemi ile çalışıyor ve siz Türkiye üzerinde bulunan bayi ağınızın merkezdeki stok bilgilerini görüntüleyebilmesi ve siparişlerini geçebilmelerini sağlayan Web Service uygulaması geliştirdiniz. Ancak Web Service üzerinden dağıttığınız bu bilgiler gizli ve adresi bilen – veya bulan – herkesin bu Web Servisi kullanmasını istemiyorsunuz. O halde Web Service ini kullanan istemcinin kendini tanıtması gerekiyor. Yazımızın konusu Web Service’lerinde güvenliği sağlamak.
WSE 3.0 Security
Web servisinize ulaşan bir mesajın acaba bir saldırımı yoksa gerçekten bir istemci mesajı mı olduğunu nasıl kontrol edersiniz? Peki, mesajın güvenliğini sağladığınızı varsayalım acaba istemci kullanıcının yetkisi dışında bir veriye talepte bulunmadığından emin olabilir misiniz?
XML Web Servis ve Soap Header Üzerinden Authorization
Bugun bir xml web servis üzerinden Soap header ı kullanarak güvenliği sağlayabileceğimiz ( kullanıcı adı ve şifre isteyerek ) bir uygulama yapmak istiyorum.Öncelikle bir web servis uygulaması vede uygulamamı test edeceğim console uygulamasını solution a ekliyorum.
Asp.Net Web Servislerinde Güvenlik
Web servisleri parametrik yapıları, ajax teknolojisi ile iç içe olması ve model tiplerimizi javascript’e aktarabilmesi ile web projelerinin vazgeçilmez unsurlarıdır.
Bir önceki yazımızda bahsettiğimiz Pagemethod’ların birçok dezavantajına karşılık web servisleri her zaman paramatrik yapısı ve birçok özelliği ile tercih edilebilir durumdadır. Fakat bu noktada güvenlik gibi bir unsura değinmeden edemeyeceğiz çünkü yazımızın konusu 

Web servislerinde güvenliği sağlamak için aşağıdaki güvenlik önlemlerini geliştireceğimiz sisteme göre tercih edebiliriz.
HttpWebRequest Sınıfıyla Web Servislerini Çağırmak
Web servislerini projelerimize eklerken servislerin adreslerini Visual Studionun web servisi ile ilgili tool’una yazarak ilgili web servisini referans olarak projelerimize ekleyebiliyoruz. Fakat proje ilerleyişinde bazen durumlar istediğimiz doğrultuda gelişmeyebiliyor. Örneğin web servisinin bulunduğu sunucuya erişim sadece projenin production sunucusundan yapılıyor. Bu durumda Visual Studio web servis toolunu kullanarak bu servisi projemize dahil edemiyoruz. Fakat bu servislere SOAP paketleri halinde, çalışma anında WebRequest sınıfını kullanarak projemizden ulaşabiliriz.
ASP.NET AJAX İle WebMethod Kullanımı
Herkese merhaba. Crema’da yazılım geliştirme uzmanı olarak çalışıyorum. Bu blogda ASP.Net ve Web teknolojileri ile ilgili hile ve ipuçlarını sizinle paylaşacağım. Bu ipuçlarını sosyal hayatınızda denemeyin veya uygulamayın @D
SQL Server 2005+ Üzerinde CLR Assembly Entegrasyonu
Veritabanı bağımlı sistemler geliştirirken bazen performans için bazen de güvenlik için keşke şu metodu Sql Server üzerinden çağırabilseydim dediğimiz zamanlar olur. Örneğin; bir masaüstü uygulaması geliştirilirken genel geçer yöntem, uygulamaların istemci, veri tabanının da bir sunucu şeklinde tasarlanmasıdır. Böyle bir durumda ayrıca bir sunucu uygulaması yazma maliyetinden kurtulmuş olunur, veri tabanı sunucusunun da istemci sunucusu olarak kullanılması sağlanmış olur. Ancak bu sunucunun kabiliyetleri veri tabanı sunucusunun kabiliyetleri ile sınırlı olacaktır.
CSS Ve JS Içinden Kaynak Dosyaları Dinamik Olarak Çağırmak
Web projemizi geliştirirken local sunucumuzda “http://musterisitesi/” olarak tanımlamış olalım ve müşteri yayın ortamı örneğin “http://www.musterisitesi.com/site2010/v2/” olsun. Sayfalarımızda ve özellikle CSS dosyalarında birçok kez kaynak dosya yolu belirtmişizdir.
10 Mart 2012 Cumartesi
Adım Adım WCF-5 (IIS TCP Hosting)
Kısa bir aradan sonra yeni makaleyle WCF dünyasını incelemeye devam ediyoruz. Bu makalemizde bir WCF servisini TCP protokolü üzerinden yayınlayacağız,
Adım Adım WCF-4 (örnek)
Herkese merhabalar, “Adım Adım WCF” makaleler dizimize bıraktığımız yerden devam ediyoruz. Şuana kadar yaptıklarımızı toparlamak gerekirse;
-End Point tanımlama
-Servis yazma kuralları
-Servisi Host etme şekillleri
şeklinde ilerledik. Ve WCF in neden kullanmamız gerektiğini inceledik. Bu makalede ise artık gerçek bir WCF örneğini hep beraber inceleyeceğiz.
Adım Adım WCF-3(Hosting)
Herkese tekrar merhabalar;
“Adım Adım WCF” makaleler serimize tüm hızıyla devam ediyoruz. Bu makalemize WCF in temel taşlarından olan “Hosting” konusuna değineceğiz.
Bir Web Servis geliştirildiğinde karşılaşılan zorluklardan biride, servisimizi bir web sunucusu içerisinde yalnızca http ya da wshttp protokolleriyle kullanabiliyor olma zorunluluğuydu. Fakat WCF sayesinde artık böyle bir zorunluluk yok. Servislerimizi istediğimiz protokollerle, istediğimiz şekilde, sunabilme imkanı artık kolayca kullanılabilir durumda.
Aslına bakarsanız, WCF in anlamı ve neden WCF öğrenmeliyim sorusunun cevabı da burada gizli. İstenilen protokolle, aynı servisimizi istediğimiz encoding kullanarak yayınlayabilme! İşin özü budur!
Bir Web Servis geliştirildiğinde karşılaşılan zorluklardan biride, servisimizi bir web sunucusu içerisinde yalnızca http ya da wshttp protokolleriyle kullanabiliyor olma zorunluluğuydu. Fakat WCF sayesinde artık böyle bir zorunluluk yok. Servislerimizi istediğimiz protokollerle, istediğimiz şekilde, sunabilme imkanı artık kolayca kullanılabilir durumda.
Aslına bakarsanız, WCF in anlamı ve neden WCF öğrenmeliyim sorusunun cevabı da burada gizli. İstenilen protokolle, aynı servisimizi istediğimiz encoding kullanarak yayınlayabilme! İşin özü budur!
Adım Adım WCF-2 (Contract)
Herkese Merhaba;
“Adım Adım WCF” makaleler dizimizin 2. makalesi ile WCF i incelemeye devam ediyoruz. İlk makalemizde WCF in olmazsa olmazı “ABC” üçlemesinden Adress ve Binding i açıklamıştık. Bu makalemizde ise Contract üzerine eğileceğiz.
Contract : Servisin ne iş yaptığını hangi fonksiyonelikleri olduğunu dış ortama anlatan WCF özelliğidir. Contract çeşitleri genel anlamda 4 çeşittir. Bunlar :
- Service Contract: Servis ile yarattığımız operasyonları tanımlaya yarar.
- Data Contract : Verileri tanımlamamıza yarar.
- Fault Contract: Servis tarafından hata tanımlamaya yarar.
- Message Contract: Servisler ile mesajlar arasında iletişim kurmaya yarar.
Adım Adım WCF-1
Herkese merhabalar;
Kaynak: http://simsekonur.blogspot.com/2009/03/adm-adm-wcf-1.html
“Adım Adım WCF” makaleler dizimizde Microsoft un yeni servis yönelimli mimarisi wcf i sıfırdan incelemeye başlayıp, adım adım uzman yaklaşımlara doğru ilerleyeceğiz. Öncelikle “neyi inceliyoruz”, “neden wcf” sorularına ışık tutarak başlayalım.
WCF Nedir?
Microsoft un şimdiye kadarki dağıtık mimari uygulamalarını incelediğimizde karşımız şöyle kabarık bir liste çıkıyor:
- ASP.NET Web Services (ASMX)
- Web Services Enhancements (WSE)
- Messaging (MSMQ)
- .NET Enterprise Services (ES)
- .NET Remoting
tüm bu uygulamar ayrı ayrı, bir bütünlük olmaksızın host edilip, herbiri için farklı işlemler, farklı yaklaşımlar gerekiyordu. WCF tüm bu yapıların biraraya getirilmesini ve optimum çözüm sunarak ,standartları olan, güvevli SOA uygulamalarına imkan kılıyor.
WCF temelinde servis üç adımda geliştirilir.
1. Servis yaratılır.(Creating)
2. Servise bir adres bağlanır ve host edilir. (Hosting)
3. Client tarafından eklenerek kullanılır.(Consuming)
2. Servise bir adres bağlanır ve host edilir. (Hosting)
3. Client tarafından eklenerek kullanılır.(Consuming)
Yukarıdaki üç adımı uygulayarak örnek bir servis geliştirmeye ileriki makalelerde başlayacağız fakat öncesinde WCF i incelemeye devam edelim.
WCF ve ABC??
.Bir servis en az bir tane endpoint e sahiptir. Endpointler servisin iletişimini sağlayan ve iletişim kurallarını belirleyen yapılardır. Client tarafında bir tane, sunucu tarafında ise n tane olabilir. Bunun anlamı n tane farklı iletişim yolu. Endpointlerin niteliklerini belirleyende işte başlıkta belirttiğimiz ABC. Peki ama nedir bu ABC ne işe yarar?
Address
Her web uygulamasının bir adresi olduğu gibi WCF servisimizinde bir adresi olmalı. WCF aşağıdaki protokolleri kullanarak servis çalıştırmaya imkan verir.:
Her web uygulamasının bir adresi olduğu gibi WCF servisimizinde bir adresi olmalı. WCF aşağıdaki protokolleri kullanarak servis çalıştırmaya imkan verir.:
- HTTP (http:// yada https:// )
- TCP (net.tcp :// )
- Peer 2 Peer (net.p2p://)
- IPC (Inter-Process Communication over named pipes)(net.pipe://)
- MSMQ (net.msmq://)
Bindings
Binding servisin erişebilirliği ile ilgilenir. Servise dış dünyanın hangi kurallar ile bağlanabileceğini belirler.
Bir binding tipi:
1.Protocol : İstenilen herhangi protokol
2.Encoder : text/xml için HTTP binding, binary xml için TCP binding olabilir
3.Transport: HTTP, TCP, NamedPipes ya da MSMQ.
ile kurallar belirler.
Contract
Contract, client ın servis ile yapabileceği işlemleri ifade eder.
WCF dünyasına WCF in genel yapısını ve temel kurallarını inceleyerek başladık. Bir sonraki makalemizde, Contract konusunu biraz daha detaylandırıp, bir contract örneği ile wcf kodlamaya da başlamış olacağız. Bir sonraki makalede görüşmek üzere.
Programsal Olarak WCF Hizmeti Oluşturma
Bir önceki makalemle birlikte Windows Communication Foundation’ın (WCF) detaylarını sizlerle paylaşacağım seriye başlamış ve giriş düzeyindeki bilgiler ile basit bir hizmet oluşturarak uygulamamız üzerinden bu hizmeti istemcilerimize sunmuştuk. Üstelik hizmetimiz oluştururken de minimum düzeyde kod yazmış ve yapılandırma işlerimizi tamamen app.config dosyası üzerinden gerçekleştirmiştik. Pek çok WCF senaryosunda bu şekilde statik olarak yapılandırılmış hizmetler biz yazılım geliştiricilerin işini görse de, benim gibi tüm sürece hakim olmak isteyen bir insansanız ya da dinamik olarak WCF hizmetleri sunmanızı gerektiren iş mantıklarınız bulunuyorsa şüphesiz ki elinizi biraz koda bulaştırmanız gerekecektir.
WCF’e Giriş
.Net framework 3.0 ile hayatımızın bir parçası olan Windows Communication Foundation (WCF) hakkında yazmayı düşündüğün makalelerden bu ilkinde öncelikle birlikte WCF hizmetlerine ısınmamızı hedefliyorum, hedefim sizleri fazla da yormadan kolayca nasıl bir WCF hizmeti oluşturabileceğinizi paylaşmak.
7 Mart 2012 Çarşamba
10 başlıkta kentsel dönüşüm
Yasa son dönemeçte, yakında yıkım
başlayacak. Ancak yasanın tam anlaşılmaması vatandaşı tedirgin ediyor.
Ülke
genelinde 10 milyon konutun yıkılmasını kolaylaştıracak olan yasa taslağı
tamamlanıp Meclis İnceleme Komisyonu'na ulaştırıldı. Komisyon incelemelerini
tamamladıktan sonra tasarıyı milletvekillerinin onayını almak için meclise
gönderecek. Tasarının meclisin onayını almasından sonra ülke genelinde önceden
tespitleri yapılmış risk arz eden binaların yıkımı ve güçlendirilmesi için
start verilecek.
Kaydol:
Kayıtlar (Atom)