将WCF服务转换为控制台应用程序

我有一个WCF服务。现在我想将其转换为控制台应用程序。基本上,这是一项简单的服务。它仅根据PowerShell请求的客户端请求执行2个作业。将WCF服务转换为控制台应用程序

Invoke-WebRequest "http://localhost:10000/backup/DoBackup?id=BackupClient1" 

Invoke-WebRequest "http://localhost:10000/backup/DoBackup?id=BackupClient2" 

我的服务侦听请求这2个请求。

我有这样的WCF代码:

myService service = new myService(_settings); 

backupServiceHost = new WebServiceHost(service, _backupAddress);

WebHttpBinding binding = new WebHttpBinding();

string address = "";

ServiceEndpoint endpoint = backupServiceHost .AddServiceEndpoint(typeof(ISnapshotServiceContract), binding, address);

backupServiceHost .Open();

在我的控制台应用程序我不能使用WebServiceHostWebHttpBinding。什么是最好的替代品?我正在考虑使用简单的HttpClient。但我不确定这是否是正确的选择?

回答:

为什么不使用命令行参数并完全避免WebServiceHost?然后,您只需比较来自Main函数的args[](请参阅,例如https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/main-and-command-args/)以确定它是否是BackupClient1命令或BackupClient2命令。

如果您想进一步理解这个概念,您可以将BackupClient1命令和BackupClient2命令的功能提取到单独的库中,并使前端(WCF和命令行)使用相同的后端。

如果你真的需要WCF服务(如下面的评论所述)请参考MSDN article;你将不得不提供您的配置,并找出如何以表明您希望结束在很好的方式方法,但它应该归结为这样的事:

String baseAddress = "http://localhost:10000/backup"; 

BasicHttpBinding binding = new BasicHttpBinding();

using (ServiceHost host = new ServiceHost(typeof(myService)))

{

host.AddServiceEndpoint(typeof(IMyService), binding, baseAddress);

host.Open();

while(true) {

// Figure out how to exit this loop - e.g. listen to some command from service

}

}

以上是 将WCF服务转换为控制台应用程序 的全部内容, 来源链接: utcz.com/qa/266121.html

回到顶部