Если служба Windows размещает вашу службу WCF, вы можете просто передать все, что ей нужно (обратные вызовы, значения, настройки) при запуске службы.Вы можете передать метод службы Windows как Func<Input2, Output3>
, который должен вызывать сервис WCF.
Без вашего кода трудно сказать , где вы должны поместить его.Обычно это входит в ваш пользовательский ServiceHostFactory
.
Пример услуги с обратным вызовом:
namespace SmithWcfService
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class SmithWcfService : ISmithWcfService
{
private Func<string, int> callback;
public SmithWcfService(Func<string, int> callback)
{
this.callback = callback;
}
public void SendRequest()
{
//Ok, now I need to call Windows service application:
var output = this.callback("input");
}
}
}
Пример хостинга:
namespace SmithWindowsService
{
public partial class SmithWindowsService : ServiceBase
{
private ServiceHost host;
public SmithWindowsService( )
{
InitializeComponent( );
}
protected override void OnStart(string[] args)
{
var instance = new SmithWcfService.SmithWcfService(this.SomeMethodYouWantToCallIn);
host = new ServiceHost(instance, new Uri("your.url.com"));
host.Open( );
}
private int SomeMethodYouWantToCall(string data)
{
// do things...
}
}
}