【Web服务与Web应用开发】【C#】创建第一个简单的WCF服务应用程序 WCF Service Application(图文详情)

news2024/11/18 10:42:31

目录

0.简介

1.环境 

2.知识点

3.详细过程

1)打开 Visual Studio 2019 ,下载所需插件

2)创建WCF服务应用项目

3)打开 【IService1.cs 】在此处定义服务函数

4)打开 【Service1.svc.cs】实现服务函数

5)测试服务接口


0.简介

  • 本文属于一个系列中的第一篇文章,这个系列会实现一个项目,这个项目主要使用Visual Studio 2019作为开发工具,创建WCF服务、创建Web应用程序调用WCF服务等功能
  • 本文主要介绍如何通过 Visual Studio 2019 来创建第一个WCF服务,这个服务实现的功能是返回数学中Pi的值。

1.环境 

Visual Studio 2019 + c# + windows11

2.知识点

  • WCF指的是Windows Communication Foundation,是微软推出的用于构建分布式应用程序的框架。WCF提供了一种统一的编程模型,用于在不同的计算机、操作系统和网络环境中进行通信。
  • WCF支持多种通信协议,包括HTTP、TCP、MSMQ等,可以在不同的传输协议之间进行切换。它还支持多种消息格式,例如XML、JSON等。
  • 使用WCF,开发人员可以定义服务合同(Service Contract)和数据合同(Data Contract),通过这些合同来描述服务接口和数据结构。然后,WCF提供了一套工具和库,使得开发人员可以轻松地实现和部署这些服务。
  • WCF提供了丰富的功能,例如安全性、事务处理、消息路由、可靠性等。它还支持扩展机制,允许开发人员根据自己的需求来定制和扩展框架的功能。

3.详细过程

1)打开 Visual Studio 2019 ,下载所需插件

点击【创建新项目】

在搜索框中输入【WCF】,找到【WCF Service Application】或【WCF服务应用程序】

如果有的话,请跳过下一步的安装插件

如果没有的话,需要下载对应插件,如下图,找到【安装多个工具和功能】

在打开的界面,勾选4个工具以及1个WCF

然后点击右下角的【修改】,下载过程会比较慢,请耐心等待,下载完成后还需要重启

下载完成后,就可以看到可选项目中有【WCF服务应用程序】了

2)创建WCF服务应用项目

接上文,选择下一步

【如果你使用C#语言】,就选C#的(我用的是C#的)

【如果你使用VB语言】,就选下面这个带VB的

修改名称和项目储存位置,点创建

创建后,可以看到如下目录结构,比较重要的两个文件是【IService1.cs】和【Service1.svc.cs】,这两个文件一个负责定义(地址在哪里,绑定怎么做,合同怎么做),一个负责实现函数

3)打开 【IService1.cs 】在此处定义服务函数

删除【namespace WcfService1】中默认带的函数,加上自己需要的函数,我这里需要一个返回Pi值的函数,所以名字为【PiValue】,返回类型为double


    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        double PiValue();

        // TODO: 在此添加您的服务操作
    }

【IService1.cs 】全部代码如下,【CompositeType】中的内容我没做修改

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfService1
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        double PiValue();

        // TODO: 在此添加您的服务操作
    }


    // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }
}

4)打开 【Service1.svc.cs】实现服务函数

删除【 public class Service1 : IService1】中无用的代码,替换为自己的函数实现,我这里主要通过库【Math】返回Pi的值

            double pi = Math.PI;
            return pi;

Service1.svc.cs】全部代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfService1
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
    public class Service1 : IService1
    {
        public double PiValue()
        {
            double pi = Math.PI;
            return pi;
        }
    }
}

5)测试服务接口

按调试快捷键【F5】,会出现如下调试界面,是专用于测试的客户端

可以看到有我们刚才实现的方法【PiValue】,双击【PiValue()】,会出现右侧的界面,然后点击调用

我们可以看到有返回值出现,说明我们的WCF服务成功

--END--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端-echarts tooltip展示多项自定义数据

效果如图,鼠标滑动到某一个柱子的时候,出现这一项数据的多个自定义数据,外加自己的模板样式渲染。 希望能展示每一列中的多个自定义数据 代码部分 主要是在data中,value就是实际展示的主数据,其他字段名为自定义的数…

【小白学Python】AI生成图片(四)

【小白学Python】自定义图片的生成(一) 【小白学Python】自定义图片的生成(二) 【小白学Python】爬取数据(三) 目录 ai文生图接口的获取python中调用ai接口图片拼接先将图片缩放拼接图片 文字背景图代码效…

怎么压缩pdf文件大小,如何压缩pdf文件大小

pdf文件怎么压缩?在当下这个信息爆炸的时代,无论是在工作场所还是校园中,我们经常会面临需要处理大文件的情况,而PDF格式作为一种保留文档结构和布局完整性的理想选择,有时候pdf文件太大,因此,对…

