Giriş
Interface sınıfının üstüne ServiceContract, metodların üstüne OperationContract yazılır. Bu sınıf tam olarak şu namespace içinde.
Eğer metod sonuç dönüyorsa, sonuç nesnesinin XmlSerializable olması gerekir.
Service isimlerinin büyük I harfi ile başlaması iyi olur.
Örnek
Şöyle yaparız.
Parametre alan metodlar için şöyle yaparız.
Şöyle yaparız.
Gerçekleştirim
Şöyle yaparız.
1. "WCF Service Library" proje tipi ile servisleri oluşturmak kolay. Hem Interface + Service Gerçekleştirimi + App.config üçlüsünü oluşturur.
2. "Add New Item > WCF Service" ile Interface + Service Gerçekleştirimini oluşturururz.
Callback Attribute
Şöyle yaparız.
Şöyle yaparız.
Diğer ServiceContractAttribute özellikleri şöyle tanımlanabilir.
Interface sınıfının üstüne ServiceContract, metodların üstüne OperationContract yazılır. Bu sınıf tam olarak şu namespace içinde.
System.ServiceModel.ServiceContract
Service ArayüzüEğer metod sonuç dönüyorsa, sonuç nesnesinin XmlSerializable olması gerekir.
Service isimlerinin büyük I harfi ile başlaması iyi olur.
Örnek
Şöyle yaparız.
[ServiceContract]
public interface IService
{
[OperationContract]
int DoWork();
}
ÖrnekParametre alan metodlar için şöyle yaparız.
[ServiceContract]
public interface ICalculator
{
[OperationContract]
uint Divide(uint numerator, uint denominator);
}
ÖrnekŞöyle yaparız.
[ServiceContract]
public interface ICalculator
{
[OperationContract]
Task<uint> DivideAsync(uint numerator, uint denominator);
}
Gerçekleştirim
Şöyle yaparız.
public class MyService : IService
{
public void DoWork()
{
}
}
Aslına arayüz ve gerçekleştirimi birleştirmek mümkün ancak bu kötü bir kullanım yöntemi. Şöyle yapmamalıyız.[ServiceContract]
public class MyService
{
[OperationContract]
void DoWork()
{
}
}
Service Nasıl Oluşturulur1. "WCF Service Library" proje tipi ile servisleri oluşturmak kolay. Hem Interface + Service Gerçekleştirimi + App.config üçlüsünü oluşturur.
2. "Add New Item > WCF Service" ile Interface + Service Gerçekleştirimini oluşturururz.
Callback Attribute
Şöyle yaparız.
[ServiceContract(CallbackContract = typeof(ICallbackService))]
public interface IMyService
{
[OperationContract]
void Hello();
}
[ServiceContract]
public interface ICallbackService
{
[OperationContract]
void CallClient();
}
Namespace AttributeŞöyle yaparız.
[ServiceContract(Namespace="http://someservicecontract.org")]
public interface IService
{
[OperationContract]
void DoSomething(Department dept);
}
Üretilen XML şuna benzer. DoSomething metodu ServiceContract ile tanımlanan isim alanı içindedir.<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="..." xmlns:xsi="..." xmlns:xsd="...">
<SOAP-ENV:Body>
<DoSomething xmlns="http://someservicecontract.org/">
...
</DoSomething>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Diğer Attribute'lerDiğer ServiceContractAttribute özellikleri şöyle tanımlanabilir.
[ServiceContract(Namespace = "urn:x.ServiceContracts",
Name = "xService", SessionMode = System.ServiceModel.SessionMode.Allowed,
ProtectionLevel = ProtectionLevel.None)]
public partial interface IService
{...}
Hiç yorum yok:
Yorum Gönder