第4章 WCF 101
4.1 WCF快速启动
定义服务契约
契约表示消息应用系统外形的主要方式。外形,是指服务展示的操作,操作生成、使用的消息Schema和每个操作实现的消息交换模式。
using System.ServiceModel;
namespace WCFServices
{
[ServiceContract]
public interface IHelloWCFContract
{
[OperationContract]
void Say(string value);
}
}
定义地址和绑定
局部变量address使用的是HTTP格式的统一资源标识符(URI)。选择这个地址强制要求我们使用HTTP传输。绑定是指定传输,消息编排和消息编码的主要方式。
Uri address = new Uri("http://www.andersoft.com/IHelloWCFContract");
BasicHttpBinding binding = new BasicHttpBinding();创建一个终结点并启动侦听
使用地址,绑定,契约来构建一个终结点(endpoint),并在此终结点上侦听发送来的消息。
System.ServiceModel.ServiceHost类型构建和托管终结点,并管理接收应用底层结构的其他部分,如线程和对象的生命周期。
AddServiceEndpoint方法没有开始循环侦听,它只是简单地改变了ServiceHost对象的状态。
Open方法会验证ServiceHost对象的状态,从它的状态里构建终结点,并且开始侦听。
ServiceHost svc = new ServiceHost(typeof(HelloWCFService));
svc.AddServiceEndpoint(typeof(IHelloWCFContract), binding, address);
svc.Open();
Console.WriteLine("The HelloWCF receiving application is ready");
Console.ReadKey();
svc.Close();编译运行和检验接收者
可用netstat.exe检查应用是否确实在侦听。
netstat -a -b
TCP [::]:6543 Anders-MSFT:0 LISTENING
Can not obtain ownership informationC:\Users\v-xufeif>netstat -a -b -> 1.txt向接收者发送消息
发送消息的基础结构也需要依靠地址,绑定和契约,这与接收消息的基础结构类似。
绝大多数接收者使用Service.ServiceModel.EndpointAddress类型表示消息发送的目标。
using System;
using System.ServiceModel;
using WCFServices;
namespace ClientApp
{
class Program
{
static void Main(string[] args)
{
BasicHttpBinding binding = new BasicHttpBinding();
Uri address = new Uri("http://localhost:6543/IHelloWCFContract");
EndpointAddress endpoint=new EndpointAddress(address);
IHelloWCFContract channel = ChannelFactory<IHelloWCFContract>.CreateChannel(binding, endpoint);
channel.Say("WCF, hello!!!");
Console.ReadKey();
}
}
}
看消息
本文介绍Windows通信基础(WCF)的服务创建过程,包括定义服务契约、地址、绑定及终结点等核心概念。通过示例演示了如何搭建WCF服务并进行消息收发。
2022

被折叠的 条评论
为什么被折叠?



