这份教程将从基础概念开始,逐步引导您创建、发布和调用 ASP.NET WebService,涵盖了从传统 ASMX 到现代 Web API 的演进,并提供了丰富的代码示例和最佳实践。

webservice教程 asp.net
(图片来源网络,侵删)

ASP.NET WebService 教程

目录

  1. 第一部分:Web Service 基础

    • 什么是 Web Service?
    • 为什么使用 Web Service?
    • ASP.NET 中的 Web Service 实现:ASMX vs. Web API
  2. 第二部分:创建和发布 ASMX Web Service (经典方式)

    • 步骤 1:创建项目
    • 步骤 2:添加 Web Service (ASMX)
    • 步骤 3:编写服务方法
    • 步骤 4:测试 Web Service
    • 步骤 5:发布 Web Service
  3. 第三部分:调用 ASMX Web Service

    • 方式 1:使用浏览器直接调用
    • 方式 2:使用 ASP.NET 客户端调用 (Add Web Reference)
    • 方式 3:使用 C# 控制台应用调用 (现代方式 - Add Service Reference)
  4. 第四部分:深入 Web Service

    webservice教程 asp.net
    (图片来源网络,侵删)
    • 数据格式:XML vs. JSON
    • 状态管理:Session 和 Application
    • 异步方法
  5. 第五部分:现代替代方案 - ASP.NET Web API

    • 为什么 Web API 更受欢迎?
    • 快速创建一个 Web API 控制器
    • Web API 与 ASMX 的核心区别
  6. 第六部分:总结与最佳实践


第一部分:Web Service 基础

什么是 Web Service?

Web Service 是一种基于 Web 的、可互操作的、跨平台的分布式应用程序组件,它使用标准的 Web 协议(如 HTTP)和数据格式(如 XML 或 JSON)进行通信,允许不同操作系统、编程语言和应用程序之间交换数据。

你可以把它想象成一个“网络上的函数库”,你的应用程序可以通过网络调用这个库里的函数,并获取返回结果,而不需要关心这个函数库是用什么语言写的,部署在什么服务器上。

webservice教程 asp.net
(图片来源网络,侵删)

为什么使用 Web Service?

  • 跨平台和跨语言通信:Java 应用可以调用 .NET 提供的 Web Service,反之亦然。
  • 重用性:可以将核心业务逻辑封装成 Web Service,供多个不同的前端应用(Web、桌面、移动端)调用。
  • 松耦合:客户端和服务端只需要约定好接口(即如何调用和返回数据格式),它们可以独立开发、部署和升级。
  • 基于标准:使用 HTTP、XML、SOAP 等开放标准,易于被广泛接受。

ASP.NET 中的 Web Service 实现:ASMX vs. Web API

在 ASP.NET 生态中,实现 Web Service 主要有两种方式:

  • ASMX Web Service (已过时,但仍有遗留系统在使用)

    • 技术:基于 SOAP (Simple Object Access Protocol) 协议。
    • 数据格式:默认使用 XML。
    • 优点:非常简单,Visual Studio 可以一键生成客户端代理类。
    • 缺点:主要面向 SOAP,处理 JSON 不如 Web API 方便;RESTful 风格支持不佳。
    • 适用场景:维护旧的 ASMX 项目或必须使用 SOAP 协议的场景。
  • ASP.NET Web API (现代标准,强烈推荐)

    • 技术:基于 REST (Representational State Transfer) 架构风格。
    • 数据格式:原生支持 JSON,也支持 XML。
    • 优点:更轻量、更灵活、性能更高;完美契合现代前后端分离的开发模式;易于测试和扩展。
    • 缺点:概念上比 ASMX 稍复杂。
    • 适用场景:所有新的 Web Service 项目,尤其是需要为 Web、移动 App 提供数据接口的场景。

本教程将重点讲解 ASMX 的创建与调用,并介绍 Web API 作为现代替代方案。


第二部分:创建和发布 ASMX Web Service (经典方式)

