.NET实现之(WebService数据提供程序)

说起数据提供程序大家都不陌生,数据提供程序的作用就是以统一的接口去访问不同的数据源,如OledbProvider、SqlServerProvider、OrcaleProvider等等;不同数据源的访问其实是不一样的,微软数据源的访问方式从ODBC到ADO.NET经历了很多路程,各大数据源提供商,都在不断的生产不同结构的数据库,为了以统一的接口去访问各种不同的数据源,微软的.NET为我们提供了ADO.NET,我们通过ADO.NET可以很方便的访问不同厂商生产的不同数据库,ADO.NET也为后期自定义数据提供程序规定了一套接口,只要我们自己去实现它就可以用同一种方式,访问我们自己的数据源,我们可以通过封装访问我们的XML数据源、文本数据源、二进制数据源、WebService数据源、对应用程序员来说,可能有很少一部分人去关注后台的具体实现的细节;对于刚毕业的学生来说,大部分的知识还没有转变成对技术的主观思考,刚刚接触数据提供程序可能有点陌生,所以我们尽可能的将复杂的东西进行简单化,让不需要接触后台代码的程序员就不要接触,减少思考的时间;

今天我要向大家介绍的是WebService数据提供程序,是建立在ADO.NET一套规范接口上的,为什么我会有这样的想法去写这个提供程序,主要来源于我在一段工作时间中不断遇到企业使用我们的分布式系统遇到的种种问题,因为我们的分布式系统是采用.NETRemoting实现的,端口是用的8085,走的是TCP协议;给企业部署项目的时候,由于企业的网络结构比较复杂,在加上我们不了解企业的网络结构,所以在很大程序上增加了我们的维护工作量,也给企业带来了很大的维护时间开销,我们的.NETRemoting是用Windows服务作为宿主,部署在应用服务器上,通过路由器的端口映射来处理客户端的TCP请求;很少一部分企业的网络结构简单,没有复杂的安全防线,由于我们公司做的项目相对而言还是比较大的,都是一些大中型企业;他们的网络的系数很高,防火墙的设置基本上是不允许使用TCP协议的,而且除了常用的协议端口如HTTP的80、FTP的21等,其余的一律封闭,所以我们的系统很难部署使用,但是后来这个问题也解决的了,将.NETRemoting部署到IIS上了,也通过80端口进来再由.NETRemoting子系统去处理;但是过了一段时间,我感觉通过WebService也能很好的实现,所以就写出来与大家分享一下,可能有人觉得WebService没有.NETRemoting效率高,对于大数据量可能会有问题,还有WebService的安全认证怎么控制,这些问题如果需要可以上网参考相关资料,对于安全认证可以在C/S系统加上Session的相应机制,这里就不多说了;[王清培版权所有,转载请给出署名]

1:

该图给出一般分布式系统的网络拓扑图,企业和服务器各自在内网,企业通过WebService数据提供程序访问我们的数据源;

2:

在下已经实现一个基本的原型,在HZ.DataProvider.WebServiceDBManager服务器项目中,可以实现很多种数据源,在WebService与数据库服务器之间可以架设ORM很宽松的实现数据访问,可以随意切换数据库类型;这样层层隔离,也是一种好的开发方式;[王清培版权所有,转载请给出署名]

3:

通过提供程序获取DataReader对象,前台完全和以前我们所熟悉的一样开发,对于刚进公司开发的程序员来说,也是一中解脱,不需要关注后台复杂的实现,只需要按照一贯的方式开发就行;

4:

5:

图5是服务器端的实现代码,这部分代码就是连接数据库服务器的代码,将客户端传递过来的SQL去执行,并返回数据库返回的结果给客户端;

源码:HZ.WebServiceProvider数据提供程序   (仅供学习参考)[王清培版权所有,转载请给出署名]

时间: 2024-07-31 03:38:43

.NET实现之(WebService数据提供程序)的相关文章

delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态_Delphi

delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态.. 出现以上错误,请检查表的时间字段是否可以为NULL,不能为NULL可能出现这个问题,或其他不能为空的字段造成的. Access数据库,文本类型字段,存储字符段超出该字段定义的最大长度报此错误 一般都是数据库字段类型设置不当引起,大家可以检查下.

