Web Services 服务 是不是过时了?创建 Web Services 服务实例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。

Web Services 是不是过时了?

今天是兔年最后一天,先给大家拜个早年 。

昨天上午视频面试一家公司需要开发Web Services 服务,这个也没有什么,但还需要用 VB.net 开发。这个是多古老的语言了,让我想起来了 10年 前 写 VBA 的时候,那就写了一个玩玩?


前言

网上百度了下:基础知识大家了解下 :

选择使用 Web Services 还是 Web API 取决于您的具体需求和技术栈。这两者都是用于实现分布式系统和服务的技术,但它们有一些区别。


Web Services:

SOAP (Simple Object Access Protocol): Web Services 常基于 SOAP 协议,这是一种使用 XML 格式进行通信的协议。

协议和标准: Web Services 通常严格遵循一系列协议和标准,如 WSDL (Web Services Description Language) 用于描述服务,UDDI (Universal Description, Discovery, and Integration) 用于服务的发现。

跨语言性: 由于使用了标准化的协议和格式,Web Services 可以在不同平台和语言之间进行通信。


Web API:

RESTful (Representational State Transfer): Web API 常基于 RESTful 架构,使用 JSON 或 XML 进行数据传输。

轻量级: 相对于 Web Services,Web API 更轻量级,通常使用 HTTP 协议进行通信,不像 Web Services 那样依赖较多的协议和标准。

更简单: Web API 更简单易用,通常适合构建基于 HTTP 的轻量级服务,特别是在移动应用和单页应用中。

一、准备工作


上午查了一些资料

需要安装 mysql 数据库 8.0

需要安装 Microsoft Visual Studio Professional 2022 + vb.net

需要安装 IIS 服务

需要安装 mysql-connector-net-8.3.0 库

自己的 系统是 windows 10

好了基本就些就是开发环境了

二、基本配置步骤

1.选择 web 服务 asmx 服务

2.引用 mysql package

下载地址 https://dev.mysql.com/downloads/connector/net/

需要先安装 mysql 驱动

然后选择 dll 应用

最后 本code 使用是网上的 classicmodels 数据库

可以去下载 classicmodels 数据库具体如下


点击:classicmodels

也可以去 下面我的博客资源下载

https://download.csdn.net/download/tomxjc/88685970

用的是 MySQL 8.0


3.web.config 文件加入数据库connectionString

主要就是加入 这段

<?xml version="1.0" encoding="utf-8"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>

    <connectionStrings>
    <add name="MySqlConnection"
       connectionString="Server=localhost;Database=classicmodels;User Id=root;Password=123456;"
       providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
  
  <system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.7.2" />


  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
</configuration>


在 vb 中调用的语法是

Public connectionString As String = ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString

4.然后写一个 select 的方法

 <WebMethod()>
 Public Function QueryDatabase() As String
     Dim result As String = ""
     Try
         Using connection As New MySqlConnection(connectionString)
             connection.Open()
             ' Specify your MySQL query
             Dim query As String = "SELECT * FROM Products where ='Classic Cars'"
             ' Execute the query
             Using command As New MySqlCommand(query, connection)
                 Using reader As MySqlDataReader = command.ExecuteReader()
                     Dim xmlResult As New XmlDocument()

                     ' Create the root element
                     Dim rootElement As XmlElement = xmlResult.CreateElement("Data")
                     xmlResult.AppendChild(rootElement)
                     While reader.Read()
                         ' Create individual data elements
                         Dim dataElement As XmlElement = xmlResult.CreateElement("Item")
                         Dim idElement As XmlElement = xmlResult.CreateElement("productCode")
                         idElement.InnerText = reader("productCode").ToString()
                         dataElement.AppendChild(idElement)
                         Dim nameElement As XmlElement = xmlResult.CreateElement("productName")
                         nameElement.InnerText = reader("productName").ToString()
                         dataElement.AppendChild(nameElement)
                         Dim lineElement As XmlElement = xmlResult.CreateElement("productline")
                         lineElement.InnerText = reader("productline").ToString()
                         dataElement.AppendChild(lineElement)
                         Dim descElement As XmlElement = xmlResult.CreateElement("productDescription")
                         descElement.InnerText = reader("productDescription").ToString()
                         dataElement.AppendChild(descElement)
                         rootElement.AppendChild(dataElement)
                     End While
                     result = xmlResult.OuterXml
                 End Using
             End Using
         End Using
     Catch ex As Exception
         ' Handle exceptions
         result = $"<Error>{ex.Message}</Error>"
     End Try

     Return result
 End Function


