WCF初接触实作之服务发布和使用(WCF入门实战:服务发布与使用指南)
原创
一、WCF简介
WCF(Windows Communication Foundation)是微软推出的一个用于构建服务式应用程序的框架。它拥护多种网络协议和数据格式,如HTTP、TCP、HTTPS、SOAP、JSON等。WCF提供了一套完整的编程模型,让开发人员能够更容易地创建、配置和管理服务。
二、WCF服务的基本组成
WCF服务核心由以下三个基本部分组成:
- 服务契约(Service Contract):定义了服务的接口和操作。
- 服务实现(Service Implementation):实现了服务契约中定义的操作。
- 服务宿主(Service Host):负责启动和托管服务。
三、创建WCF服务项目
下面我们将通过一个单纯的示例来展示怎样创建、发布和使用WCF服务。
3.1 创建服务契约
首先,创建一个新的WCF服务项目,并定义服务契约。
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetMessage(string name);
}
3.2 创建服务实现
接下来,实现服务契约中定义的操作。
public class MyService : IMyService
{
public string GetMessage(string name)
{
return $"Hello, {name}!";
}
}
3.3 配置服务宿主
在项目中的App.config文件中,配置服务宿主的相关信息。
四、发布WCF服务
发布WCF服务有多种行为,下面介绍两种常用的方法。
4.1 使用IIS发布
1. 在IIS中创建一个新的应用程序池。
2. 在应用程序池中创建一个新的网站,并将项目文件(如bin目录下的dll文件)放在网站目录下。
3. 修改网站的绑定,设置正确的端口号和协议。
4. 启动IIS服务,访问网站地址,即可访问WCF服务。
4.2 使用自托管发布
在项目中添加一个新的类,用于启动服务宿主。
class Program
{
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(MyService));
host.Open();
Console.WriteLine("服务已启动,按任意键退出...");
Console.ReadKey();
host.Close();
}
}
运行该程序,即可启动服务宿主,访问服务地址,即可访问WCF服务。
五、使用WCF服务
使用WCF服务有多种行为,下面介绍两种常用的方法。
5.1 使用添加服务引用的行为
在客户端项目中,右键点击“引用”->“添加服务引用”,输入服务地址,点击“前往”,在弹出的窗口中选择服务,点击“添加引用”即可。
在客户端代码中,使用生成的代理类调用服务。
ServiceReference1.MyServiceClient client = new ServiceReference1.MyServiceClient();
string result = client.GetMessage("World");
Console.WriteLine(result);
client.Close();
5.2 使用通道的行为
在客户端项目中,手动创建服务契约和配置文件。
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetMessage(string name);
}
public class MyServiceClient : ClientBase
, IMyService {
public MyServiceClient() : base(new BasicHttpBinding(), new EndpointAddress("http://localhost:8000/MyService"))
{
}
public string GetMessage(string name)
{
return Channel.GetMessage(name);
}
}
在客户端代码中,使用通道调用服务。
MyServiceClient client = new MyServiceClient();
string result = client.GetMessage("World");
Console.WriteLine(result);
client.Close();
六、总结
本文介绍了WCF服务的基本组成、创建、发布和使用方法。WCF作为微软的服务框架,具有充足的功能和灵活的配置,适用于构建分布式系统。通过本文的示例,相信读者已经对WCF有了初步的了解,可以为后续的深入学习打下基础。