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

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

主要就是加入 这段

<?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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/380939.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NLP_Bag-Of-Words(词袋模型)

文章目录 词袋模型用词袋模型计算文本相似度1.构建实验语料库2.给句子分词3.创建词汇表4.生成词袋表示5.计算余弦相似度6.可视化余弦相似度 词袋模型小结 词袋模型 词袋模型是一种简单的文本表示方法&#xff0c;也是自然语言处理的一个经典模型。它将文本中的词看作一个个独立…

ChatGPT高效提问—prompt常见用法(续篇七)

ChatGPT高效提问—prompt常见用法&#xff08;续篇七&#xff09; 1.1 零样本、单样本和多样本 ​ ChatGPT拥有令人惊叹的功能和能力&#xff0c;允许用户自由向其提问&#xff0c;无须提供任何具体的示例样本&#xff0c;就可以获得精准的回答。这种特性被称为零样本&#x…

Electron+Vue实现仿网易云音乐实战

前言 这个项目是我跟着官方文档的那个Electron入门教程大致跑了一遍,了解了下Electron开发流程之后的实战项目,所以中间应该是会有很多写法不是很规范,安全性有可能也没考虑到,可实现的各种api也不是很了解,适合初学者。 必须感谢 https://github.com/Binaryify/NeteaseC…

第二节课[Demo]作业

基础作业 使用 InternLM-Chat-7B 模型生成 300 字的小故事 user avatar 你是一个精通isekai的勇者&#xff0c;现在需要你讲述一段清新脱俗的异世界日常故事&#xff0c;字数300字以上robot avatar 在一个普通的早晨&#xff0c;我像往常一样起床、洗漱、吃早餐。但是&#xf…

力扣231. 2 的幂(数学,二分查找,位运算)

Problem: 231. 2 的幂 文章目录 题目描述思路即解法复杂度Code 题目描述 思路即解法 思路1&#xff1a;位运算 1.易验证2的幂为正数&#xff1b; 2.易得2的幂用二进制表示只能有一个位为数字1 3.即将其转换为二进制统计其二进制1的个数 思路2&#xff1a;数学 当给定数n大于1时…

基于tomcat运行jenkins常见的报错处理

目录 1.jenkins.util.SystemProperties$Listener错误 升级jdk11可能遇到的坑 2.java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration 3.There were errors checking the update sites: UnknownHostException:updates.jenkins.i…

redis双写一致

redis双写一致&#xff0c;指的是redis缓存与mysql数据同步 双写一致常见方案有很多&#xff1a; 同步双写&#xff1a;更新完mysql后立即同时更新redis mq同步&#xff1a;程序在更新完mysql后&#xff0c;投递消息到中间键mq&#xff0c;一个程序监听mq&#xff0c;获得消…

全网最快2024刘谦春晚魔术揭秘

早点关注我&#xff0c;精彩不错过&#xff01; 来来来&#xff0c;我的手机快被私信爆炸了&#xff0c;一次性给大家说清楚。 原版 Woody Arogon的教学《Woodyland》 数学原理 约瑟夫问题与魔术&#xff08;五&#xff09;——魔术《自我匹配的奇迹》中的数学原理 魔术原理 约…

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新-------------- doris的routineload&#xff0c;就是从kafka中加载数据到表&#xff0c;特点是定时、周期性的从kafka取数据。 要想在本地开发测试routine load相关功能&#xff0c;需要配置kafka环境&#xff0c;尤其是需要增加routine load回…

春晚刘谦第二个魔术原理讲解

目录 1. 先说一下步骤&#xff1a;2. 原理讲解&#xff1a;2.1 第一步分析2.1 第二步分析2.1 第三步分析2.1 第四步分析2.1 第五步分析2.1 第六步分析2.1 第七步分析2.1 第八步分析2.1 第七步重新分析 小结&#xff1a; 首先&#xff0c;先叠个甲。我本人很喜欢刘谦老师&#x…

C语言函数的栈帧与销毁(面试亮点)

目录 如果你能熟练的掌握函数的栈帧与销毁在面试中是及其亮眼的加分项&#xff0c;所以我们来以实例来将解函数是如何实现栈帧与销毁的。 一. 函数栈帧 二.寄存器 三. 用例题讲解创建栈帧的过程 3.1 main 函数的反汇编代码。 第一步&#xff1a;给调用main函数的函数分配…

使用 Elasticsearch 和 OpenAI 构建生成式 AI 应用程序

本笔记本演示了如何&#xff1a; 将 OpenAI Wikipedia 向量数据集索引到 Elasticsearch 中使用 Streamlit 构建一个简单的 Gen AI 应用程序&#xff0c;该应用程序使用 Elasticsearch 检索上下文并使用 OpenAI 制定答案 安装 安装 Elasticsearch 及 Kibana 如果你还没有安装好…

Linux死机排查方法——内存日志

一般情况下&#xff0c;Linux系统在死机时会产生一些dump信息&#xff0c;例如oops&#xff0c;通过分析oops信息就可以基本定位问题所在&#xff0c;但有些特殊情况下死机时&#xff0c;没有任何的打印的信息。如果直接使用printk等打印排查问题&#xff0c;有可能会因为print…

生成式人工智能攻击的一年:2024

趋势科技最近公布了其关于预期最危险威胁的年度研究数据。生成人工智能的广泛可用性和质量将是网络钓鱼攻击和策略发生巨大变化的主要原因。 趋势科技宣布推出“关键可扩展性”&#xff0c;这是著名年度研究的新版本&#xff0c;该研究分析了安全形势并提出了全年将肆虐的网络…

以管理员权限删除某文件夹

到开始菜单中找到—命令提示符—右击以管理员运行 使用&#xff1a;del /f /s /q “文件夹位置” 例&#xff1a;del /f /s /q "C:\Program Files (x86)\my_code\.git"

动态SQl简单创建

创建pojo实体类&#xff0c;使用lombok注解 package com.example.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.time.LocalDate; import java.time.LocalDateTime;Data NoArgsConstructor AllArgsConstructor pu…

记:STM32F4参考手册-存储器和总线架构

STM32F4参考手册-存储器和总线架构 系统架构 主系统由32位多层AHB总线矩阵构成&#xff0c;可实现以下部分部分的互连&#xff1a; 八条主控总线&#xff1a; Cortex-M4F内核I总线、D总线和S总线 DMA1存储器总线 DMA2存储器总线 DMA2外设总线 以太网DMA总线 USB OTG HS DMA总线…

秒杀相关问题解决

秒杀 超卖问题 如下,我们先来复现问题,抢购秒杀券的代码逻辑也是很简单, 先判断优惠券是否开始了,是的化,判断库存是否充足,如果是的化,扣减库存,最后创建订单 如下是代码 Override Transactional public Result seckillVoucher(Long voucherId) {//1.查询优惠券SeckillVo…

力扣刷题之旅:进阶篇(六)—— 图论与最短路径问题

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 引言 在算法的广阔天地中&#xff0c;图论是一个非常重要的领域。…

linux 07 存储管理

02. ext4是一种索引文件系统 上面是索引节点inode&#xff0c;存放数据的元数据 下面是存储块block&#xff0c;主要存放有关的信息 03.linux上的inode 查看文件中的inode ll -i 文件名 磁盘中的inode与文件数量 向sdb2中写文件&#xff1a; 结果&#xff1a; df -i 磁…