验证数据

结果返回是这样,返回是 字符类型,不是应该自动识别的吗?看来是没有XML序列化

5.方法改造 XML序列化

 <WebMethod()>
 Public Function QueryDatabaseXmlSerializer() As XmlDocument
     '这个表代码XML序列化 并返回 XmlDocument 类型
     Dim xmlDoc As New XmlDocument()

     Try
         Using connection As New MySqlConnection(connectionString)
             connection.Open()

             ' Specify your MySQL query
             Dim query As String = "SELECT * FROM Products WHERE productline = 'Classic Cars'"

             ' Execute the query
             Using command As New MySqlCommand(query, connection)
                 Using reader As MySqlDataReader = command.ExecuteReader()
                     Dim items As New List(Of Products)()

                     While reader.Read()
                         ' Create instances of the Item class and populate them
                         Dim item As New Products() With {
                             .productCode = reader("productCode").ToString(),
                             .productName = reader("productName").ToString(),
                             .productline = reader("productline").ToString(),
                             .productDescription = reader("productDescription").ToString()
                         }

                         items.Add(item)
                     End While

                     ' Serialize the list of items to XML
                     Dim serializer As New XmlSerializer(GetType(List(Of Products)))
                     Using writer As XmlWriter = xmlDoc.CreateNavigator().AppendChild()
                         serializer.Serialize(writer, items)
                     End Using
                 End Using
             End Using
         End Using

         Return xmlDoc
     Catch ex As Exception
         ' Handle exceptions
         Dim errorDoc As New XmlDocument()
         errorDoc.LoadXml($"<Error>{ex.Message}</Error>")
         Return errorDoc
     End Try
 End Function


在加入一个类

Public Class Products
    Public Property productCode As String
    Public Property productName As String
    Public Property productDescription As String
    Public Property productline As String
End Class

再验证一下

6.写一个带参数的

<WebMethod()>
Public Function QueryProductByCodeXmlSerializer(productCode As String) As XmlDocument
    Dim xmlDoc As New XmlDocument()
    Try
        Using connection As New MySqlConnection(connectionString)
            connection.Open()
            ' Specify your MySQL query with a parameter
            Dim query As String = "SELECT * FROM Products WHERE productCode = @ProductCode"

            ' Execute the query
            Using command As New MySqlCommand(query, connection)
                ' Add the parameter to the command
                command.Parameters.AddWithValue("@ProductCode", productCode)

                Using reader As MySqlDataReader = command.ExecuteReader()
                    Dim items As New List(Of Products)()

                    While reader.Read()
                        ' Create instances of the Products class and populate them
                        Dim item As New Products() With {
                        .productCode = reader("productCode").ToString(),
                        .productName = reader("productName").ToString(),
                        .productline = reader("productline").ToString(),
                        .productDescription = reader("productDescription").ToString()
                    }

                        items.Add(item)
                    End While

                    ' Serialize the list of items to XML
                    Dim serializer As New XmlSerializer(GetType(List(Of Products)))
                    Using writer As XmlWriter = xmlDoc.CreateNavigator().AppendChild()
                        serializer.Serialize(writer, items)
                    End Using
                End Using
            End Using
        End Using

        Return xmlDoc
    Catch ex As Exception
        ' Handle exceptions
        Dim errorDoc As New XmlDocument()
        errorDoc.LoadXml($"<Error>{ex.Message}</Error>")
        Return errorDoc
    End Try
End Function


验证数据

显示

7.写一个 Insert的方法

mysql 建表

