📅  最后修改于: 2020-11-19 09:22:04             🧑  作者: Mango
在此,WCF服务托管在控制台应用程序中。下面给出的是按顺序排列的具有适当步骤的过程,该过程说明了整个过程。
步骤1-首先,让我们创建服务合同及其实现。创建一个控制台应用程序,并将其命名为MyCalculatorService。这是返回两个数字相加的简单服务。
步骤2-现在,在解决方案资源管理器中右键单击“引用”,然后单击“添加引用”。将打开以下窗口;将System.ServiceModel引用添加到项目。
步骤3-创建一个ISimpleCalculator接口,将ServiceContract和OperationContract属性添加到类和函数,如下所示。在以后的会议中,您将了解有关这些合同的更多信息。这些合同会将使用该服务的方法公开给外界。
步骤4-该文件背后的代码如下-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace MyCalculatorWCFService {
[ServiceContract()]
Public interface ISimpleCalculator {
[OperationContract()]
int Add(int num1, int num2);
}
}
步骤5 -MyCalculatorService是IMyCalculatorService接口的实现类,如下所示。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyCalculatorWCFService {
Class SimpleCalculator : ISimpleCalculator {
Public int Add(int num1, int num2) {
return num1 + num2;
}
}
}
步骤6-现在,我们已经准备好服务。让我们去实现托管过程。创建一个新的控制台应用程序,并将其命名为“ MyCalculatorWCFServiceHost”。
步骤7-添加对system.servicemodel和项目MyCalculatorWCFService的引用。
其背后的代码如下-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyCalculatorWCFService;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace MyCalculatorWCFServiceHost {
class Program {
static void Main(string[] args) {
//Create a URI to serve as the base address
UrihttpUrl = newUri("http://localhost:8090/MyCalculatorWCFService/SimpleCalculator");
//Create ServiceHost
ServiceHost host = newServiceHost(typeof(MyCalculatorWCFService.ISimpleCalculator), httpUrl);
//Add a service endpoint
host.AddServiceEndpoint(typeof(MyCalculatorWCFService.ISimpleCal culator), newWSHttpBinding(), "");
//Enable metadata exchange
ServiceMetadataBehaviorsmb = newServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
//Start the Service
host.Open();
Console.WriteLine("Service is host at " + DateTime.Now.ToString());
Console.WriteLine("Host is running... Press key to stop");
Console.ReadLine();
}
}
}