汽车汽配图纸管理、产品研发管理解决方案

汽车汽配图纸管理、产品研发管理解决方案 随着全球汽车市场的快速发展,中国汽车汽配行业迎来了前所未有的发展机遇。然而,在这一过程中,企业也面临着诸多挑战,如研发能力的提升、技术资料管理的复杂性、以及跨部门协作的困难等。为…

ubuntu22.04速装中文输入法

附送ubuntu安装chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb

动画重定向——当给一个人物模型用别人物的动画时,会遇到人物与动画不匹配问题,怎么解决呢?

每日一句:实践出真知,试错方确信 目录 最开始我想的原因! 分析一下动画相关参数 Animator组件参数详解: 人物模型的导入设置参数: Skinned Mesh Renderer组件详解: Skinned Mesh Renderer工作原理 设置Skinned …

【STM32CubeIDE】硬件IIC+AHT20使用

前言 本文主要介绍STM32CubeIDE配置硬件IIC驱动AHT20模块,实现温湿度读取并用串口打印显示在上位机; 软件平台:STM32CubeIDEHAL库 硬件环境:STM32F103ZET6(正点原子战舰V3)AHT20模块 目录 前言AHT20简介软件程序CubeIDE设置AHT2…

ChatGPT/AI助力学术写作-辅助翻译及润色

Nature期刊中的Career column专栏在4月份的时候发表了关于Chatgpt帮助学术写作的几点建议。 一、Three ways ChatGPR helps me in my academic writing 1、优化学术写作 不管使用哪一种AI工具,精确清晰的指令可以帮助使用者得到更好的反馈。例如:I’m w…

【LINUX】内核源码文件系统调用相关摸索

首先,先看看想测试那个系统调用,在应用层,如果使用C语言编程一般我们一来就是open函数,实际在测试的时候,直接用touch xxx.txt然后 echo "xxx" >> xxx.txt,这样就完成了文件创建和写文件的…

MemManage_Handler 问题的解决思路

1、问题 在做一个安全类项目时发现,软件在运行一段时间后会进入"MemManage_Handler",遂开始了一系列查找。 2、解决 (1)查看堆栈数据 查堆栈的数据,发现堆栈也被破坏了,看不出来是执行哪个任务执行导致的…

零基础想学编程,选择哪一门语言更好就业?(非常详细)零基础入门到精通,收藏这一篇就够了_c#就业方向

编程语言的用途广泛,它们各自在不同的领域和应用场景中发挥着重要作用。 零基础初学者在选择编程语言时,可以从就业方向入手选择。 【一一帮助安全学习,所有资源获取处一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 …

基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

为什么每一名程序员都应该学习 C++?

掌握 C 可不容易,但一旦你掌握了,就会获得丰厚的回报。 通常,程序员在他们的编程生涯中会使用多种编程语言。然而,我们也看到,有些程序员一直在使用同一种编程语言。例如,我们经常遇到有几十年经验的 Java…

day50---数据结构与算法(五)

四. 高级数据结构与算法设计 4.1 图 1) 概念 图是由顶点(vertex)和边(edge)组成的数据结构,例如 #mermaid-svg-bv3SYpkStIeixcO2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;…

从灵感到成品:使用AI生成博客文章的完整指南

在信息爆炸的时代,每个人都有讲述自己故事的权利和需求。博客作为一种表达方式,不仅能记录个人经历,还能分享知识和观点。然而,许多人在写博客文章时,常常会遇到灵感枯竭、时间不够用或者不知道如何开始等问题。幸运的…

还不到6个月,GPTs黄了

相比起来,人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外,最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周,不少人发现微软官网忽然更新了一条“GPT Bu…

星戈瑞Cy5.5 NHS Ester近红外荧光染料2375105-86-3

【星戈瑞stargraydye】以下数据均来自文献资料,星戈瑞暂未进行独立验证, 仅供参考! 在生物医学成像领域,荧光染料的应用逐渐增多。Cy5.5 NHS Ester作为其中的一种,凭借其光学性质和稳定的化学结构,在生物成像、药物追踪以及生物分…

浏览器扩展V3开发系列之 chrome.storage 的用法和案例

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.storage 是用于存储、获取用户数据的 API。当我们需要持久化存储数据时,比如&…

Ubuntu 20.04安装中文输入法出错:gnome-user-docs-zh-hans安装失败

问题:Ubuntu20.04安装中文输入法出错:gnome-user-docs-zh-hans安装失败 现象: 打开language Support页面的时候,提示install依赖的文件 这个过程中会弹窗提示: The following packages have unmet dependencies:gnome-user-doc…

全网最全的国外心理学资源导航站

想学心理学不知道去哪儿看权威的内容? 中文搜索心理学广告多? Kuakua | 发现心理学网站,应用程序和AI工具https://kuakua.app/explore 从心理学AI工具(国内外)到心理学专业院校、心理学期刊论文、心理学线上课程、心…