CREATE TABLE `china_city` (
  `citycode` varchar(10) NOT NULL,
  `city` varchar(50) NOT NULL,
  PRIMARY KEY (`citycode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

代码先写了 类

Public Class ChinaCity
    Public Property CityCode As String
    Public Property City As String
End Class
<WebMethod()>
Public Function InsertCity(cityCode As String, cityName As String) As XmlDocument
    Dim errorDoc, successfulDoc As New XmlDocument()
    Try
        Using connection As New MySqlConnection(connectionString)
            connection.Open()

            ' Specify your MySQL insert query
            Dim query As String = "INSERT INTO china_city (citycode, city) VALUES (@CityCode, @CityName)"

            ' Execute the insert query
            Using command As New MySqlCommand(query, connection)
                ' Add parameters to the command
                command.Parameters.AddWithValue("@CityCode", cityCode)
                command.Parameters.AddWithValue("@CityName", cityName)
                ' Execute the insert query
                Dim rowsAffected As Integer = command.ExecuteNonQuery()
                ' Check if the insertion was successful
                If rowsAffected > 0 Then
                    successfulDoc.LoadXml($"<Result>Insertion successful</Result>")
                    Return successfulDoc
                Else
                    errorDoc.LoadXml($"<Error>No rows inserted</Error>")
                    Return errorDoc
                End If
            End Using
        End Using
    Catch ex As Exception
        ' Handle exceptions
        errorDoc.LoadXml($"<Error>{ex.Message}</Error>")
        Return errorDoc
    End Try
End Function

验证数据

8.最后疑问?Web Services 和Web API 那个运用的更广泛呢?

chatGPT 给出了答案


总结

以上源码下载如下https://download.csdn.net/download/tomxjc/88822612

好了,今天就介绍到这里。希望大家喜欢, 一键三连 ,福星高照



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
13 1
|
10天前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
11天前
|
云安全 SQL 安全
数字时代下的Web应用程序安全:漏洞扫描服务的功能与优势
在当今这个数字化时代,Web应用程序不仅是企业与用户之间互动的桥梁,更是企业展示服务、传递价值的核心平台。然而,随着技术的不断进步,Web应用程序的复杂性也在不断增加,这为恶意攻击者提供了可乘之机。安全漏洞的频发,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等,严重威胁着企业的数据安全、服务稳定性乃至经济利益。在这样的背景下,漏洞扫描服务作为一道重要的安全防线,显得尤为重要。本文将深入探讨漏洞扫描服务在面对Web应用程序安全问题时,所具备的功能优势。
|
2月前
|
JSON 定位技术 数据格式
web GIS神器,一行命令快捷构建精灵图服务
web GIS神器,一行命令快捷构建精灵图服务
|
2月前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
61 0
|
2月前
|
Java 网络架构 数据格式
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `&lt;rest&gt;` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
48 0
|
2月前
|
前端开发 API 开发者
JSF与RESTful服务的完美邂逅:如何打造符合现代Web潮流的数据交互新体验
【8月更文挑战第31天】随着互联网技术的发展,RESTful架构风格因其实现简便与无状态特性而在Web服务构建中日益流行。本文探讨如何结合JavaServer Faces (JSF) 和 JAX-RS 构建RESTful API,展示从前端到后端分离的完整解决方案。通过定义资源类、配置 `web.xml` 文件以及使用依赖注入等步骤,演示了在JSF项目中实现RESTful服务的具体过程,为Java开发者提供了实用指南。
36 0
|
2月前
|
JSON API 数据库
探索FastAPI:不仅仅是一个Python Web框架,更是助力开发者高效构建现代化RESTful API服务的神器——从环境搭建到CRUD应用实战全面解析
【8月更文挑战第31天】FastAPI 是一个基于 Python 3.6+ 类型提示标准的现代 Web 框架,以其高性能、易用性和现代化设计而备受青睐。本文通过示例介绍了 FastAPI 的优势及其在构建高效 Web 应用中的强大功能。首先,通过安装 FastAPI 和 Uvicorn 并创建简单的“Hello, World!”应用入门;接着展示了如何处理路径参数和查询参数,并利用类型提示进行数据验证和转换。
56 0
|
2月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
41 0
|
3天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
22 3