基于 C# .NET Framework 4.0 开发实现 WCF 服务实例详解(一)

猿享天开 2024-10-15 12:05:01 阅读 61

目录

引言        

1. 创建 WCF 服务

1.1 创建项目

1.2 定义服务接口

1.3 实现服务接口

2. 配置服务

3. 创建宿主项目

3.1 创建控制台应用程序

3.2 引用服务库

3.3 编写宿主代码

4. 测试 WCF 服务

4.1 启动宿主程序

4.2 添加客户端应用程序

4.3 添加服务引用

4.4 调用服务

5. 运行和测试

概念解释

故障排除


引言        

        我们利用C#可以快速开发各种后端服务,如常见的windows服务、WCF 服务、WebService服务、WebApi等,本文将详细讲解如何基于 C# 和 .NET Framework 4.0 开发一个 WCF 服务,确保每个步骤都清晰且易于理解和掌握。

1. 创建 WCF 服务库

1.1 创建项目

打开 Visual Studio。选择 <code>File -> New -> Project。选择 WCF 模板下的 WCF Service Library,命名为 WcfServiceLibrary1

1.2 定义服务接口

IService1.cs 中定义服务接口:

using System.ServiceModel;

namespace WcfServiceLibrary1

{

// ServiceContract 表示这是一个服务接口

[ServiceContract]

public interface IService1

{

// OperationContract 表示这是一个可调用的服务方法

[OperationContract]

string GetData(int value);

}

}

1.3 实现服务接口

Service1.cs 中实现服务接口:

namespace WcfServiceLibrary1

{

// 具体实现服务接口的方法

public class Service1 : IService1

{

public string GetData(int value)

{

// 返回一个简单的字符串

return $"You entered: {value}";

}

}

}

2. 配置服务

打开 App.config,确保配置如下:

<configuration>

<system.serviceModel>

<services>

<service name="WcfServiceLibrary1.Service1">code>

<endpoint address="" code>

binding="basicHttpBinding" code>

contract="WcfServiceLibrary1.IService1" />code>

<host>

<baseAddresses>

<add baseAddress="http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />code>

</baseAddresses>

</host>

</service>

</services>

<behaviors>

<serviceBehaviors>

<behavior>

<serviceMetadata httpGetEnabled="True" />code>

<serviceDebug includeExceptionDetailInFaults="False" />code>

</behavior>

</serviceBehaviors>

</behaviors>

</system.serviceModel>

</configuration>

3. 创建宿主项目

3.1 创建控制台应用程序

添加一个新的 "Console Application" 项目来宿主 WCF 服务,命名为 ConsoleHost

3.2 引用服务库

在控制台应用程序中添加对 WcfServiceLibrary1 项目的引用。

3.3 编写宿主代码

Program.cs 中编写代码以宿主服务:

using System;

using System.ServiceModel;

namespace ConsoleHost

{

class Program

{

static void Main(string[] args)

{

// 创建 ServiceHost 实例来宿主 WCF 服务

using (ServiceHost host = new ServiceHost(typeof(WcfServiceLibrary1.Service1)))

{

try

{

// 打开服务

host.Open();

Console.WriteLine("Service is running...");

Console.WriteLine("Press <Enter> to stop the service.");

Console.ReadLine();

}

catch (Exception ex)

{

Console.WriteLine($"An error occurred: {ex.Message}");

}

}

}

}

}

4. 测试 WCF 服务

4.1 启动宿主程序

运行控制台应用程序 ConsoleHost 以启动服务。

4.2 添加客户端应用程序

创建一个新的 "Console Application" 来测试服务,命名为 WcfClient

4.3 添加服务引用

在客户端项目中,右键点击项目,选择 Add Service Reference,输入服务地址(如 http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/),然后点击 GoOK

4.4 调用服务

在客户端的 Program.cs 中调用服务:

using System;

namespace WcfClient

{

class Program

{

static void Main(string[] args)

{

// 创建服务客户端

var client = new ServiceReference1.Service1Client();

// 调用服务方法

string result = client.GetData(42);

Console.WriteLine(result);

// 关闭客户端

client.Close();

}

}

}

5. 运行和测试

启动 ConsoleHost 项目以宿主 WCF 服务。运行 WcfClient 项目,您应该会看到输出 You entered: 42

概念解释

ServiceContract: 用于定义服务接口。OperationContract: 用于标记服务方法。ServiceHost: 用于宿主服务,提供服务管理和生命周期管理。Endpoint: 定义服务的地址、绑定和契约。Binding: 定义如何传输消息(比如 basicHttpBinding)。Contract: 定义服务接口(比如 IService1)。

故障排除

如果服务无法启动,请检查 App.config 中的配置是否正确。如果客户端无法调用服务,请确保服务地址正确且服务已经启动。使用 ServiceTraceViewer 查看更详细的WCF跟踪和日志,以帮助诊断问题。

        通过这些步骤和解释,您应该能够深入了解并掌握基于 C# 和 .NET Framework 4.0 的 WCF 服务开发技术。如果遇到任何问题,请提供具体的错误信息以便进一步诊断和解决问题。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。