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

目录

[1. Web Service 概念介绍](#1. Web Service 概念介绍)

[1.1 什么是 Web Service](#1.1 什么是 Web Service)

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

[1.3 WSDL(Web 服务描述语言)](#1.3 WSDL(Web 服务描述语言))

[1.4 应用场景](#1.4 应用场景)

[2. 创建 Web Service 项目](#2. 创建 Web Service 项目)

[3. 编写 Web Service 代码](#3. 编写 Web Service 代码)

[3.1 打开 WebService1.asmx.cs](#3.1 打开 WebService1.asmx.cs)

[3.2 编写服务方法](#3.2 编写服务方法)

[3.3 代码解析](#3.3 代码解析)

[4. 测试 Web Service](#4. 测试 Web Service)

[4.1 运行项目](#4.1 运行项目)

[4.2 测试方法](#4.2 测试方法)

[5. 部署 Web Service](#5. 部署 Web Service)

[5.1 使用 IIS 部署](#5.1 使用 IIS 部署)

[5.1.1 安装和配置 IIS](#5.1.1 安装和配置 IIS)

[5.1.2 发布项目](#5.1.2 发布项目)

[5.1.3 配置 IIS](#5.1.3 配置 IIS)

[5.2 部署到远程服务器](#5.2 部署到远程服务器)

[5.2.1 远程服务器准备](#5.2.1 远程服务器准备)

[5.2.2 使用 FTP 部署](#5.2.2 使用 FTP 部署)

[6. 客户端调用 Web Service](#6. 客户端调用 Web Service)

[6.1 添加服务引用](#6.1 添加服务引用)

[6.2 编写调用代码](#6.2 编写调用代码)

[6.3 运行客户端程序](#6.3 运行客户端程序)

[7. 总结](#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 方法:

cs 复制代码
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 方法 :输入参数 ab,点击 Invoke。浏览器会显示返回结果,例如 <int>30</int>
  2. Multiply 方法 :输入参数 ab,点击 Invoke。浏览器会显示返回结果,例如 <int>200</int>

5. 部署 Web Service

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

5.1 使用 IIS 部署
5.1.1 安装和配置 IIS
  1. 打开控制面板,选择 程序和功能,点击 启用或关闭 Windows 功能
  2. 在 Windows 功能对话框中,勾选 Internet Information Services,并确保 ASP.NETIIS 管理控制台 已勾选,点击 确定
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:

cs 复制代码
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 的开发与应用。

相关推荐
程序员拂雨6 分钟前
Java知识框架
java·开发语言
水水沝淼㵘1 小时前
嵌入式开发学习日志(数据结构--单链表)Day20
c语言·开发语言·数据结构·学习·算法
举一个梨子zz1 小时前
Java—— 可变参数、集合工具类、集合嵌套、不可变集合
java·开发语言·intellij-idea·需求分析
iangyu1 小时前
【windows server脚本每天从网络盘复制到本地】
开发语言·windows·php
程序员拂雨1 小时前
Python知识框架
开发语言·python
泽02021 小时前
C++类和对象之相关特性
java·开发语言·c++
敲键盘的小夜猫1 小时前
深入理解Python逻辑判断、循环与推导式(附实战案例)
开发语言·python
FAREWELL000751 小时前
Unity基础学习(九)输入系统全解析:鼠标、键盘与轴控制
学习·unity·c#·游戏引擎
为自己_带盐2 小时前
浅聊一下数据库的索引优化
开发语言·数据库·php
明月看潮生3 小时前
青少年编程与数学 02-019 Rust 编程基础 12课题、所有权系统
开发语言·青少年编程·rust·编程与数学