Web servis davranışının nasıl olacağını tanımlamamıza yarar. Reliability, security,transaction, propagation,interoperability seçeneklerinin gruplanmasından oluşur.
Basic Binding: BasicHttpBinding sınıfını kullanır.Asmx web servisi gibi davranır. Eğer sistemimizi farklı sistemler çağıracaksa veya eski webservisimizi hiç bir özelliğini değiştirmeden WCF servisine çevireceksek binding olarak basic binding kullanırız.
TCP Binding: NetTCPBinding sınıfını kullanır.WCF Servisinin TCP üzerinden haberleşmesini sağlar. Reliability, transaction ve security kavramlarını destekler. WCF-WCF haberleşmesinde kullanılır.
IPCBinding: NetNamedBinding sınıfını kullanır. Sadece bulunduğu makinadaki çağrılara cevap verir.
Web Service(WS) Binding: WSHttpBinding sınıfını kullanır. HTTP-HTTPS protokollerini destekler. WS-* protokollerini kullanacaksak bu binding kullanılmalıdır.WCF'in kullandığı varsayılan bindingtir.
Dual WS Binding: WSDualHttpBinding sınıfını kullanır. Web servisin iki yönlü çalıştığı durumlarda kullanılır.
MSMQ Binding: NetMsmqBinding sınıfını kullanır. Servisin haberleşmesi için MS Messaging Queue kullanılır.
Peer network Binding: NetPeerBinding sınıfını kullanılır. Web servisin haberleşmesi P2P protokolü üzerinden sağlanır.
Federated WS Binding: WSFederationHttpBinding sınıfını kullanır. Federated Security için kullanılır.
Federated WS 2007 Binding: WS2007FederationHttpBinding sınıfını kullanır. Federated WS Binding'in güncellenmiş halidir.
Monday, 2 August 2010
Sunday, 1 August 2010
5.OperationContract
[OperationContract]'ın sınıflarımızın metodlarını servis olarak kullanmamıza yaradığını söylemiştik.
[OperationContract]'lar sadece metodlara uygulanırlar, attribute'lara (property, event, index) uygulanmaz.
[OperationContract] olarak tanımlanmış bir metod referans tip alamaz. Sadece primitive tip olarak geçen string,int,double vs. ve DataContract olarak tanımlanmış nesne tiplerini alabilir.
[OperationContract] kullanırken parametreli constructor kullanmamalıyız.
[OperationContract]'lar sadece metodlara uygulanırlar, attribute'lara (property, event, index) uygulanmaz.
[OperationContract] olarak tanımlanmış bir metod referans tip alamaz. Sadece primitive tip olarak geçen string,int,double vs. ve DataContract olarak tanımlanmış nesne tiplerini alabilir.
[OperationContract] kullanırken parametreli constructor kullanmamalıyız.
4.Service Contract
ServiceContract özelliği kullanılarak bir sınıfın veya interface'in servis olarak kullanılacağı belirtilir. Bu servis bir web servis, bir MSMQ servisi, n-tier uygulamalardaki herhangi bir servis katmanı olabilir.
Service Contract'da servisin kuracağı mesajlaşma şekli (Message Exchange Pattern) tanımlanır. Request/Reply,One-Way,Duplex olarak tanımlama yapılabilir.
Örnek olarak bir öğrenci sınıfımız olsun. Bu sınıfta Ad ve Soyad propertyleri tanımlayalım. Öğrenci numarasına göre Ad ve Soyad'ı birlikte döndüren bir fonksiyonumuz olsun:
Bu sınıfı servis olarak kullanabilmek için bir interface tanımlarız. Interface'i Servis olarak kullanacağımızı belirtmek için interface'in başına ServiceContract attribute'unu ekleriz. Peki, bu sınıfta hangi metodları kullanacağımızı serviste nasıl belirteceğiz? O metodların başına OperationContract attribute'unu koyarak:
Artık Sınıfımızın servis olarak kullanılabilmesi için tek yapmamız gereken bu interface'i implement etmek.
Service Contract'da servisin kuracağı mesajlaşma şekli (Message Exchange Pattern) tanımlanır. Request/Reply,One-Way,Duplex olarak tanımlama yapılabilir.
Örnek olarak bir öğrenci sınıfımız olsun. Bu sınıfta Ad ve Soyad propertyleri tanımlayalım. Öğrenci numarasına göre Ad ve Soyad'ı birlikte döndüren bir fonksiyonumuz olsun:
class Ogrenci
{
int no;
string Ad;
string Soyad;
public string OgrenciGetir(int no)
{
return Ad+" "+Soyad;
}
}
Bu sınıfı servis olarak kullanabilmek için bir interface tanımlarız. Interface'i Servis olarak kullanacağımızı belirtmek için interface'in başına ServiceContract attribute'unu ekleriz. Peki, bu sınıfta hangi metodları kullanacağımızı serviste nasıl belirteceğiz? O metodların başına OperationContract attribute'unu koyarak:
[ServiceContract]
interface IOgrenci
{
[OperationContract]
public string OgrenciGetir(int no)
}
Artık Sınıfımızın servis olarak kullanılabilmesi için tek yapmamız gereken bu interface'i implement etmek.
class Ogrenci:IOgrenci
{
int no;
string Ad;
string Soyad;
public string OgrenciGetir(int no)
{
return Ad+" "+Soyad;
}
}
Subscribe to:
Posts (Atom)