正文
vbnet编程 vbnet教程
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
VB.NET编程中调用Windows API
Windows API就是Windows系统的API函数简称(Application Program Interface 即 应用程序接口函数) 它是Windows操作系统提供给各种开发基于Windows平台应用软件的开发语言的一些公用的函数 这些函数一般都比较底层 所以当各种开发语言使用自带的函数或类库已无法解决问题时 调用Windows API函数往往是一种非常直接 有效的解决方法 但由于在程序中调用Windows API函数一般都很复杂 所以对于程序员来说 是否能够灵活的使用Windows API函数 往往也是其水平高低的一个重要标志 但自从微软推出 Net框架以后 各种开发基于 Net平台下的程序语言 如Visual Basic Net Visual C#等却很少使用Windows API函数 并且微软公司也不像以前那样 提倡在这些 Net开发语言中使用Windows API函数 其主要的原因如下 Net框架所附带的类库 Net FrameWork SDK是一个内容丰富 功能强大的软件开发包 各种Windows API函数所实现的各种功能几乎都可以在这个软件开发包中找到与之对应的部分 微软Visual Basic Net Visual C#等目的是编写跨平台的应用程序 如果在Visual Basic Net Visual C#等中使用Windows API函数 这也就注定了编写出的程序只能运行于Windows平台之下 而弱化了 NET的跨平台能力 这也就是为什么微软不提倡在 Net平台调用Windows API函数的原因 虽然微软并不提倡在Visual Basic Net Visual C#中调用Windows API函数 但由于目前 Net 框架推出时间较短 Net FrameWork SDK中提供的类库还并不足以完全替换Windows API函数的所有功能 所以在某些时候 Net开发语言还是必须要调用Windows API函数 一 平台调用 托管DLL 非托管DLL简介 托管DLL就是能够在公共语言运行库(Common Language Runtime 简称CLR)中能够直接引用的 并且扩展名为 DLL 的文件 具体所指就是封装各种命名空间所在的DLL文件 如System dll等 非托管DLL就是平常所的动态链接库等 其中就包括了封装所有Windows API函数的DLL文件 各种非托管DLL中的函数在公共语言运行库中不能直接被调用 而需要经过 Net框架提供的 平台调用 服务后才可以 平台调用 是 Net框架为Visual Basic Net Visual C#等 Net开发语言提供的一种服务 用以在托管代码中引入各种非托管DLL中封装的函数(其中包括Windows API函数) 平台调用 依赖于元数据在运行时查找导出函数并封装其参数 图 公共语言运行库利用 平台服务 调用非托管DLL中的函数的流程图 图 平台服务 的调用非托管函数的流程图在托管代码中使用 平台调用 服务调用非托管DLL中封装的函数时 平台服务 将依次执行以下操作 . 查找包含该函数所在的DLL文件 . 如果找到 则将该DLL文件 加载到内存中 . 查找函数在内存中的地址并将其参数推到堆栈上 并封送所需的数据 . 将控制权转移给非托管函数 这样整个函数调用完成 在Visual Basic Net中使用 平台调用 服务 申明Windows API函数主要有二种具体的实现方法 . 使用DllImport特征类来申明Windows API函数 . 使用 Declare 语句来申明Windows API函数 这二种方法虽有异曲同工之效 但在繁简上却有很大差异 第一种方法申明过程比较复杂 很容易在申明Windows API函数时出错 所以并不提倡 而第二种方法相对简单 并且又保存了以前Visual Basic中的很多语法 所以在平常时大都使用这种方法来申明Windows API函数 二.VB Net查看文件中图标的函数及申明Windows API的方法 Visual Basic Net要实现查看文件中的图标 目前只使用 Net FrameWork SDK是无法实现这种功能的 正如前面所说 主要是由于 Net FrameWork SDK推出的时间较短 其功能还不可能面面俱到 解决问题的关键是正确使用Windows API函数 其中所涉及到的Windows API函数主要有二个 其一是获得指定文件中的图标数目 其二是从指定文件的指定位置导出图标的Windows句柄 这二个函数都位于 Shell dll 文件中 并且函数的入口点都为 ExtractIcon 下面是在Visual Basic Net中分别使用DllImport特征类和 Declare 语句申明这二个Windows API函数的具体方法 ( ) 使用DllImport特征类来申明Windows API函数 下面是在Visual Basic Net中使用DllImport特征类申明二个Windows API函数的具体示例 函数ExtractIcon 其功能是是从指定文件的指定位置导出图标的Windows句柄 < System Runtime InteropServices DllImport ( Shell dll EntryPoint := ExtractIcon ) > _Public Function _ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As UInt ) As System IntPtrEnd Function 函数Icon_Num 其功能是获得指定文件中的图标数目< System Runtime InteropServices DllImport ( Shell dll EntryPoint := ExtractIcon ) > _Public Function _Icon_Num ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As Integer ) As IntegerEnd Function在使用DllImport特征类申明Windows API函数时 如果申明的函数名称和函数的入口点相同 则可以在申明Windows API函数时 省略定义函数入口点对应的代码 即EntryPoint对象字段对应的代码 这样声明ExtractIcon函数的代码也可以简化为如下所示 < System Runtime InteropServices DllImport ( Shell dll ) > _Public Function _ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As UInt ) As System IntPtrEnd Function( ) 使用 Declare 语句来申明Windows API函数 使用 Declare 语句的确比使用DllImport特征类要简单了许多 下面是在Visual Basic Net中使用 Declare 语句来声明上述二个Windows API函数的具体方法 Declare Auto Function ExtractIcon Lib Shell dll Alias ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As UInt ) As System IntPtr 声明ExtractIcon函数Declare Auto Function Icon_Num Lib Shell dll Alias ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As Integer ) As Integer 声明Icon_Num函数在Visual Basic Net中声明Windows API函数时 Declare 语句中Alias关键字的作用相当于使用DllImport特征类中的EntryPoint对象字段 同样在使用 Declare 语句声明Windows API函数时 如果声明的函数和函数的入口点相同 也可以省略Alias关键字对应的代码 所以ExtractIcon函数也可以简化为如下 Declare Auto Function ExtractIcon Lib Shell dll ( ByVal src As System IntPtr ByVal strFileName As string ByVal uiIconIndex As UInt ) As System IntPtr下面就结合一个示例的编写过程来掌握的这二个Windows API函数的具体使用方法 这个示例的作用就是读取指定文件中的图标数目 并显示文件中的图标 三.本文中程序的编写 调试和运行环境 ( ) 视窗 高级服务器版 ( ) Visual Studio Net 企业结构设计版 Net FrameWork SDK版本号 四.Visual Basic Net读取文件中的图标的实现步骤 下面介绍的示例 其功能读取指定文件中包含的图标数目 并把这些图标全部显示出来 下面是这个示例的实现步骤 启动Visual Studio Net 选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框 将【项目类型】设置为【Visual Basic项目】 将【模板】设置为【Windows应用程序】 在【名称】文本框中输入【Visual Basic Net查看文件中的图标】 在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 这样在【E:\VS NET项目】目录中就产生了名称为【Visual Basic Net查看文件中的图标】文件夹 里面存放著【Visual Basic Net查看文件中的图标】项目的所有文件 具体如图 所示 图 【Visual Basic Net查看文件中的图标】项目的【新建项目】对话框 选择菜单【项目】|【添加新项】 在弹出的对话框中的【模板】设置为【模块】 【名称】文本框设置为【Module vb】后 单击【打开】按钮 则在项目中增加了一个模板文件 名称为【Module vb】 把Visual Stuido Net的当前窗口切换到Module vb的代码编辑窗口 并在其Module 的代码区中添加下列代码 下列代码是用二种方式声明二个Windows API函数 < System Runtime InteropServices DllImport ( Shell dll ) > _Public Function _ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As String ByVal uiIconIndex As UInt ) As System IntPtrEnd Function 声明ExtractIcon函数Declare Auto Function Icon_Num Lib Shell dll Alias ExtractIcon ( ByVal src As System IntPtr ByVal strFileName As String ByVal uiIconIndex As Integer ) As Integer 把Visual Studio Net的当前窗口切换到Form 窗体的设计查看 并从【工具箱】中的【Windows窗体】选项卡中拖入下列组件到Form 窗体 四个Label组件 其中二个用以显示提示信息 另外二个分别用以显示选择的文件名称和这个文件中包含的图标数目 一个ListView组件 利用其显示大图标的属性用以显示选定文件中的图标 一个OpenFileDialog组件 用以选择要查看图标的文件名称 一个ImageList组件 它起的是桥梁的作用 首先把从文件中导出的图标存放到这里 然后再提供ListView组件显示出来 一个Button组件 按照表 中数值来设定设定组件的主要属性 组件类型 组件名称 属性 设置结果 Form Form Text VB NET查看文件中的图标 Form MaximizeBox False Form MinimizeBox False Form FormBorderStyle FixedSingle ListView ListView ImageList LargeImageList ListView MultiSelect False ListView Size Size ( ) Button Button Text 选择文件 Button FlatStyle Flat ImageList ImageList Size Size ( ) ImageList TransparentColor Color Transparent Label Label Text 文件名称 Label Text 图标数目 Label Text Label Text 表 【Visual Basic Net查看文件中的图标】项目窗体中各组件的主要属性设定数值表并按照图 中各组件的位置 大小和排列方式来调整窗体中各个组件 图 【Visual Basic Net查看文件中的图标】项目的设计界面 把Visual Studio Net当前窗口切换到Form vb的代码编辑窗口 并用下列代码替换Form vb中的Button 组件的Click事件的处理代码 下列代码是在Button 组件的Click事件中处理查看文件中图标的功能 具体如下 Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button ClickIf OpenFileDialog ShowDialog ( ) = DialogResult OK Then 清除组件中的所有项目 ListView Items Clear ( ) ImageList Images Clear ( ) Dim sfName As String = OpenFileDialog FileName Label Text = sfName Dim iIcon_Num As Integer = Icon_Num ( IntPtr Zero sfName ) 显示文件中的图标数目 Label Text = iIcon_Num ToString ( ) Dim i As Integer For i = To iIcon_Num Step 强制实现int到uint类型转换Dim j As UInt j = System Convert ToUInt ( i )Dim hIcon As System IntPtr = ExtractIcon ( IntPtr Zero sfName j ) 在imageList 组件中加入当然提取的图标ImageList Images Add ( Icon FromHandle ( hIcon ) ToBitmap ( ) ) 在ListView组件中加入一个项目ListView Items Add ( 第 + ( i + ) ToString ( ) + 个图标 ) 把加入项目的图象索引指向刚才加入图标在imagList 组件中的索引 从而显示图标ListView Items ( i ) ImageIndex = i Next iEnd IfEnd Sub 至此 在上述步骤都正确执行后 【Visual Basic Net查看文件中的图标】项目的全部工作就完成了 单击快捷键F 就可以运行程序 此时单击【选择文件】按钮选择文件后 程序就能够读取这个文件中的图标及其数目 并显示出来了 具体如图 所示 图 【Visual Basic Net查看文件中的图标】项目的运行界面 五.总结 解决Visual Basic Net查看文件中的图标的关键并非是使用 Net框架中提供的类库 而是使用Windows的API函数 虽然这与利用Visual Basic Net开发跨平台程序的初衷相违背 但的确不失为一种解决问题的方法 有些时候通过Windows API函数能够快捷 方便的解决实际问题 而这往往是只使用 Net FrameWork SDK所望尘莫及的 但随着 Net FrameWork SDK内容的不断丰富 各种新的组成部分和新的功能不断加入 可以预见的是 在未来的 Net FrameWork SDK中必将拥有可以替换本文中介绍的二个Windows API函数的组成部分 lishixinzhi/Article/program/net/201311/12511
VB.Net编程入门之Hello World(1)
本文介绍了VB NET与VB vbnet编程的区别 同时介绍了如何使用Visual Studio NET集成开发工具vbnet编程的使用方法
vbnet编程我们将通过一个系列vbnet编程的讲座来向诸位展现Visual Basic Net的独特魅力以及使用它开发应用程序的基本方法 Visual Basic Net是微软公司在 年推出的一种开发基于 Net平台应用程序的开发语言 也是微软公司极力推荐的一种开发 Net平台应用程序的开发语言 首先还是让我们来简单了解一下Visual Basic Net和其前一个版本 也是目前世界上拥有最多使用者的开发语言 Visual Basic 的主要区别
一 Visual Basic和Visual Basic Net的主要区别
虽然说Visual Basic Net是Visual Basic 的后继版本 但在我看来Visual Basic Net除了在语法上还保留Visual Basic原有的踪影以外 因为二者几乎在 %以上保持相似或相同 但在其vbnet编程他很多方面 Visual Basic Net都和Visual Basic截然不同 也许正是这些不同点 才使得Visual Basic Net功能更强大 更有生命力 但同样也为Visual Basic程序员转型为为Visual Basic Net程序员带来了困难 因为Visual Basic Net提出了很多新的功能 概念和观点 掌握Visual Basic Net不仅要掌握语法 还需要理解并运用这些新的功能 概念和观点 当然也需要掌握 Net框架 理解CLR(Common Language Runtime 通用语言进行时) 下面就从数据访问 Web开发和组件创建三个方面来简要谈谈二者的区别
数据访问
不同点主要表现在 数据访问技术 数据访问具体实现方法和数据绑定上的不同
在数据访问技术上 Visual Basic 是通过ADO(Active X Data Object 即 Active X数据对象)来实现对数据库访问的 同时为了保证对早期版本的兼容 也提供RDO(远程数据对象)和DAO(数据访问对象)二种数据访问技术 在Visual Basic Net中是使用ADO NET来访问数据库 ADO NET是 NET框架的一部分 其对应的类库是 Net FramWork SDK的真子集 ADO和ADO NET这两种技术在概念 功能和实现上都有许多差异 由于篇幅所限 这里就不一一介绍了 其实在Visual Basic Net中也可以使用ADO来访问数据库 但ADO在Visual Basic Net中是以组件的形式出现的 通过添加引用才可以在Visual Basic Net中使用 添加引用的过程 其实就是对组件互操作 经过互操作后的组件 已经并非先前意义上的组件 而是转变成可供Visual Basic Net直接使用的 Net类库
在数据访问的具体实现方法上 Visual Basic 实现数据访问主要是两种方法 其一是在程序设计阶段 可通过把数据源绑定到ADODC控件或使用数据环境 其二在运行时 可以通过编程方式创建记录集RecordSet对象并与记录集对象交换数据 同样在Visual Basic Net中实现数据访问的方法主要也是二种 其一是在程序设计阶段 通过创建 配置数据适配器DataAdapter和生成数据集DataSet 其二在运行中 通过编程方式动态创建 配置数据适配器和创建 生成数据集
在数据绑定(Data Bind)上 在Visual Basic 中实现数据绑定通过设置控件的下列属性来实现 DataChanged DataField DataFormat DataMember 和 DataSource 通常是把控件的显示属性绑定到数据源中的相应字段 在Visual Basic Net中 数据绑定的应用范围可广泛得多 Visual Basic Net中可以将任何控件的任何属性绑定到包含数据的任何结构中
Web开发
Visual Basic是使用Active Server Page(简称ASP)来创建在 Web应用程序 在ASP中 编写Web页面并非纯正的Visual Basic语言 而是Visual Basic脚本语言 VBs cript 在Visual Basic Net中是使用ASP NET技术来编写Web页面 在ASP NET中使用的也不再是脚本语言 而是真正意义编程语言 其中就可以是Visual Basic Net 开发过ASP页面的朋友都清楚 虽然编写ASP页面对开发工具要求很低 但由于其是面向过程式开发 所以稍微复杂一点的ASP代码都显得杂乱无章 这都给程序设计 调试 修改带来了麻烦 而Visual Basic Net是建立在新的框架结构上 Visual Basic Net完全支持Web编程 凭借ASP NET的Web 应用程序 XML Web services等等基于Web上的功能 使得Visual Basic Net开发Web 页面与开发Windows编程很相似 Web页面代码也不显得有条有理了
组件创建
在使用Visual Basic 和Visual Basic Net编写应用程序时 虽然都可以通过从工具箱中选择组件 通过拖入方式在应用程序中加入组件 但二者在实现机理上却存在根本不同 在Visual Basic 中 应用程序中创建的组件全部是组件 即可在应用程序中使用的ActiveX控件 ActiveX 类型的DLL 和 ActiveX类型的EXE 而在Visual Basic Net中 向窗体中拖入的组件 都是基于继承 从 Net框架提供的SDK中相应的类继承 经过实例化后 通过添加功能才把组件加入到设计窗体中 这些过程都可以在Visual Basic Net的源代码中找到 Visual Basic Net中使用的每一个组件都是从Component或Control基类派生出来的
lishixinzhi/Article/program/net/201311/14653
VB.Net编程入门之Hello World(4)
四 第一个Visual Basic Net程序 Hello World!
如果你没有Visual Studio Net 你也可以通过一个文本编辑器和从微软下载安装 Net Frame Work SDK来编写Visual Basic Net 文本编辑器来编辑Visual Basic Net源程序 安装下载的 Net FrameWork SDK后就会用以Visual Basic Net的编译器Vbc exe 通过这个编译器就可以编译 联接用文本编辑器编辑的Visual Basic Net源文件 虽然这种做法能够让我们更加了解Visual Basic Net的运行机制和一些底层的机理 但却很难推广 一方面是Visual Studio Net的确是太优秀了 利用文本编辑器很难实现如资源编辑 组件编辑等操作 另外一方面 Visual Basic Net源文件结构相对复杂 用文本编辑器编写的代码会导致大量的错误 并且这些错误有很难查出来 而利用Visual Studio Net来开发Visual Basic Net应用程序就能够大大避免上述的尴尬 并且能够方便的调试编程中出现的各种警告 错误
本系列文章中介绍程序的编写 调试和运行的软件环境
( ) 视窗 服务器版
( ) Visual Studio Net 企业级结构设计版
用Visual Studio Net开发 Hello World! 程序
我们知道 Hello World 一般是命令行程序 而这种程序在Visual Studio Net中被称为 控制台程序 下面是Visual Studio Net编写控制台 Hello World! 程序的具体步骤
( ) 启动Visual Studio Net
( ) 选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框
( ) 将【项目类型】设置为【Visual Basic项目】
( ) 将【模板】设置为【控制台应用程序】
( ) 在【名称】文本框中输入【Hello World】
( ) 在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 则Visual Studio Net会按照上面设定的参数创建一个控制台应用程序项目
( ) 在【解决方案资源管理器】窗口中 双击Module vb文件 进入Module vb文件的编辑界面
( ) Visual Studio Net已经为产生Main()函数 在系统创建的Main()函数中加入下面一行代码就可以了
Console WriteLine ( Hello World! )
( ) 选择【文件】|【保存Module vb】菜单或者按快捷键Ctrl+S 保存所做的修改
( ) 此时单击快捷键Ctrl+F 运行程序就可以得到运行界面
通过以上可见利用Visual Studio Net编写控制台 Hello World! 程序 自始至终只需输入一行代码 Visual Studio Net自动实现源程序编译 联接等过程 避免在命令行提示符下敲编译命令的苦恼 不仅如此Visual Studio Net自动的语法检测 既给程序员带来便捷 又避免了因为拼写造成的不必要的错误 等等这些都比起用行编辑器来编写Visual Basic Net程序要方便 简洁
Hello World! 程序是一个控制台程序 而后面的章节中程序的类型主要是Windows应用程序(一般简称WinForm程序) 利用Visual Studio Net编写WinForm应用程序和控制台应用程序步骤基本相似 下面就介绍一下Visual Studio Net编写WinForm类型的 Hello World 程序的基本步骤
Hello World! 程序的WinForm版本
Hello World! 程序的WinForm版本的可是我取的名字 此程序同样也是输出 Hello World! 字符串 只不过不是在命令提示行中实现 而是通过单击程序中的按钮 会弹出一个消息框 并在消息框中显示 Hello World! 字符串 下面是 Hello World! 程序的WinForm版本的具体步骤
( ) 启动Visual Studio Net
( ) 选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框
( ) 将【项目类型】设置为【Visual Basic项目】
( ) 将【模板】设置为【Windows应用程序】
( ) 在【名称】文本框中输入【Hello_World程序WinForm版】
( ) 在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 则Visual Studio Net会按照上面设定的参数创建一个Windows应用程序项目
( ) 选择【工具箱】中的【Windows窗体组件】 并从中拖入一个Button组件到【Form vb(设计)】窗口 此组件名称为button 双击拖入的button 组件 Visual Studio Net会切换窗口到Form 的设计窗口 并自动产生button 的Click事件对应的代码
( ) 在button 的Click事件的代码区添加下列代码 下列代码的功能是弹出 Hello World! 提示框
MessageBox Show ( Hello World! )
( ) 选择【文件】|【保存Form vb】菜单或者按快捷键Ctrl+S 保存所做的修改
( ) 选择【生成】|【生成Hello_World程序WinForm版】菜单 则Visual Studio Net会自动编译 连接源程序 并生成Hello_World程序WinForm版的执行文件
( ) 选择【调试】|【启动】菜单或者单击快捷键 F 则开始运行Hello_World程序WinForm版程序 单击程序中的【button 】按钮 则弹出 Hello World! 提示框
至此Hello_World程序WinForm版程序的全部编写工作就完成了 对于其他的WinForm程序 其编写的基本步骤是相似的 只不过程序中涉及到更多的组件 类和其他的调用 无非是上面这些操作步骤的变形和再组合
五.总结
lishixinzhi/Article/program/net/201311/14627
VB.NET编程语法
vbnet编程你这是vb.netvbnet编程的代码,vb中不允许那么写:
Dim
strdx()
As
String
=
{"0",
"0",
"0"}
'定义个数组,从后面的值能看的出最大下标是2,也就是strdx(0),strdx(1)和strdx(2),3个的默认值都为0
Dim
calcount1
As
String
=
"0"
'定义个字符串变量
Dim
calcount2
As
String
=
"0"
Dim
strvalue
As
Boolean
=
False
'定义strvalue为bool值,改类型变量只有true和false
2种值
If
strdx(0)
=
"0"
Then
TextBox1.Text
=
strdx(0)
"."
这是字符串连接符号,和"+"的区别是,vbnet编程他把左右2边的内容直接连接的,而"+"可能会编程运算符,例如
2
3
=
"23"
而
2
+
3
=
5
ElseIf
strvalue
=
False
Then
strdx(0)
=
strdx(0)
"0"
TextBox1.Text
=
strdx(0)
"."
strvalue
=
True
Else
strdx(0)
=
strdx(0)
"0"
TextBox1.Text
=
strdx(0)
Select
Case
calcount1
'
这里开始是分支语句
Case
"+"
TextBox1.Text
=
Str(Val(strdx(1))
+
Val(strdx(0)))
VB.Net编程实现Web Service的基础
WebService目前可是目前计算机界一个非常流行vbnet编程的技术vbnet编程了 以至于有些人把WebService列入目前最热门vbnet编程的十大技术之一 的确随着互联网的广泛应用和发展 尤其是电子商务的发展 出于互联网上各种复杂的应用系统和对更高安全性的要求 WebService的横空出世的确满足了当前这些的要求和需要 其中的原因在下文中有详细的介绍 本文的主要内容是简要介绍一下WebService的相关知识 以及使用VisualBasic Net实现WebServices的具体方法和典型步骤
一 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
用VB.NET编程有什么好处?
vb.net是基于.NET框架的完全对向对象的编程语言,而vb 6.0只是半面向对象的语言,使用vb.net可以编制出功能更加强大的windows程序。现在,我们把vb.net和vb 6.0做一下比较,看看vb.net对比vb 6.0有着什么样的特性和优点。 1.在vb 6.0中,创建对象的时候,需要等这个对象创建完毕后,再另外调用一个独立的方法对其进行初始化。在vb.net中, 可以利用构造函数为对象赋初值,这样就不需要进行烦琐的调用赋初值了。构造函数的使用,简化了编码的过程和出错的机会。 2.vb.net编写线程的能力比vb 6.0有很大的增强。 3.在vb 6.0中,需要首先声明一个变量,然后才能对其赋值,这样就需要写两行代码。在vb.net中,可以 使用初始化函数将这两个步骤合并在一行代码中完成,这个似乎微小的改进,提供了更少、更简单、更易于维护的代码。 4.vb.net基于.NET框架,开发者可以快速的可视化开发网络应用程序、网络服务、Windows应用程序和服务器端组件。 5.因为vb.net是基于.NET框架的,可以与其它.NET语言协同工作。 6.在vb.net中,通过Web窗体及ADO.NET,开发者可以快速开发可扩展的Web站点。 如果你能进一步学习vb.net,你会发现更多的新特性和优点。
vbnet编程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet教程、vbnet编程的信息别忘了在本站进行查找喔。