Giriş
ServiceHost sınıfı IIS yoksa kullanılan bir sınıftır. Yani WCF sunucu tarafında kullanılır. ServiceHost kendi thread'ini kullanır. Dolayısıyla Open() metodu hemen döner.
Constructor
Şöyle yaparız.
Şöyle yaparız.
NetNamedPipe
Şöyle yaparız.
Eğer constructor içinde base uri verdiysek şöyle yaparız.
XML ile şöyle yaparız.
Close metodu
Şöyle yaparız.
wsdl dosyasının sunulabilmesini sağlar. Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
ServiceHost sınıfı IIS yoksa kullanılan bir sınıftır. Yani WCF sunucu tarafında kullanılır. ServiceHost kendi thread'ini kullanır. Dolayısıyla Open() metodu hemen döner.
Constructor
Şöyle yaparız.
var svh = new ServiceHost(typeof(MyService));
Constructor - Base UriŞöyle yaparız.
Uri address1 = new Uri("http://localhost/WFC_Server/");
Uri address2 = new Uri("net.pipe://localhost/WFC_Server/");
ServiceHost svh = new ServiceHost(typeof(MyService), address1,address2);
AddServiceEndPoint metoduNetNamedPipe
Şöyle yaparız.
svh.AddServiceEndpoint(typeof(IMyService),
new NetNamedPipeBinding(), new Uri(hostUrl));
Url şöyle olabilir."net.pipe://localhost/WFC_Server/MyService.svc"
Eğer constructor içinde base uri verdiysek şöyle olabilir."MyService.svc"
MetaDataEğer constructor içinde base uri verdiysek şöyle yaparız.
svh.AddServiceEndpoint(
ServiceMetadataBehavior.MexContractName,
MetadataExchangeBindings.CreateMexHttpBinding(),
"mex"
);
Aynı şeyi XML ile şöyle yaparız. MetaData Endpoint tanımlanır.<services>
<service name="BillingService.BillingService">
<endpoint address="mex" binding="mexHttpBinding" contract="..." />
...
</service>
MetaData Davranışı tanımlanır.<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
...
</behavior>
</serviceBehaviors>
includeExceptionDetailInFaultsXML ile şöyle yaparız.
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
Close metodu
Şöyle yaparız.
svh.Close();
Description Alanıwsdl dosyasının sunulabilmesini sağlar. Şöyle yaparız.
//Create Metadata exchange for the service
ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior();
mexBehavior.HttpGetEnabled = true;
svh.Description.Behaviors.Add(mexBehavior);
Şöyle yaparız.ServiceMetadataBehavior mexBehavior = svh.Description.Behaviors
.Find<ServiceMetadataBehavior>();
Open metoduŞöyle yaparız.
svh.Open();
UnknownMessageReceived Event'iŞöyle yaparız.
svh.UnknownMessageReceived += OnUnknownMessageReceived;
Event handler şöyledir.void OnUnknownMessageReceived(object sender, UnknownMessageReceivedEventArgs e)
{
LogFile.Instance().Append(e.Message.ToString());
}
Hiç yorum yok:
Yorum Gönder