基于 C# .NET Framework 开发实现 WebService服务实例详解——一文学懂WebService服务开发技术及应用

news2024/10/18 6:58:17

        

目录

1. Web Service 概念介绍

1.1 什么是 Web Service

1.2 SOAP(简单对象访问协议)

1.3 WSDL(Web 服务描述语言)

1.4 应用场景

2. 创建 Web Service 项目

3. 编写 Web Service 代码

3.1 打开 WebService1.asmx.cs

3.2 编写服务方法

3.3 代码解析

4. 测试 Web Service

4.1 运行项目

4.2 测试方法

5. 部署 Web Service

5.1 使用 IIS 部署

5.1.1 安装和配置 IIS

5.1.2 发布项目

5.1.3 配置 IIS

5.2 部署到远程服务器

5.2.1 远程服务器准备

5.2.2 使用 FTP 部署

6. 客户端调用 Web Service

6.1 添加服务引用

6.2 编写调用代码

6.3 运行客户端程序

7. 总结


引言

在 C# .NET Framework 环境下开发 Web Service 是一个常见的企业级开发任务。Web Service 提供了一种跨平台、跨语言的通信机制,使不同系统之间能够互相调用和交互。本文将详细介绍如何在 C# .NET Framework中创建、部署和调用 Web Service,包括相关的概念、应用场景、详细的开发步骤、完整示例以及部署方法。【以下示例基于 .NET Framework4.5实现。】

1. Web Service 概念介绍

1.1 什么是 Web Service

Web Service 是一种基于 HTTP、SOAP、XML 等标准协议的分布式计算模型。它允许不同平台和编程语言的应用程序通过网络进行通信和数据交换。Web Service 的主要特点包括:

  • 平台无关性:Web Service 可以在任何支持 HTTP 和 XML 的平台上运行。
  • 语言独立性:Web Service 可以使用任何编程语言来实现和调用。
  • 标准化协议:使用标准化的协议,如 HTTP、SOAP 和 WSDL,确保了互操作性。
1.2 SOAP(简单对象访问协议)

SOAP 是一种基于 XML 的协议,用于在网络上传输结构化信息。SOAP 消息通常包含以下部分:

  • Envelope:定义消息的开始和结束。
  • Header:包含可选的消息头信息。
  • Body:包含实际的消息内容。
1.3 WSDL(Web 服务描述语言)

WSDL 是一种 XML 格式的描述语言,用于描述 Web Service 的接口、方法、参数和返回值。WSDL 文件通常包含以下部分:

  • Types:定义数据类型。
  • Message:定义消息结构。
  • PortType:定义操作和消息的接口。
  • Binding:定义操作与消息的绑定。
  • Service:定义服务端点和地址。
1.4 应用场景

Web Service 的应用场景包括但不限于:

  • 跨平台系统集成:例如,将 Java 应用程序与 C# 应用程序进行集成。
  • 分布式系统:例如,微服务架构中的服务调用。
  • 企业服务总线(ESB):使用 Web Service 实现业务功能的松耦合。
  • B2B 电子商务:不同企业之间的数据交换和业务流程集成。

2. 创建 Web Service 项目

  1. 打开 Visual Studio

    打开 Visual Studio,选择 File -> New -> Project 以创建一个新的项目。我们选择ASP.NET  Web应用程序,如下图所示,项目名称和位置可自己修改,然后点确定进入下一步:

  2. 创建一个空的Web应用程序,选择如下:

  3. 经过上面两步,我们就生成了一个空的Web应用程序项目,然后鼠标右键点击项目,选择 添加>新建项。

  4. 选择Web服务,点击添加。一个简单的webservice就创建完成了。

 然后Visual Studio 会生成一个默认的 Web Service 项目结构。项目包含以下重要文件:

  • WebService1.asmx:默认的 Web Service 文件,包含服务的入口点。
  • WebService1.asmx.cs:服务的代码文件,定义服务方法。

  

3. 编写 Web Service 代码

在本节中,我们将编写一个简单的计算服务,提供加法和乘法功能。

3.1 打开 WebService1.asmx.cs

