说起数据提供程序大家都不陌生,数据提供程序的作用就是以统一的接口去访问不同的数据源,如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数据提供程序 (仅供学习参考)[王清培版权所有,转载请给出署名]