wcf服务器与服务器通信的教程示例
Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。它使您能够通过各种传输方式(例如 HTTP、TCP 和命名管道)发送和接收消息。WCF 支持多种消息传递模式,包括请求/响应和单向消息传递,它可用于构建基于 SOAP 和基于 REST 的服务。
WCF 服务器是承载 WCF 服务并使其可供客户端使用的程序。有几种方法可以承载 WCF 服务,包括:
1、自托管:您可以在独立的可执行文件中托管 WCF 服务,例如控制台应用程序或 Windows 服务。这是承载 WCF 服务的最简单方法,但它有一些限制,例如无法使用 HTTP 激活或仅支持单个服务。
2、IIS 托管:您可以在 Internet Information Services (IIS) 中托管 WCF 服务,方法是为服务创建虚拟目录并将服务文件部署到其中。IIS 提供了许多好处,包括支持多种服务、自动激活以及使用 HTTP、HTTPS 和其他协议的能力。
3、WAS 托管:您可以在 Windows Process Activation Service (WAS) 中托管 WCF 服务,方法是在应用程序配置文件的 system.serviceModel 部分对其进行配置。WAS 允许您在 IIS 中托管 WCF 服务,还支持非 HTTP 协议,例如 TCP 和命名管道。
要使用 WCF 启用服务器到服务器的通信,您可以创建可供其他服务器使用的 WCF 服务。然后,使用服务器可以使用客户端应用程序将使用的相同技术与 WCF 服务通信,例如发送 HTTP 请求或使用客户端代理。
下面是一个简单的 WCF 服务协定示例,它定义了获取当前时间的单个操作:
[ServiceContract]
public interface ITimeService
{
[OperationContract]
DateTime GetCurrentTime();
}
然后可以通过 WCF 服务实现此服务契约:
public class TimeService : ITimeService
{
public DateTime GetCurrentTime()
{
return DateTime.Now;
}
}
WCF 服务可以通过多种方式承载,例如在控制台应用程序、Windows 服务或 IIS 中。
在消费服务器上,您可以使用 WCF 客户端与服务进行通信。可以使用该svcutil.exe工具或通过在 Visual Studio 中添加服务引用来生成客户端。生成客户端后,您可以像调用任何其他方法一样调用服务操作:
TimeServiceClient client = new TimeServiceClient();
DateTime currentTime = client.GetCurrentTime();
要托管WCF服务,您需要创建一个服务主机对象并打开它以开始侦听传入请求。以下是如何在控制台应用程序中自托管 WCF 服务的示例:
using (ServiceHost host = new ServiceHost(typeof(TimeService)))
{
host.Open();
Console.WriteLine("Press any key to stop the service.");
Console.ReadKey();
}
此代码为该类创建一个服务主机TimeService并打开它以开始侦听请求。服务主机将保持打开状态,直到用户按下控制台上的任意键。