Web Services 是不是过时了?

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

文章目录

  • Web Services 是不是过时了?
  • 前言
  • 一、准备工作
  • 二、基本配置步骤
    • 1.选择 web 服务 asmx 服务
    • 2.引用 mysql package
    • 3.web.config 文件加入数据库connectionString
    • 4.然后写一个 select 的方法
    • 5.方法改造 XML序列化
    • 6.写一个带参数的
    • 7.写一个 Insert的方法
    • 8.最后疑问?Web Services 和Web API 那个运用的更广泛呢?
  • 总结

前言

网上百度了下:基础知识大家了解下 :
选择使用 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

主要就是加入 这段

<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=\"Web\" /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 = $"{ex.Message}" 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($"{ex.Message}") Return errorDoc End Try End Function

在加入一个类

Public Class ProductsPublic Property productCode As StringPublic Property productName As StringPublic Property productDescription As StringPublic Property productline As StringEnd Class

再验证一下

6.写一个带参数的

<WebMethod()>Public Function QueryProductByCodeXmlSerializer(productCode As String) As XmlDocumentDim xmlDoc As New XmlDocument()TryUsing connection As New MySqlConnection(connectionString)connection.Open()' Specify your MySQL query with a parameterDim query As String = "SELECT * FROM Products WHERE productCode = @ProductCode"' Execute the queryUsing command As New MySqlCommand(query, connection)' Add the parameter to the commandcommand.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 themDim 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 XMLDim serializer As New XmlSerializer(GetType(List(Of Products)))Using writer As XmlWriter = xmlDoc.CreateNavigator().AppendChild()serializer.Serialize(writer, items)End UsingEnd UsingEnd UsingEnd UsingReturn xmlDocCatch ex As Exception' Handle exceptionsDim errorDoc As New XmlDocument()errorDoc.LoadXml($"{ex.Message}")Return errorDocEnd TryEnd 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 ChinaCityPublic Property CityCode As StringPublic Property City As StringEnd Class
<WebMethod()>Public Function InsertCity(cityCode As String, cityName As String) As XmlDocumentDim errorDoc, successfulDoc As New XmlDocument()TryUsing connection As New MySqlConnection(connectionString)connection.Open()' Specify your MySQL insert queryDim query As String = "INSERT INTO china_city (citycode, city) VALUES (@CityCode, @CityName)"' Execute the insert queryUsing command As New MySqlCommand(query, connection)' Add parameters to the commandcommand.Parameters.AddWithValue("@CityCode", cityCode)command.Parameters.AddWithValue("@CityName", cityName)' Execute the insert queryDim rowsAffected As Integer = command.ExecuteNonQuery()' Check if the insertion was successfulIf rowsAffected > 0 ThensuccessfulDoc.LoadXml($"Insertion successful")Return successfulDocElseerrorDoc.LoadXml($"No rows inserted")Return errorDocEnd IfEnd UsingEnd UsingCatch ex As Exception' Handle exceptionserrorDoc.LoadXml($"{ex.Message}")Return errorDocEnd TryEnd Function

验证数据

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

chatGPT 给出了答案

总结

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

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