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

目录

引言        

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 创建项目
  1. 打开 Visual Studio。
  2. 选择 File -> New -> Project
  3. 选择 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">
        <endpoint address="" 
                  binding="basicHttpBinding" 
                  contract="WcfServiceLibrary1.IService1" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

3. 创建宿主项目

3.1 创建控制台应用程序
  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 添加客户端应用程序
  1. 创建一个新的 "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. 运行和测试

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

概念解释

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

故障排除

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿享天开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值