分享
 
 
 

通过Web服务向客户端传送ADO.NETDataSet

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本篇文章将说明如何从服务器上向客户端传送ADO.NET DataSet,服务器将通过一个Web服务传送DataSet(因此服务器需要安装有IIS),我们能够通过IE、Opera或Netscape Navigator等标准的互联网浏览器查看DataSet。另外,我们还会创建一个简单的Windows SmartClient,以演示如何接收DataSet,并在data grids等标准的Windows组件中使用它。

Web服务是什么?

Web服务能够轻易地解决当今困扰许多编程人员的根本性问题:即如何将信息由“这里”传送到“那里”。经过多年的发展,已经出现了多种在系统间传输数据的不同方式(包括FTP、ODBC、映射驱动器、DCOM等),但这些方法在解决易用性、开放性和可扩展性等问题方面都不如Web服务。Web服务的编写非常容易,它基于XML标准,可以以与IIS同样的方式进行扩展(通过在现有的硬件上添加更多的处理器或在服务器“农场”中添加服务器)。象COM对象那样,Web服务使我们能够创建逻辑块,供我们自己或别人使用。

多平台

尽管是由微软支持的,但Web服务决不是微软一家的技术。Web服务的一个优点是,它可以被其他的编程人员使用,而无需考虑他们所使用的平台(Mac、Unix, Linux, PocketPC等),所有的数据都是通过XML被发送到调用的系统的。在这种方式下,我们仍然可以选择使用VB.NET、C#、VB6等编程语言,而我们的商业伙伴可能使用的是PERL、PHP或Java与我们的系统相连。但在本篇文章中,我们将使用VB.NET编程语言。

在代码中标识Web服务

在VB.NET中将一个类标识为Web服务非常地简单,只要在类的定义前添加标识符即可。由于不要求对主代码进行任何变化,因此向开发Web服务的过渡相当地简单。

通过Web服务发送DataSet

使用Web服务发送ADO.NET数据与发送简单类型(例如字符串和整型)的数据一样简单。我们的数据可以来自数据库、XML文件或使用ADO.NET的高级数据构建命令在内存中构建的数据,在本篇文章中包括有各种情况的例子。读者需要清楚的是,每种方法都遵循着下面的基本模式:

Public Function theFunctionName() as DataSet

dim ds as DataSet

Return ds

End Function

从Access 2002中提取数据的例子:

Public Function ListPhoneNumbers_Access() As DataSet

Dim myConnection As OleDbConnection

Dim myDataAdapter As OleDbDataAdapter

Dim myDataSet As DataSet

myConnection = New OleDbConnection _

("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + _

Server.MapPath("/") + "\PhoneNumbers\PhoneNumbers.mdb")

myDataAdapter = New _

OleDbDataAdapter("SELECT * FROM PhoneNumbers", myConnection)

myDataSet = New DataSet()

myDataAdapter.Fill(myDataSet, "PhoneNumbers")

Return myDataSet

End Function

从XML中提取DataSet的例子:

Public Function ListPhoneNumbers_XML() As DataSet

Dim ds As New DataSet()

ds.ReadXml((Server.MapPath("/") + _

"\PhoneNumbers\PhoneNumbers.xml"), XmlReadMode.InferSchema)

Return ds

End Function

通过编程方式提供DataSet:

Public Function ListPhoneNumbers_Default() As DataSet

Dim ds As DataSet = New DataSet()

Dim dt As DataTable = ds.Tables.Add("PhoneNumbers")

Dim newRow As DataRow

dt.Columns.Add("name")

dt.Columns.Add("home")

dt.Columns.Add("mobile")

dt.Columns.Add("netWorth")

newRow = dt.NewRow

newRow("name") = "Jeff Laughlin"

newRow("home") = "555-111-2222"

newRow("mobile") = "555-111-3333"

newRow("netWorth") = "Negligible"

dt.Rows.Add(newRow)

newRow = dt.NewRow

newRow("name") = "Bill Gates"

newRow("home") = "555-222-2222"

newRow("mobile") = "555-222-3333"

newRow("netWorth") = "33.6 Billion"

dt.Rows.Add(newRow)

newRow = dt.NewRow

newRow("name") = "Steve Balmer"

newRow("home") = "555-333-2222"

newRow("mobile") = "555-333-3333"

newRow("netWorth") = "15.1 Billion"

dt.Rows.Add(newRow)

Return ds

End Function

Web服务的部署

与传统的网站相似,尽管不是不会遇到任何问题,部署Web服务是相当简单的。

如果Web服务是通过Visual Studio.NET的集成环境开发的,则在本机上部署的问题都已经自动地解决了。如果想将自己的移植到其他的计算机上,可以选择使用Visual Studio.NET内置的向导工具重新部署自己的Web服务或者将Web服务的站点拷贝到其他计算机的一个文件夹中。如果选择了拷贝站点的方法,则我们还需要使用IIS MMC接口执行一个额外的步骤。我们需要将该文件夹标识为Virtual Directory Application,以便适当的配置能够得到ASP.NET处理器的处理。如果忘了将该文件夹指定为虚拟的目录应用,当在浏览器中加载URL时,就会得到下面的错误信息:

It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS。(这是一个在应用层次之外使用注册为allowDefinition='MachineToApplication'部件的错误,它可能是由没有在IIS中将虚拟目录配置为应用而引起的。)

Web服务的测试

Visual Studio.NET提供了一个只使用浏览器的非常简单的Web服务测试方法,在浏览器的地址栏输入ASMX文件的地址,连接到Web服务,并对代码进行测试。

http://localhost/PhoneNumbers/PhoneNumbers.asmx

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有