在解决方案资源管理器中,找到 WebService1.asmx 文件,右键点击并选择 View Code 打开 WebService1.asmx.cs

3.2 编写服务方法

添加以下代码以定义 AddMultiply 方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace MyWebService
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public int Add(int a, int b)
        {
            // 返回两个数的和
            return a + b;
        }

        [WebMethod]
        public int Multiply(int a, int b)
        {
            // 返回两个数的乘积
            return a * b;
        }
    }
}
3.3 代码解析
  • [WebService]:表明该类是一个 Web Service。
  • [WebServiceBinding]:定义 Web Service 绑定的配置。
  • [WebMethod]:标记类中的方法,使其可以作为 Web Service 方法被调用。

4. 测试 Web Service

4.1 运行项目

F5 运行项目,Visual Studio 会启动一个开发服务器,并在默认浏览器中打开 http://localhost:XXXXX/webService1.asmxXXXXX 是端口号)。

4.2 测试方法

在浏览器中,可以看到 Web Service 的描述页面,包含了 AddMultiply 方法。点击方法名,可以进入测试页面:

  1. Add 方法:输入参数 a 和 b,点击 Invoke。浏览器会显示返回结果,例如 <int>30</int>
  2. Multiply 方法:输入参数 a 和 b,点击 Invoke。浏览器会显示返回结果,例如 <int>200</int>

5. 部署 Web Service

Web Service 开发完成后,需要将其部署到服务器,使得客户端可以访问。

5.1 使用 IIS 部署
5.1.1 安装和配置 IIS
  1. 打开控制面板,选择 程序和功能,点击 启用或关闭 Windows 功能
  2. 在 Windows 功能对话框中,勾选 Internet Information Services,并确保 ASP.NET 和 IIS 管理控制台 已勾选,点击 确定
5.1.2 发布项目
  1. 在解决方案资源管理器中右键点击项目,选择 Publish
  2. 在发布对话框中选择发布目标,如 File System,指定发布路径(如 C:\inetpub\wwwroot\MyWebService),点击 Publish
5.1.3 配置 IIS
  1. 打开 IIS 管理器,右键点击 Default Web Site,选择 Add Application
  2. 在添加应用程序对话框中输入 Alias(如 MyWebService),选择应用程序池,选择物理路径(发布路径)。
  3. 点击 OK,应用程序会被添加到默认网站下。
  4. 在浏览器中输入 http://localhost/MyWebService/Service1.asmx 检查 Web Service 是否正常工作。
5.2 部署到远程服务器
5.2.1 远程服务器准备
  1. 确保目标服务器已安装 IIS 并配置 ASP.NET。
  2. 确保目标服务器防火墙允许 HTTP/HTTPS 访问。
5.2.2 使用 FTP 部署
  1. 在解决方案资源管理器中右键点击项目,选择 Publish
  2. 在发布对话框中选择 FTP,输入远程服务器的 FTP 地址、用户名和密码,指定目标路径(如 /var/www/MyWebService),点击 Publish
  3. 发布完成后,浏览器中输入 http://yourserveraddress/MyWebService/webService1.asmx 检查 Web Service 是否正常工作。

6. 客户端调用 Web Service

6.1 添加服务引用
  1. 打开一个新的或现有的 .NET 项目(如控制台应用),右键点击项目选择 Add Service Reference
  2. 在服务引用对话框中点击 Discover 或输入 Web Service 的 URL(如 http://localhost/MyWebService/webService1.asmx)。
  3. 点击 Go,选择服务并输入命名空间(如 MyWebServiceReference),点击 OK
6.2 编写调用代码

在项目中编写代码调用 Web Service:

using System;

namespace MyWebServiceClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建服务客户端实例
            var client = new MyWebServiceReference.Service1SoapClient();

            // 调用 Add 方法
            int sum = client.Add(10, 20);
            Console.WriteLine($"10 + 20 = {sum}");

            // 调用 Multiply 方法
            int product = client.Multiply(10, 20);
            Console.WriteLine($"10 * 20 = {product}");

            // 关闭客户端
            client.Close();
        }
    }
}
6.3 运行客户端程序

运行客户端程序,可以看到调用 Web Service 的结果输出到控制台。

