.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去执行,并返回数据库返回的结果给客户端;





 本文转自 王清培 51CTO博客,原文链接:http://blog.51cto.com/wangqingpei557/567769,如需转载请自行联系原作者




相关文章
|
7月前
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
1318 0
|
11月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
553 13
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
305 2
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
772 12
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
294 2
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
257 0
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
1035 0
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
218 1
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理