我们将使用 Visual Studio 创建一个简单的 ASMX Web Service,该服务可以执行两个数字的加法和减法。

步骤 1:创建项目

  1. 打开 Visual Studio。
  2. 选择 "创建新项目" (Create a new project)。
  3. 在模板搜索框中输入 ASP.NET Web Application,然后选择模板并点击 "下一步"。
  4. 为项目命名,MyWebService,然后点击 "创建"。
  5. 在 "创建新的 ASP.NET Web 应用程序" 窗口中,选择 .NET Framework 作为框架版本(.NET Framework 4.8)。
  6. 在模板列表中,选择 "ASP.NET Web 应用程序" (不是空项目),然后点击 "创建"。

步骤 2:添加 Web Service (ASMX)

  1. 在 "解决方案资源管理器" 中,右键点击你的项目名称。
  2. 选择 "添加" -> "新建项..." (Add -> New Item...)。
  3. 在左侧选择 "Web",然后在中间列表中选择 "Web 服务" (Web Service)。
  4. 为服务命名,CalculatorService.asmx,然后点击 "添加"。

Visual Studio 会为你创建一个 CalculatorService.asmx 文件和一个对应的 CalculatorService.cs 代码文件。

步骤 3:编写服务方法

打开 CalculatorService.cs 文件,你会看到默认的 HelloWorld 方法,我们将删除它,并添加我们自己的 AddSubtract 方法。

关键点:

  • 方法必须是 public 的。
  • 默认情况下,ASMX Web Service 是无状态的,如果需要使用 Session,需要为方法添加 [WebMethod(EnableSession = true)] 特性。
  • 方法可以返回任何 .NET 数据类型(如 int, string, DataSet, 自定义对象等)。
// CalculatorService.cs
using System;
using System.Web.Services;
namespace MyWebService
{
    /// <summary>
    /// Summary description for CalculatorService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
    // [System.Web.Script.Services.ScriptService]
    public class CalculatorService : System.Web.Services.WebService
    {
        [WebMethod]
        public int Add(int a, int b)
        {
            return a + b;
        }
        [WebMethod]
        public int Subtract(int a, int b)
        {
            return a - b;
        }
    }
}

步骤 4:测试 Web Service

这是 ASMX 最方便的地方!

  1. 在 "解决方案资源管理器" 中,右键点击 CalculatorService.asmx 文件。
  2. 选择 "在浏览器中查看" (View in Browser)。

Visual Studio 会启动一个临时的开发服务器,并在浏览器中打开一个测试页面。

  1. 你会看到 AddSubtract 方法,点击 Add 链接。
  2. 页面会展开,显示两个输入框 ab,填入数字,105
  3. 点击 "调用" (Invoke) 按钮。
  4. 页面下方会返回一个 XML 格式的结果,显示 Add 方法的执行结果。
<?xml version="1.0" encoding="utf-8"?>
<int xmlns="http://tempuri.org/">15</int>

这个页面就是 ASMX 的 "自动发现" 和 "测试" 页面,非常方便开发调试。

步骤 5:发布 Web Service

当你的服务开发完成后,需要将其部署到 Web 服务器(如 IIS)上,才能让其他应用程序调用。

  1. 在 "解决方案资源管理器" 中,右键点击你的项目。
  2. 选择 "发布" (Publish)。
  3. 在 "发布" 窗口中,选择 "自定义"。
  4. 配置文件:可以新建一个,例如命名为 PublishProfile
  5. 发布方法:选择 "文件系统"
  6. 目标位置:选择一个本地文件夹(C:\inetpub\wwwroot\MyWebService),这将是你的网站根目录。
  7. 点击 "发布"。

发布成功后,你的 Web Service 文件(.asmx, .dll, .config 等)都会被复制到目标文件夹,你可以将这些文件部署到任何运行 IIS 的服务器上。


第三部分:调用 ASMX Web Service

假设我们已经将上面的 CalculatorService 部署到了 http://localhost/MyWebService/CalculatorService.asmx