7. 总结

        在本文中,我们详细介绍了如何在 C# .NET Framework  环境下开发、测试、部署和调用 Web Service。我们从概念入手,逐步讲解了 Web Service 的开发步骤和代码示例,最终展示了如何通过客户端调用 Web Service。

        通过这种基于标准化协议的分布式服务,开发人员可以实现跨平台、跨语言的互操作,满足企业级应用和系统集成的需求。希望本文能帮助你更好地理解和掌握 Web Service 的开发与应用。

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

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

相关文章

鸿蒙网络编程系列3-TCP客户端通讯示例

1. TCP简介 TCP协议是传输层最重要的协议&#xff0c;提供了可靠、有序的数据传输&#xff0c;是多个广泛使用的表示层协议的运行基础&#xff0c;相对于UDP来说&#xff0c;TCP需要经过三次握手后才能建立连接&#xff0c;建立连接后才能进行数据传输&#xff0c;所以效率差了…

太速科技-426-基于XC7Z100+TMS320C6678的图像处理板卡

基于XC7Z100TMS320C6678的图像处理板卡 一、板卡概述 板卡基于独立的结构&#xff0c;实现ZYNQ XC7Z100DSP TMS320C6678的多路图像输入输出接口的综合图像处理&#xff0c;包含1路Camera link输入输出、1路HD-SDI输入输出、1路复合视频输入输出、2路光纤等视频接口&#xff0c;…

一文了解微服务与多租户

在当今快速发展的数字化时代&#xff0c;软件架构的选择对于企业的成功至关重要。微服务和多租户作为两种较为热门的架构模式&#xff0c;正逐渐成为企业构建高效、灵活和可扩展软件系统的热门选择。 一、微服务架构 &#xff08;一&#xff09;微服务的定义与概念 微服务是一…

HarmonyOS开发(状态管理,页面路由,动画)

官网 https://developer.huawei.com/consumer/cn/ 一、状态管理 在声明式UI中&#xff0c;是以状态驱动视图更新 1.State 状态(State)&#xff1a;指驱动视图更新的数据&#xff0c;被装饰器标记的变量 视图(View)&#xff1a;基于UI描述渲染得到用户界面 说明 State装饰…

《七度荒域:混沌之树》风灵月影二十二项游戏辅助:上帝模式/无限HP和EP/金币不减

《七度荒域:混沌之树》是款国产Roguelike银河恶魔城横版动作游戏&#xff0c;融合刷宝玩法。玩家将扮演修补世界的命运之子&#xff0c;探寻碎裂世界的秘密&#xff0c;在战斗轮回中成长&#xff0c;挑战未知与隐秘力量。风灵月影版修改器提供更多自定义和游戏体验调整选项&…

项目错误合集-自用

day1 验证码错误前后端交互错误 今天在写修改密码时,前端传递给后端验证码时,第一次犯错,redis中空指针异常,检查后发现 redis中没有账号的键,调试发现,我将user的account的键写成了getYzm 写对之后,发现出现了验证码不正确的错误,但是我是将redis中的数据直接复制过…

STM32——关于I2C的讲解与应用

1、什么是I2C&#xff1f; I2C(Inter&#xff0d;Integrated Circuit)是一种通用的总线协议。它是由Philips(飞利浦)公司&#xff0c;现NXP(恩智浦)半导体开发的一种简单的双向两线制总线协议标准。是一种半双工的同步通信协议。 2、I2C协议标准 I2C协议使用两根总线线路&am…

Bilidown v1.2.4 B站在线视频下载解析工具中文单文件版

Bilidown是一款专为B站视频下载而设计的工具&#xff0c;一款简洁好用的B站视频下载工具&#xff0c;支持由UP主上传的单集&#xff0c;多集以及相关封面&#xff0c;弹幕&#xff0c;字幕&#xff0c;音乐&#xff0c;刮削等等&#xff0c;支持任意粒度批量组合&#xff0c;登…

10-Python基础编程之函数

Python基础编程之函数 概念基本使用参数单个参数多个参数不定长参数缺省参数注意事项 返回值使用描述偏函数高阶函数返回函数匿名函数闭包装饰器生成器递归函数函数的作用域 概念 写了一段代码实现了某个小功能&#xff1a;然后把这些代码集中到一块&#xff0c;起一个名字&am…

