扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
WebService目前可是目前计算机界一个非常流行的技术了 以至于有些人把WebService列入目前最热门的十大技术之一 的确随着互联网的广泛应用和发展 尤其是电子商务的发展 出于互联网上各种复杂的应用系统和对更高安全性的要求 WebService的横空出世的确满足了当前这些的要求和需要 其中的原因在下文中有详细的介绍 本文的主要内容是简要介绍一下WebService的相关知识 以及使用VisualBasic Net实现WebServices的具体方法和典型步骤
创新互联建站主要从事成都做网站、成都网站制作、成都外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务麻阳,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
一 WebService为何物 我们为什么需要它
WebService的主要功能就是可以实现实现跨平台的功能调用 同时由于WebService中使用XML来进行数据交换 所以在使用WebService时不用担心防火墙的影响 由于WebService集成了各种功能 并提供了一个友好的界面 所以在WebService能够实现软件的重用
另外WebService的调用非常简单 简而言之调用互联网上的WebService就如同调用本地的组件一样简单 就是通过HTTP协议来调用互联网上的组件 至于具体的调用方法 请参阅本文第五节第七段的内容 所以Web Service就是互联网上的组件调用
二 和Web Service相关的标准 协议
Web Service是通过一系列标准和协议来保证和程序之间的动态连接和实现其安全调用的 其中主要的标准和协议是 XML WSDL SOAP HTTP UDDI 下面就简要介绍这些标准和协议
XML Web Service之间和Web Service和应用程序之间都是采用XML进行数据交换的 Web Service由于基于了XML 这样Web Service在具备XML带来的优势的同时 也拥有了由于XML所带来的缺点 其中XML所带来的最重要缺点就是Web Service将大量的占有CPU的资源 因为XML数据要经过多步处理才能被系统使用 所以 即使调用一个功能较小的Web Service 也会感觉速度很慢 所以网络中对运行Web Service的主机要求是很高的
HTTP 应用程序是提供HTTP协议来调用Web Service的 所以HTTP在Web Service调用过程中 起著通道的作用
WSDL 是Web Service描述语言的简写 它是XML格式 其作用是描述Web Service 指示应用程序和与Web Servie交互的方法 当实现了某种Web Service服务时 为了让别的程序调用 就必须告诉此Web Service的接口 如 服务名称 服务所在的机器名称 监听端口号 传递参数的类型等等 WSDL就是规定了有关Web Services描述的标准
UDDI 是Universal Description Discovery and Integration的缩写 简单说 UDDI用于集中存放和查找WSDL描述文件 起著目录服务器的作用
SOAP 是 Simple Object Access Protocol 的缩写 即 简单对象访问协议 SOAP是一种消息传递的协议 它规定了Web Services之间传递信息的方式
三 本文章的程序设计 调试和运行的环境
( ) 微软公司视窗 中文企业版
( ) Visual Studio Net 企业构建版 Net FrameWork SDK 版本号
( ) IIS服务启动
四 Visual Basic Net实现Web Service
Net 的大的推动了Web Service的发展 而Visual Studio Net的出现又极大的推动了Web Service的的广泛应用 在Visual Studio Net推出之前 编写一个Web Service是一项非常复杂的工作 同样调用这个Web Service也十分麻烦 由于Visual Studio Net对Web Service提供了较强的支持 很多细致 烦杂的工作都由Visual Studio Net自动完成了 这样就使得上述工作变得非常简单 甚至不了解Web Service和其相关的标准 协议 也可以使用Visual Studio Net编写Web Service 并使用这个Web Service 下面就来用Visual Basic Net实现一个Web Service 此Web Service和数据库相关 数据库类型选用的是Sql Server 此Web Service提供了二个函数功能调用 其一名称为Binding 用以实现数据绑定 其二名称为Update 用以更新数据库中的数据
以下就是Visual Basic Net实现此Web Service的具体步骤
启动Visual Studio Net
选择菜单「文件」|「新建」|「项目」后 弹出「新建项目」对话框
将「项目类型」设置为「Visual Basic项目」
将「模板」设置为「ASP NET Web 服务」
在「位置」的文本框中输入//localhost/UpdateDataWebService 后 单击「确定」按钮 这样在Visual Studio Net就会计算机Internet信息服务的默认目录中创建一个名称为 UpdateDataWebService 文件夹 里面存放的是此项目的文件 具体如图 所示
图 创建Web Service项目对话框
选中「解决方案资源管理器」中的 Service a *** x 文件 单击鼠标右键 在弹出的菜单中选择「查看代码」 则进入Service a *** x vb的编辑界面
在Service a *** x……vb的首部 在导入命名空间的代码区中添加下列代码 下列代码作用是导入命名空间System Data SqlClient
Imports System Data SqlClient
在Service a *** x……vb文件的 Public Class Service Inherits System Web Services WebService 代码后 添加下列代码 下列代码是在Web Service中定义二个功能调用
WebMethod ( ) Public Function Binding ( ) As DataSet Dim con As New SqlConnection ( Server = localhost ; uid = sa ; pwd = ; database = northwind ) Dim daCust As New SqlDataAdapter ( Select * From Customers con ) Dim ds As New DataSet ( ) daCust Fill( ds Cust ) Return dsEnd FunctionWebMethod ( ) Public Function Update ( ByVal ds As DataSet ) As DataSet Dim con As New SqlConnection ( Server = localhost ; uid = sa ; pwd = ; database = northwind ) Dim daCust As New SqlDataAdapter ( Select * From Customers con ) Dim cbCust As New SqlCommandBuilder ( daCust ) daCust Update ( ds Cust ) Return dsEnd Function
保存上述的修改 一个简单的操作Sql Server数据库的Web Service就完成了 此时单击快捷键F 此Web Service就开始运行 并可以对外提供服务了 具体如图 所示:
图 :Web Service提供服务是的界面
Service a *** x vb的代码清单如下:
Imports System Web ServicesImports System Data SqlClientWebService ( Namespace := ) _Public Class Service Inherits System Web Services WebServiceWebMethod ( ) Public Function Binding ( ) As DataSet Modify this Connection string to use your SQL Server and log on Dim con As New SqlConnection ( Server=localhost;uid=sa;pwd=;database=northwind ) Dim daCust As New SqlDataAdapter ( Select * From Customers con ) Dim ds As New DataSet ( ) daCust Fill ( ds Cust ) Return dsEnd FunctionWebMethod ( ) Public Function Update ( ByVal ds As DataSet ) As DataSet Dim con As New SqlConnection ( Server=localhost;uid=sa;pwd=;database=northwind ) Dim daCust As New SqlDataAdapter ( Select * From Customers con ) Dim cbCust As New SqlCommandBuilder ( daCust ) daCust Update ( ds Cust ) Return dsEnd Function#Region Web 服务设计器生成的代码 Public Sub New ( ) MyBase New ( ) 该调用是 Web 服务设计器所必需的 InitializeComponent ( ) 在 InitializeComponent ( ) 调用之后添加您自己的初始化代码End Sub Web 服务设计器所必需的Private ponents As System ComponentModel IContainer 注意 以下过程是 Web 服务设计器所必需的 可以使用 Web 服务设计器修改此过程 不要使用代码编辑器修改它 System Diagnostics DebuggerStepThrough ( ) Private Sub InitializeComponent ( ) ponents = New System ComponentModel Container ( )End SubProtected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean ) CODEGEN: 此过程是 Web 服务设计器所必需的 不要使用代码编辑器修改它 If disposing Then If Not ( ponents Is Nothing ) Thenponents Dispose ( ) End IfEnd IfMyBase Dispose ( disposing )End Sub#End Region Web 服务示例 HelloWorld ( ) 示例服务返回字符串 Hello World 若要生成项目 请取消注释以下行 然后保存并生成项目 若要测试此 Web 服务 请确保 a *** x 文件为起始页 并按 F 键 WebMethod ( ) Public Function HelloWorld ( ) As String HelloWorld = Hello World End FunctionEnd Class
下面就来介绍Visual Basic Net中使用这个Web Service提供的服务来更新数据库的实现方法
五 在Visual Basic Net调用Web Service提供的服务:
当Web Service已经处于对外提供服务状态 Visual Basic Net就可以通过HTTP 调用 来使用这些服务了 当然前提是要了解Web Service对外提供服务所对应的URL 当了解到Web Service对应的URL后 Visual Basic Net就像是使用本地的类库一样使用Web Service中提供的各种功能 所以有些人说 Web Service从实质上说 就是通过HTTP调用远程组件的一种方式 在Visual Basic Net具体实现加入Web Service可参阅下面步骤中的第七步
在下面介绍的这个数据库应用程序是通过使用上面的Web Service中提供的 Binding 服务 对程序中DataGrid组件实现数据绑定 提供使用Web Service中提供的 Update 服务 通过程序中的DataGrid来修改数据库 下面就是Visual Basic Net中使用Web Service提供服务来编写数据库应用程序的具体步骤 :
启动Visual Studio Net
选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框
将【项目类型】设置为【Visual Basic项目】
将【模板】设置为【Windows应用程序】
在【名称】文本框中输入【TestWebService】
在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 这样在 E:\VS NET项目 中就产生了名称为 TestWebService 文件夹 里面存放的就是TestWebService项目的所有文件
选择【解决方案资源管理器】|【引用】后 单击鼠标右键 在弹出的菜单中选择【添加Web 引用】 在弹出的【添加Web引用】对话框中的【地址】文本框中输入 后 单击回车键后 可得图 所示界面 单击图 中【添加引用】按钮 则在【TestWebService】项目中加入了Web引用 请注意 就是上面完成的Web Service对外提供服务的URL地址 具体可参阅图 所示:
图 :在【TestWebService】添加Web Service提供的服务
从【工具箱】中的【Windows窗体组件】选项卡中往Form 窗体中拖入下列组件 并执行相应的操作:
一个DataGrid组件
二个Button组件 分别是Button 至Button 并在这二个Button组件拖入Form 的设计窗体后 分别双击它们 则系统会在Form vb文件分别产生这二个组件的Click事件对应的处理代码
按照表 所示调整窗体中各组件属性的数值
组件类型 组件名称 属性 设置结果 Form Form Text 测试Web Service Form MaximizeBox False Form FormBorderStyle FixedSingle Button Button Text 绑定 Button FlatStyle Flat Button Text 修改 Button FlatStyle Flat
表 :【TestWebService】项目中组件的主要属性及其对应数值
在调整完组件属性值后 再按照图 所示调整组件的位置和排列顺序:
图 :【TestWebService】项目中组件排列位置和顺序
把Visual Studio Net的当前窗口切换到Form vb的代码编辑窗口 并用下列代码替换Form vb中的Button 的Click事件对应的处理代码 下列代码功能是使用Web Service中提供的 Binding 服务对DataGrid组件实现数据绑定:
Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim MyService As New localhost Service ( ) DataGrid DataSource = MyService Binding ( ) DataGrid DataMember = Cust End Sub
用下列代码替换Form vb中的Button 的Click事件对应的处理代码 下列代码功能是使用Web Service中提供的 Update 服务实现通过DataGrid来修改数据库数据:
Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim MyService As New localhost Service ( ) Dim ds As DataSet = DataGrid DataSource Dim dsChanges As DataSet = ds GetChanges ( ) If Not ( dsChanges Is Nothing ) Thends Merge ( MyService Update ( dsChanges ) True ) End IfEnd Sub
至此 【TestWebService】项目的全部工作就完成了 调用Web Service是不是很简单 此时单击快捷键F 运行程序后 单击程序中的【绑定】按钮就会对程序中的DataGrid组件实现数据绑定 单击程序中的【修改】按钮 则程序会根据DataGrid中的内容来更新数据库 图 就是【TestWebService】的运行界面:
图 :【TestWebService】的运行界面
Form vb的代码清单如下:
Public Class Form Inherits System Windows Forms Form#Region Windows 窗体设计器生成的代码 Public Sub New ( ) MyBase New ( ) 该调用是 Windows 窗体设计器所必需的 InitializeComponent ( ) 在 InitializeComponent ( ) 调用之后添加任何初始化End Sub 窗体重写处置以清理组件列表 Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean ) If disposing ThenIf Not ( ponents Is Nothing ) Then ponents Dispose ( )End If End If MyBase Dispose ( disposing )End Sub Windows 窗体设计器所必需的Private ponents As System ComponentModel IContainer 注意 以下过程是 Windows 窗体设计器所必需的 可以使用 Windows 窗体设计器修改此过程 不要使用代码编辑器修改它 Friend WithEvents Button As System Windows Forms Button Friend WithEvents Button As System Windows Forms Button Friend WithEvents DataGrid As System Windows Forms DataGrid System Diagnostics DebuggerStepThrough ( ) Private Sub InitializeComponent ( ) Me Button = New System Windows Forms Button ( ) Me Button = New System Windows Forms Button ( ) Me DataGrid = New System Windows Forms DataGrid ( ) CType ( Me DataGrid System ComponentModel ISupportInitialize ) BeginInit ( ) Me SuspendLayout ( ) Me Button FlatStyle = System Windows Forms FlatStyle Flat Me Button Location = New System Drawing Point ( ) Me Button Name = Button Me Button Size = New System Drawing Size ( ) Me Button TabIndex = Me Button Text = 绑定 Me Button FlatStyle = System Windows Forms FlatStyle Flat Me Button Location = New System Drawing Point ( ) Me Button Name = Button Me Button Size = New System Drawing Size ( ) Me Button TabIndex = Me Button Text = 修改 Me DataGrid DataMember = Me DataGrid Dock = System Windows Forms DockStyle Top Me DataGrid HeaderForeColor = System Drawing SystemColors ControlText Me DataGrid Name = DataGrid Me DataGrid Size = New System Drawing Size ( ) Me DataGrid TabIndex = Me AutoScaleBaseSize = New System Drawing Size ( ) Me ClientSize = New System Drawing Size ( ) Me Controls AddRange ( New System Windows Forms Control ( ) {Me DataGrid Me Button Me Button } ) Me Name = Form Me Text = 测试Web Service CType ( Me DataGrid System ComponentModel ISupportInitialize ) EndInit ( ) Me ResumeLayout ( False )End Sub#End RegionPrivate Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim MyService As New localhost Service ( ) DataGrid DataSource = MyService Binding ( ) DataGrid DataMember = Cust End SubPrivate Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim MyService As New localhost Service ( ) Dim ds As DataSet = DataGrid DataSource Dim dsChanges As DataSet = ds GetChanges ( ) If Not ( dsChanges Is Nothing ) Thends Merge ( MyService Update ( dsChanges ) True ) End IfEnd SubEnd Class
六 总结
lishixinzhi/Article/program/net/201311/11839
Dim clh As ColumnHeader '声明列表头
Dim rs As New ADODB.Recordset '声明一个变量
lv.ColumnHeaders.Clear’Lv清空列表头
lv.ListItems.Clear '清空列表
lv.GridLines = True '显示格线
lv.FullRowSelect = True '整行选择模式
lv.View = lvwReport ’设置视图为列表视图
rs.Open "select * from 入库", Cnn '运行查询
For i = 0 To rs.Fields.Count - 1 ’for循环,所有记录表的字段
Set clh = lv.ColumnHeaders.Add(, , rs.Fields(i).Name) ’添加列表头与rs字段相同的名字
Next
lv.GridLines = True ’显示网格
lv.FullRowSelect = True ’整行模式选择
lv.View = lvwReport ’设置视图为列表视图
Set RsPage = rs ’复制rs
RsPage.PageSize = 40 ’每页显示40个记录
Label5.Caption = RsPage.PageCount ’显示页的数量
If rs.EOF = True Then ’判断是记录的结束
Label7.Caption = 0 ’显示0
Label5.Caption = 0 ’显示0
For i = 1 To 4
Label1(i).Enabled = False ’禁用标签1-4
Next
Else '判断不是记录的结束
Label7.Caption = 1 ’显示1
RsPage.MoveFirst '移到第一个记录
Call ShowPage(RsPage, 1) ’显示第一页
End If
End Sub
Private Sub ShowPage(rs As Recordset, nPage As Integer)
rs.AbsolutePage = nPage '显示参数nPage页
lv.ListItems.Clear '列表清空
Dim item As ListItem ’声明列表
For i = 1 To 40
If rs.EOF = True Then Exit Sub ’判断是记录的结束,退出函数
Set item = lv.ListItems.Add(, , Trim(rs.Fields(0).Value)) ’添加列表行,0字段的值
For j = 1 To rs.Fields.Count - 1
item.SubItems(j) = IIf(IsNull(rs.Fields(j)), "", Trim(rs.Fields(j))) ’填写行的其他字段
Next
rs.MoveNext '移到下一个记录
Next
End Sub
Private Sub Command2_Click()
If Text2.Text "" Then
FrmPJsy.Show 'text2得值不为空时,FrmPJsy显示
End If
End Sub
Private Sub lv_Click()
If lv.ListItems.Count = 1 Then ’如果行数不小于1
For i = 1 To lv.ListItems.Count
If lv.ListItems(i).Selected Then ’ 显示记录的每一段的内容
Text1(6).Text = Trim(lv.ListItems(i).Text)
Text1(0).Text = Trim(lv.ListItems(i).SubItems(1))
Text1(1).Text = Trim(lv.ListItems(i).SubItems(2))
Text1(2).Text = Trim(lv.ListItems(i).SubItems(3))
Text1(3).Text = Trim(lv.ListItems(i).SubItems(4))
Text1(4).Text = Trim(lv.ListItems(i).SubItems(5))
Text1(5).Text = Trim(lv.ListItems(i).SubItems(6))
DTPicker1.Value = Trim(lv.ListItems(i).SubItems(7))
Text1(7).Text = Trim(lv.ListItems(i).SubItems(8))
Command1(1).Enabled = True ’按钮可以使用
Command1(2).Enabled = True
End If
Next
End If
End Sub
这时用vb6.0改写的吧点虐 配置文件不用ini了,前面5行,判断符合条件则获取相关文本框中的内容,在下面4行把相关内容就是前面5行中的后4行的内容写进ini配置文件,然后令btnDefault可用,同时调用btnDefault.PerformClick函数
Private Sub frmDbConn_Load是该form启动加载的一些参数,即获取配置文件中的相关信息,同时把信息显示在相关的文本框中。
String.Format 方法 (String, Object):
将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。
下面的代码示例演示数字、日期和枚举的标准格式设置说明符。
阅读代码示例时,经常会遇到注释符号 (')。 此符号通知 Visual Basic 编译器忽略在它后面的文本(即注释)。 注释是为了方便阅读而为代码添加的简短的解释性说明。
在所有过程的开头加入一段说明过程功能特征(过程的作用)的简短注释是一个很好的编程做法。 这对您自己和检查代码的任何其他人都有好处。 应该把实现的详细信息(过程实现的方式)与描述功能特征的注释分开。 若给说明加入了实现的详细信息,切记在更新函数时对这些详细信息进行更新。
注释可以和语句同行并跟随其后,也可以另占一整行。 以下代码阐释了这两种情况。
.NET Framework 定义了标准和自定义格式说明符,用于格式化数字、日期和时间以及枚举。各种格式化输出字符串的方法(例如 Console.WriteLine 和所有类型的 ToString方法),以及一些分析输入字符串的方法(例如 DateTime.ParseExact)都使用格式化说明符。
所以,x 是通过程序对格式说明符例如#进行解析来进行格式化的
This is a comment beginning at the left edge of the screen.
text1.Text = "Hi!" ' This is an inline comment.
' This comment is too long to fit on a single line, so we break
' it into two lines. Some comments might need three or more lines.
通过选择一行或多行代码,然后在“编辑”工具栏上选择“注释”按钮和“取消注释”按钮,可以添加或移除某段代码的注释符。
也可以用在文本前加关键字 REM 的方式给代码添加注释。 但符号 ' 和“注释”/“取消注释”按钮更易于使用,而且需要的空间和内存更少。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流