当前位置:首页 » 《关注互联网》 » 正文

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

17 人参与  2024年10月22日 16:01  分类 : 《关注互联网》  评论

点击全文阅读


目录

引言        

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。选择 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">        <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 创建控制台应用程序
添加一个新的 "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 服务开发技术。如果遇到任何问题,请提供具体的错误信息以便进一步诊断和解决问题。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/175575.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 丁榆:结局+番外看点十足(和渣男小叔叔的游戏日常)全书无套路阅读
  • 法医狂妃:王爷你命中缺我小说(苏七夜景辰)全本完整阅读最新章节(法医狂妃:王爷你命中缺我)_笔趣阁
  • (头条)洛甯陆乘渊小说(闪婚老公是卧底,消失三年回来了)整本免费版阅读无广告(洛甯陆乘渊)
  • 陆少今天又秀恩爱了吗后续(陆怀骁苏棠)(陆少今天又秀恩爱了吗)整本畅享在线+无广告结局
  • 独家江柏俊夏清恬无删减(重生之团长俊夫要离婚)(江柏俊夏清恬)TXT免费版阅读
  • 全网首发重生下乡嫁糙汉,渣男全家悔哭了彩蛋(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全本完整阅读无弹窗
  • 我是让他不屑一顾,不愿多看一眼的路人小说(安喻意商晋深)(我是让他不屑一顾,不愿多看一眼的路人)在线畅读阅读连载中
  • 丁榆后续(和渣男小叔叔的游戏日常)全文在线下载在线+纯净版结局
  • 洛甯陆乘渊::结局+番外评价五颗星-闪婚老公是卧底,消失三年回来了:结局+番外新上热文
  • 前传孟流年周丽珍续集(孟流年周丽珍)终章阅读极简(孟流年周丽珍)
  • 夏语栀祁墨寒我们各归人海,此生,也不必再见彩蛋小说结尾+附加(我们各归人海,此生,也不必再见)清爽版阅读
  • 重生下乡嫁糙汉,渣男全家悔哭了小说完结篇(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全书无套路阅读无广告小说大结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1