.Net Framework 数据提供程序错误

析构函数中调用SqlConnection对象的Dispose()方法就会出现这个异常,但是在其他地方不会.搜索MSDN的资源可以找到答案: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=473449&SiteID=1 以下是关于SqlDataReader.CLose()方法的解释: http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.

SQL Server .NET Framework 数据提供程序连接池

server|程序|数据 有朋友建议我控制连接池的连接,说是为了提高性能,但看了下面的这个文章,感觉连接池是由系统自身进行维护的,程序没有必要去进行控制的.大家有什么意见吗?在连接问题上,是否有提高性能的方法? SQL Server .NET Framework 数据提供程序连接池池连接可以显著提高应用程序的性能和可缩放性.SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池.您也可以提供几个连接字符串修饰符来控制连接池行为,请参见本主

.NET Framework SQL Server 数据提供程序连接池

您也可以提供几个连接字符串修饰符来控制连接池行为,请参见本主题内下文中"使用连接字符串关键字控制连接池"这一节. 池的创建和分配 当连接打开时,将根据一种精确的匹配算法来创建连接池,该算法会使连接池与连接中的字符串相关联.每个连接池都与一个不同的连接字符串相关联.当新连接打开时,如果连接字符串不精确匹配现有池,则将创建一个新池. 在以下示例中,将创建三个新的 SqlConnection 对象,但只需要使用两个连接池来管理这些对象.请注意,第一个和第二个连接字符串的差异在于为 Initi

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序"

 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采用的是方案一.相关联开发环境如下: Windows 7(x64) Visual Studio 2010 方案中使用的代码:   public sealed cl

开发一个大数据应用程序来执行数据探查和发现

探查大数据和传统企业数据是许多组织的共同需求.在本文中,我们概述了为通过基于 Hadoop 的平台管理的大数据建立索引的方法和指南,以便将这些数据用于数据发现解决方案.具体来讲,我们将介绍如何将存储在 IBM 的 InfoSphere BigInsights(一个基于 Hadoop 的平台)中的数据推送到 InfoSphere Data Explorer.InfoSphere Data Explorer 是一个复杂的工具,支持业务用户探查并组合来自多个企业和外部数据源的数据. 简介 如果您关注过

如何使用多记录类型为NoSQL类型数据提供SQL访问

引言 随着web访问.移动设备.报表和分析包以及其他应用的发展,数据库市场正在快速地创新.然而,数量众多的系统因为不是以关系方式来组织自己的数据,它们仍无法充分参与到这些创新中.由于无法使用关系APIs(如SQL.ODBS.JDBC.PHP.ADO.Net等)有效率地访问数据,很多系统不能有效地应用这些创新. 本文将为一个很特殊的挑战提供一个解决方案:在同一个文件中混合着不同的记录结构,并使用某个字段告知应用程序如何解释每条记录.如果你拥有现代关系数据库相关的技能,你听到这些可能会觉得很奇怪.你

微软同步框架(MSF)入门之七--定制同步提供程序(SyncProvider)

在上一篇文章当中,简要介绍了一下如何使用现有的 SyncProvider 对象来进行文件(夹)同步.今天的这个DEMO主要演示通过继承方式来实现自己的SyncProvider来进行相关同步元数据存储,当然这样做会给我们以额外的好处,比如按自己的意愿来创建.版本和删除项的信息等.另外就是对同步应用程序的工作原理也会有一个大概的认识. 在开始正文之前,我在网上看到了这篇文章对MSF的负责报道,当然它所说的部分观点我同意.MSF的确不那么好学,官方的文档的确也难懂,但事情总要慢慢来,只有通过不断积累不

使用WAS V7中的WebSphere MQ消息提供程序,第2部分: 使用通道出口

简介 IBM WebSphere Application Server V7 中的 IBM WebSphere MQ 消息提供程 序提供对基于 Java 通道出口的完整支持.道出口是运行在 IBM WebSphere MQ 通道生命周期中被指定点上的用户代码.通道出口有许多可能的用法,包括审计.安全.压 缩.转换等等. 之前的 WebSphere Application Server 版本中,通道出口没有得到完整的支持,必须通过 定制属性配置.在 WebSphere Application Se