科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB.NET应用集锦

VB.NET应用集锦

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这里介绍的例程代码最小化地展示了SMTP和POP3协议的执行,并且有意地演示VB.NET中的多线程、套接字和输入输出的能力。这个程序需要固定一些目录结构。

作者:青苹果工作室 来源:soft6 2008年5月14日

关键字: 集锦 应用 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件

在VB.NET中应用SMTP和POP3 服务

介绍

这里介绍的例程代码最小化地展示了SMTP和POP3协议的执行,并且有意地演示VB.NET中的多线程、套接字和输入输出的能力。这个程序需要固定一些目录结构。

应用程序邮箱的目录

C:\Temp\SMTP

C:\Temp\SMTP \SPOOL

C:\Temp\SMTP \[Pop 3用户名作为目录]

程序也可以向局域网外部发送E-mail,但这就需要依赖于SMTP服务器。本例程中指定了SMTP服务器的硬代码,并且至少要在C:\Temp\SMTP下创建一个人名的目录。例如:C:\Temp\SMTP\pramodkumarsingh,意思就是有一个用户名字是pramodkumarsingh。目前的程序不检查任何密码,你可以对它升级来完成这些工作。C:\Temp\SMTP\SPOOL目录是存放SMTP文件的缓冲池,通过它程序在后台并发地发送SMTP文件到邮箱。

这是一个演示VB.NET能力的很好程序。

例程下载

smtp_server.zip

VB.NET中的对象序列

介绍

这里是一个简单的控制台应用程序,它通过使用System.Runtime.Serialization名字空间演示了VB.NET中的对象序列(Object Serialization)。

什么是对象序列(Object Serialization)?

序列化是把图式对象转换成为线性字节序列的过程。字节序列可以发送到别处,例如远程计算机,然后执行序列解码,这样就在远程主机内存中生成了原来图式对象的克隆。序列化过程在VB.NET中是十分容易使用的,而且是开放的,每个VB6的程序员都曾经自觉或不自觉地使用过序列化。当任何ActiveX dll或者ActiveX exe被创建后,都有五个属性可以设置,最后一个Persistable属性就是VB6中的序列化。VB6中序列化的过程不需要用户认知,大部分开发人员也从来不管序列化做了什么和如何运作。在VB.NET中,有着公共对象库,每个支持.NET体系的语言都可以通过System.Runtime.Serialization的名字空间来理解和使用VB.NET的序列化特征。

我们在 .NET中做序列化的时候,Runtime这个元数据“知道”每个对象在内存中的存放规划,它有对这些区域和属性的定义,这使得对象序列化自动执行,不用对序列化各区域编写代码。

序列化流可以用XML进行编码,或者压缩成二进制数据表示。具体格式决定于调用的格式化对象。可插入的格式化对象允许开发人员使用两种已提供的格式:binary 和 SOAP,或者自行创建新的格式来进行对象的序列化。

序列化可以替代任何流,象MemoryStream、NetStream等,而不仅仅是FileStream。

序列化操作使用到下面的几个类:

Formatter:负责按照指定格式将对象数据写入到输出流。

ObjectIDGenerator:负责创建对象的Ids。它跟踪已经可见的对象,当你要求这个对象的ID时,或者返回存在的ID,或者创建一个新ID。

ObjectManager:负责跟踪序列解码时的对象。

例程说明

这里的例子描述了将内存中的对象进行序列化操作保存到磁盘的过程。它将创建一个单一连接列表,填充满数据,然后序列化到磁盘的文件中。接着列表被解码,恢复成内存中的一个对象。

例程下载

SerializationSampleInVB.zip


 

[下一页]


 

VB.NET中的多线程

介绍

多线程对VB的开发人员来说是一个新东西,VB的开发人员一直希望VB中包含这个特征,现在它出现VB.NET中。

多线程是Windows 95和Windows NT中的一个重要特征。多线程编程的能力需要系统的可靠设计,它等于要求确保CPU在线程之间切换不会导致不良事情发生。例如,可能有可被多于一个线程访问的数据,如链接列表,这时,就需要代码保证线程在时刻切换时不会把数据留在一个不一致的状态。可以通过使用同步对象来防止线程切换问题。

线程

一个或多个线程运行于Appdomain中,Appdomain是一个物理进程内逻辑进程在运行时间的表示。线程是操作系统分配进程时间的基本单元。每个Appdomain以单个线程作为开始,可以从它的任何线程再创建另外的线程。

每个线程维持不同的句柄、优先级安排、结构集,系统用它们来保存线程上下文直到线程被预定。线程上下文存在于线程所属过程的地址空间中,并包含了线程的寄存器集和堆栈。

支持有优先权的多任务的操作系统创造了多个进程的多个线程同时执行的效果。在一个多处理器的计算机上,一些操作系统可以真正同时执行和处理器一样多的线程。

