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

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

下载地址 dev.mysql.com/downloads/c... 需要先安装 mysql 驱动

然后选择 dll 应用

最后 本code 使用是网上的 classicmodels 数据库 可以去下载 classicmodels 数据库具体如下 点击:classicmodels 用的是 MySQL 8.0

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

主要就是加入 这段

xml 复制代码
<?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 中调用的语法是

vbnet 复制代码
Public connectionString As String = ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString

4.然后写一个 select 的方法

vbnet 复制代码
 <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序列化

vbnet 复制代码
 <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

在加入一个类

vbnet 复制代码
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

再验证一下

可以看到已经xml 序列化了

6.写一个带参数的

vbnet 复制代码
<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 建表

sql 复制代码
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;

代码先写了 类

vbnet 复制代码
Public Class ChinaCity
    Public Property CityCode As String
    Public Property City As String
End Class
vbnet 复制代码
<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 那个运用的更广泛呢? 答案是 Web API

chatGPT 给出了答案

总结

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

相关推荐
2401_857622666 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589366 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
哎呦没8 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch8 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码9 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries10 小时前
读《show your work》的一点感悟
后端
A尘埃10 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-230710 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code10 小时前
(Django)初步使用
后端·python·django
代码之光_198010 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端