|
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Channels;
using ReflectionStudio.Spy.Distant;
using ReflectionStudio.Spy.Internal;
namespace WcfServer
{
class WcfHostService
{
private ServiceHost _Host = null;
private Uri ServiceUri( Transport mode )
{
string format;
if (mode == Transport.Http)
format = "http://{0}:{1}";
else
format = "net.tcp://{0}:{1}";
return new Uri
(
string.Format(format, SettingsManager.Instance.Settings.Machine, SettingsManager.Instance.Settings.DistantPort)
);
}
public bool StartService()
{
try
{
if (_Host == null)
{
_Host = new ServiceHost(typeof(CaptureService), ServiceUri(SettingsManager.Instance.Settings.TransportMode) );
if (SettingsManager.Instance.Settings.TransportMode == Transport.Http)
_Host.AddServiceEndpoint(typeof(ICaptureService), new WSHttpBinding(), "CaptureService");
else
_Host.AddServiceEndpoint(typeof(ICaptureService), new NetTcpBinding(), "CaptureService");
// TODO - supress if no more debug...
ServiceMetadataBehavior metadataBehavior = new ServiceMetadataBehavior();
metadataBehavior.HttpGetEnabled = true;
_Host.Description.Behaviors.Add(metadataBehavior);
Binding mexBinding = null;
if (SettingsManager.Instance.Settings.TransportMode == Transport.Http)
mexBinding = MetadataExchangeBindings.CreateMexHttpBinding();
else
mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
_Host.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding, "mex");
//ApplyCompression();
}
_Host.Open();
return true;
}
catch (Exception error)
{
_Host.Close();
_Host = null;
return false;
}
}
public void StopService()
{
if (_Host != null)
{
_Host.Close();
_Host = null;
}
}
//private Binding ApplyCompression(EndpointAddress endpointAdress)
//{
// CustomBinding binding = new CustomBinding();
// if (SettingsManager.Instance.Settings.UseCompression == true)
// binding.Elements.Add(new CompressionMessageEncodingBindingElement());
// else
// binding.Elements.Add(new TextMessageEncodingBindingElement(System.ServiceModel.Channels.MessageVersion.Soap11, System.Text.Encoding.UTF8));
// if (SettingsManager.Instance.Settings.TransportMode == Transport.Http)
// binding.Elements.Add(new HttpTransportBindingElement());
// else
// binding.Elements.Add(new TcpTransportBindingElement());
// //transportBindingElement.MaxReceivedMessageSize = ParametresConfig.MaxWcfMessageSize;
// return binding;
//}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
WPF and MVVM fan, I practice C # in all its forms from the beginning of the NET Framework without mentioning C ++ / MFC and other software packages such as databases, ASP, WCF, Web & Windows services, Application, and now Core and UWP.
In my wasted hours, I am guilty of having fathered C.B.R. and its cousins C.B.R. for WinRT and UWP on the Windows store.
But apart from that, I am a great handyman ... the house, a rocket stove to heat the jacuzzi and the last one: a wood oven for pizza, bread, and everything that goes inside
https://guillaumewaser.wordpress.com/
https://fouretcompagnie.wordpress.com/