c++就业 创建新的设计模式

virtual自然生成虚函数表&#xff08;一维数组记录了虚函数地址 通过偏移可以调相对应的方法&#xff09; vp 编译的时候地址自然会赋值给相对应的对象 如何体现多态 没有虚函数重写 那么就是早绑定 就比如subject会转换成base类型 p指向base对象 有虚函数就是晚绑定 p指向subj…

深度学习神经网络的7大分类

深度学习中的神经网络可通过其结构和功能分为多种类型&#xff0c;每种都针对特定的数据特征和应用场景进行了优化。 深度学习7大神经网络如下&#xff1a; 01 前馈神经网络&#xff08;Feedforward Neural Networks, FNN&#xff09;&#xff1a; 这是最基本的神经网络形式…

AI周报(10.6-10.12)

AI应用-AI中医诊疗 AI中医诊疗通过整合中医“望、闻、问、切”的传统诊断方法&#xff0c;并结合现代AI技术&#xff0c;如自然语言处理和图像识别&#xff0c;来辅助医生进行更精准的诊断。 望诊&#xff0c;作为中医四诊之首&#xff0c;其精髓在于“司外揣内”。医者通过细致…

Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)

文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

centors7升级GLIBC2.18

错误来源&#xff1a;找不到GLIBC2.18&#xff0c;因为glibc的版本是2.17 网上大多教程方法&#xff0c;反正我是行不通&#xff1a; 方法1&#xff1a;更新源&#xff0c;然后使用yum安装更新 方法2&#xff1a;下载源码&#xff0c;configrue&#xff0c;make执行 wget h…

添加卡巴斯基杀毒软件(KES)的更新源

最近不知道怎么了&#xff0c;家里的电脑卡巴斯基&#xff08;KES&#xff09;怎么更新都更新不了&#xff0c;在网上找到了几个卡巴斯基的服务器: 添加步骤&#xff1a; 1.双击右下角的卡巴斯基图标。 2.依次按如下图示添加&#xff1a; 以下这步是最关键的&#xff0c;一定要…

原型基于颜色的图像检索与MATLAB

原型基于颜色的图像检索与MATLAB 摘要 基于内容的检索数据库(图像)已经变得越来越受欢迎。为了达到这一目的&#xff0c;需要发展算法检测/模拟工具&#xff0c;但市场上没有合适的商业工具。 本文介绍了一个模拟环境&#xff0c;能够从数据库中检索图像直方图的相似之处。该…

学习率 Learing Rate 的调整

&#x1f680; 机器学习系列前期回顾 1、初识机器学习 2、线性模型到神经网络 3、local minima 的问题如何解决 4、batch和momentum &#x1f680;在初识机器学习中&#xff0c;了解了机器学习是如何工作的并引入了线性模型&#xff0c; &#x1f680;在线性模型到神经网络这节…

远控代码的重构-远控网络编程的设计上

套路化代码 但是我们这是一个MFC工程,我们需要考虑不是所有操作都需要到main函数里面实现,有些操作可以在main函数之前完成,有些可以在main函数返回以后完成,静态全局变量满足这个需求,我们需要添加一个自己的类 编辑器细节1 添加类和添加类向导的区别,一个是添加自己的类,一…

Python之爬虫读取网页数据

目录&#xff1a; 1、简介2、代码示例3、验证4、项目示例5、网页数据提取 1、简介 选择Python作为爬虫开发的首选语言‌&#xff0c;主要是因为Python具有简洁易学的语法、丰富的库支持、跨平台特性、强大的社区支持、动态类型、可扩展性以及异步编程支持等优势。‌ ‌简洁易学…

4.7 大数据应用场景

文章目录 今天&#xff0c;我非常荣幸能与大家分享一个充满潜力和变革的主题——大数据的应用场景。在这个信息爆炸的时代&#xff0c;大数据已经成为推动各行各业发展的重要驱动力。接下来&#xff0c;我将带领大家探索大数据在不同行业中的神奇应用。 首先&#xff0c;让我们…