多任务操作系统在进程或线程需要时分配可用的处理器时间。系统为有优先权的多任务作了设计,它可以为每个运行的线程分配时间片,当前运行线程在用完自己的时间片后挂起,同时允许其它线程开始运行。当系统从一个线程切换到另一个线程时,它保存先占线程的上下文并恢复队列中下一个线程的上下文。

同步

在写多线程应用程序时,在线程间同步资源访问是一个普遍的问题。两个或多个线程同时访问相同的数据会导致令人不快和不可预知的结果。例如,一个线程可以在另外一个线程读取结构的上下文的时候对同一个结构进行更新。读取结构的线程所获得的结果是未知的:原有数据、已更新数据或者是两者的混合。.NET提供许多同步和同步访问的类来帮助解决这一问题。

例程下载

ThreadSample.zip

转换VB6窗体到VB.NET

介绍

VB.NET改变了开发人员在VB6中常用的编程方法,VB6的GUI对开发人员隐藏大部分内部工作,但是在VB.NET中每一个外观设计使用的都是开放GUI控件。VB.NET语言对VB来讲有一些变化,如果你想把VB6应用程序转换到VB.NET,那么绝大部分工作将会是重新逐个创建所有VB6中的窗体。在微软提供VB6应用程序到VB.NET应用程序的转换工具之前,是否有方便的解决办法呢?在这里我做了初步的尝试,上面的小工具将会帮你进行转换工作。

注意,这个小工具在很多情况下不能正常工作,比如:如果VB6窗体有控件数组,因为VB.NET中没有与控件数组相似的东西。它可以用于由通用控件(命令按钮、文本框,标签,树形控件,列表框、打开文件对话框控件等)组成的窗体。

执行

运行程序后,选择同一个窗体文件作为源文件和目标文件,程序会自动创建一个扩展名为.vb(VB.NET类型)的新文件。

例程下载

ConvertVB6toVB7.zip


 

[下一页]


 

VB.NET中的简单Web Service例程

本文和附带的源码向您演示了在.NET开发环境下创建一个WEB服务是如何得简单,同时演示了客户端如何使用这个WEB服务。例程创建了一个计算器的简单WEB服务,它有三个方法:加、减和除。

下载文件包WebService_mehta.zip包含所有演示文件: Calculator.asmx

HTMLClient.Html

InetClient (VB6 Project)

Calculator.asmx代码

<%@ WebService Language ="Vb" Class="Calculator" %>
''这个实例演示了简单的WEB服务
''计算器有三个WEB方法作基本计算
''标记 <WebMethord()>导出方法

option strict off
Imports System.Web.Services

Public Class Calculator: Inherits WebService

Public Function <WebMethod()> Add(Num1 as integer,Num2 as integer)
As Integer
return Num1 + Num2
End Function

Public Function <WebMethod()> Substract(Num1 as integer,Num2 as
integer) As Integer
return Num1 - Num2
End Function

Public Function <WebMethod()> Divide(Num1 as integer,Num2 as
integer) As Integer
return Num1 / Num2
End Function
End class

Calculator.asmx有三个方法,它们都接受参数Num1和Num2,然后执行算数计算返回一个整数值。

在IIS下将Calculator.asmx发布到任何一个虚拟目录下,从浏览器中访问,如下:

http://<server>/<virtualdirectory>/Calculator.asmx

你会看到一个“计算器Web服务”的描述页面,页面显示被导出的并且可以在同一个页面调用的三个方法。

VB.NET中的简单Web Service例程

创建HTML 客户端

<html>
<h1> Web服务演示 </h1>
<body bgcolor = pink>
<form id = frm method=POST >
Web服务的URL,例如: http://server/service1.asmx <br>
<input type = text id = ServiceLocation style="WIDTH:
322px;"><br><br>
Num1 : <input type="text" size="5" name=''Num1'' \"><br>
Num2 : <input type="text" size="5" name=''Num2'' \"><br><br> <input type = button Value = 加 onclick = "Add()">
<input type = button Value = 减 onclick = "Substract()">
<input type = button Value = 除 onclick = "Divide()">
</form>
<script Language = "vbScript">
Sub Add
msgbox frm.ServiceLocation.value
frm.action = frm.ServiceLocation.value & "/Add"

frm.submit
end sub
sub Substract
frm.action = frm.ServiceLocation.value & "/Substract"
frm.submit
end sub

sub Divide
frm.action = frm.ServiceLocation.value & "/Divide"
frm.submit
end sub
</script>
</body>
</html>

客户端页面提交数据到Calculator.asmx的Web服务页面,返回的结果是XML形式的。

WinInet 客户端

WinInet 客户端使用 win32 用户界面接受数据,然后提交给Calculator.asxm Web 服务,返回的XML结果经过客户端的分析提取以文本方式显示出来。

例程下载

WebService_mehta.zip

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章