首页 > 数据库 >基于.NET的Web Service技术的分布式异构数据库的集成

基于.NET的Web Service技术的分布式异构数据库的集成

时间:2023-06-13 16:00:52浏览次数:59  
标签:XML Web Service 数据库 DataSet NET


摘要:本文分析了Web Service的特点,提出了一种基于Microsoft.NET的 Web Service技术访问分布异构数据库的体系结构,并采用.NET技术实现了原型系统。在原型系统中,使用Web Service将分布于Internet上的不同的数据库系统中的数据集成,向访问数据库的应用程序提供统一的数据操作接口,实现了分布式数据库的透明访问。


关键词:异构数据库;.NET技术;XML Web Service;


 


1、引言


随着Internet的迅速发展,基于Web的信息交流、共享与协作成为企业的重要发展方向。企业的大量重要的信息都是通过数据库系统进行存储和管理的,而不同的企业或者同一企业的不同部门往往采用了不同的数据库管理系统,如Oracle、DB2、Informix、Sybase、MS SQL Server等,而且这些不同的数据库管理系统在地理位置上往往也是分布的,只能通过Internet访问。例如某公司在北京,上海,南京,武汉等地都有分公司,甚至在国外也有分公司。各分公司可能安装了不同的数据库管理系统。即使该公司进行了信息系统规划,但是,随着时间的推移,人事的变动以及数据库技术的进步和数据库市场的变化,仍然可能出现分布的异构数据库的情况。该公司的管理者对下级各分公司,各部门要进行统一协调的管理,调度,以降低成本岣呱剩銮抗镜木赫?就必须对这些分布异构数据库进行集成。


 


2、基于Microsoft .NET的Web Service


2.1 Web Service简介


Web Service是一种构建开放的分布式应用程序的模型,它能在所有支持Internet通信的操作系统上实现。


Web service体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于 Web Service构件:Web Service软件模块及其描述。在典型情况下,服务提供者托管可通过网络访问的软件模块(Web 服务的一个实现)。服务提供者定义 Web Service的服务描述并把它发布到服务请求者或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用 Web Service实现或同它交互。图 1 图示了这些操作、提供这些操作的组件及它们之间的交互[1]。






图 1 Web service体系结构


 Web Service 的所有协议都基于标准的Web协议,诸如:HTTP,扩展的标记语言XML,简单对象访问协议SOAP,Web服务描述语言WSDL,通用描述、发现与集成UDDI等。这些协议的关系如图2所示[2]。协议组成堆栈的形式,每一个下层提供对它上层的支持,同时每一个上层都必须基于所有的下层协议之上。





图 2  Web 服务协议栈



 


 


Web 服务协议栈的基础是网络层。Web 服务要被服务请求者调用,就必须是可以通过网络访问的。HTTP 凭借其普遍性,成为了Internet可用的 Web 服务真正的标准网络协议。Web 服务还可以支持其它Internet协议,(这句话什么意思,要说完整)


SOAP以XML标准封装调用远程服务的格式,有别于其它分布式对象模型调用特定的调用格式,例如CORBA的GIOP以及DCOM的ORPC。由于SOAP以XML封装调用格式,因此它可以使用任何的实体传输层来传送,例如HTTP,TCP或是SMTP等。


WSDL 定义了服务交互的接口和结构,是基于 XML 的服务描述的标准。WSDL使用XML计划来描述Web Service的结构。


UDDI注册和发布Web Service。UDDI使用XML计划定义注册表的结构,使用SOAP指定与注册表的通信。[1]


以往分布式应用程序的模型都是基于组件的对象模型,比如:公共对象请求代理CORBA,分布组件对象模型DCOM, 远程方法调用RMI和对象请求代理交互协议IIOP,都依赖于其特殊的对象模型协议。这些对象模型协议在跨平台,穿越防火墙以及协议间的互操作方面都非常困难。而Web service的构建所基于的一套标准定义了应用程序如何在Web上实现互操作性,因此,Web Service令基于组件的开发和web的结合达到最佳;另外,利用了SOAP和XML对这些服务建立了通信模型从而消除了特殊对象模型之间进行交互的障碍。


2.2 在Microsoft .NET上实现Web Service


实现Web Service的方式多种多样,Microsoft .NET的ASP.NET是创建、部署和使用XML Web Service的较好的平台。


(1)建立Web Service


使用ASP.NET将类外置为Web Service,必须将类放入.asmx文件中。.asmx文件是Web Service的入口。Web Service的代码既可以是.asmx文件,也可以是后台代码文件。如下:


<%@ WebService Language="C#" Class="WebServiceClassName" %>


using System.Web.Services;


public class WebServiceClassName


{


   [WebMethod]


   public DataType DoSomeThing()


{


}


}


Web Service 指示符指定了.asmx文件中使用的语言,命名了外置为Web Service的类。(.asmx文件中可以包含多个类,但只有一个类可以用作Web Service)


在用于Web Service 的方法前添加WebMethod属性(Web Service的类及公开的方法必须声明为public)。


(2)部署Web Service


ASP.NET Web Service的部署工作很简单:只需要把.asmx文件放在Web应用程序的目录中。


(3)测试Web Service


对于Web Service的测试,用户不必编写测试客户机程序来测试Web Service。ASP.NET 提供了可以测试Web Service的测试页,同时提供WSDL文件格式的Web Service的结构化描述。测试页的路径是:http://WebServiceSite/ WebServiceAppPath/filename.asmx。filename.asmx?wsdl是Web Service描述的连接。


(4)消费Web Service


消费Web Service即其他应用程序调用Web Service。在Microsoft.NET中,使用代理类将Web Service的功能组合到其他应用程序中。代理类可以引用远程的Web Service,在用户的应用程序中使用其功能。如图3所示:





图3调用、使用Web Service


 3、基于.NET的分布式异构数据库的集成


3.1 三层架构简介


目前,三层架构由于系统的层次和逻辑清晰,系统开发和维护的成本低以及系统的扩展性强等优点被广泛采用。.NET的Web分布式应用程序也采用三层架构,它逻辑地分为三个基本层,如图4所示[3]。



图4 基于.NET的Web三层架构


 ·表示层:向用户浏览器提供丰富、灵活和交互的Web界面。具有在平台之间提供更大程度的可移植性的优点。主要由ASP.NET应用程序来实现。


·业务逻辑层:该层被分为应用程序服务器与服务,它们可用于支持客户端。可以使用 .NET 框架编写 Web 应用程序以利用 COM+ 服务、消息队列 (MSMQ)、目录服务和安全性服务。应用程序服务反过来可以与数据访问层上的若干个数据服务进行交互。


·数据访问和存储层:支持数据访问和存储的数据服务包括:ADO.NET,通过使用脚本语言或编程语言提供对数据的简化编程访问。OLE DB,由 Microsoft 开发的公认的通用数据提供程序。XML,用于指定数据结构的标记标准。


3.2 利用.NET的XML Web Service技术实现分布式异构数据库的访问


Microsoft.NET的XML Web Service技术为实现分布式异构数据库的访问提供了强有力的支持。基于XML Web Service技术访问分布异构数据库的体系结构充分利用.NET的Web分布式应用程序三层架构的优点,是一个基于 Web 应用程序松散耦合三层架构:最底层为各分布的异构数据库,其上为两层XML Web Service。其结构如图5所示



图5 基于XML Web Service访问分布异构数据库


 在数据库之上,针对不同的数据库,建立相应的XML Web Service。该XML Web Service利用ADO.NET中的数据提供程序所包含的两个用于访问企业数据库的数据提供程序:OLE DB .NET 数据提供程序和 SQL Server .NET 数据提供程序,可以连接不同数据库。


该XML Web Service主要连接相应的数据库,执行对该数据库的检索,插入,更新等一些数据操作,并向其客户端提供数据库的操作方法,使用DataSet向客户端提供数据和从客户端获得数据。


由于位于不同地点的不同数据库系统之上的XML Web Service统一以DataSet向数据集成XML Web Service提供数据并提供统一的公开方法,从而屏蔽了不同数据库管理系统的异构信息。使得数据集成XML Web Service不必理会不同数据库的差异,集中处理各分布的DataSet的集成。


在此之上的XML Web Service是数据信息集成层。该层通过HTTP调用底层分布的XML Web Service的公开的方法,获得来自不同数据库系统的数据,并将这些处于不同DataSet中的数据集成到一个DataSet中,通过向上公开的方法将数据提供给访问数据库的应用程序。


该层对访问数据库的应用程序屏蔽了数据库的分布信息,使访问数据库的应用程序对数据的操作就像是在使用一个数据库。


这个架构的主要节点是数据集成XML Web Service。它的关键在于DataSet的集中与分散,即当外部应用程序读取数据库数据时,该层将从多个底层XML Web Service获取多个DataSet并将其集成到一个DataSet中;当外部应用程序更新数据时,该层将判断被更新的记录属于那个数据库并调用相应的XML Web Service的公开方法更新该数据库。为了达到此目的,在该层设有一个数据结构,该数据结构记录各分散的DataSet的相关信息:各分散的DataSet在集成DataSet中的位置。当将从底层XML Web Service获取的多个DataSet集成到一个DataSet中时,将信息填入数据库;当外部应用程序更新记录并通过DataSet传回时时,该层从传回的DataSet中获取被更新改的记录数据及位置,根据记录数据结构中各分散的DataSet的信息,确定被更新的记录属于哪一个分散DataSet,从而更新该DataSet并调用相应XML Web Service的方法完成更新。


该架构的原型系统已完成各分布的数据库信息的集成以及数据的更新等功能,实现了分布式数据库的透明访问。


3.3 原型系统的特点


原型系统充分利用ADO.NET的特点:断开式数据结构、与 XML 的紧密集成、能够组合来自多个、不同数据源的数据的通用数据表示形式以及为与数据库交互而优化的功能。相对于其它分布异构数据库的实现,该系统有如下优点:


·分布性


如上所述,本文提出的架构是在各分布的异构数据库之上架构了两层XML Web Service。由于XML Web Service的所有协议都基于标准的Web协议,客户端可以通过Internet调用XML Web Service,获得和发送基于XML的串行格式的数据。这样,即使各异构的数据库在地理上分布地很广,对于位于不同地点的不同数据库系统之上的XML Web Service,其客户端――数据集成XML Web Service仍然可以穿越防火墙,通过Internet得到相同格式的数据。


·灵活性


与数据处理主要依赖于基于连接的双层模型不同,该架构使用多层结构,数据处理采用断开方式,因此具有更佳的可缩放性。


该架构顶层的XML Web Service可以根据需要灵活添加或删除局部数据库,而只需要对数据集成XML Web Service作少量修改。


·健壮性


该架构不会因为某一个局部数据库系统的崩溃而导致整个系统不工作,而且,当某一个局部数据库系统崩溃而采用其备份数据库时,该架构可以方便地用备份数据库替换崩溃的局部数据库系统。


·简化应用程序开发


在该架构之上开发引用程序将与特定的数据库管理系统无关,只需要了解数据库总的数据及顶层XML Web Service提供的数据库操作方法。


 


4、结论


Web Service是可以通过Internet访问的应用逻辑单元,可以说是基于组件的分布式技术在Internet上的扩展。它在创建跨平台,跨Internet,适应Internet的可伸缩性的应用程序时,具有非常大的优势。通过Web Service对分布于Internet上的不同数据库进行整合,实现分布式数据库的透明访问,可以大大方便公司内部以及公司之间的信息交流与共享。下一步要完成的工作将是在数据集成XML Web Service层的用户认证、权限、安全以及数据完整性、一致性策略。


 


参考文献


[1], Heather Kreger      《Web 服务概念性体系结构》(Web Services Conceptual Architecture)    


IBM Software Group 2002 年 4 月


http://www-900.ibm.com/developerWorks/cn/webservices/ws-wsca/part1/index.shtml  


2, Russ Basiura   Mike Batongbacal        等著 康博译《ASP.NET Web 服务高级编程》     清华大学出版社         2002年6月


3, Ashish Banerjee        Aravind Corera   等著 康博译 《C# Web 服务高级编程》     清华大学出版社2002年6月


 

标签:XML,Web,Service,数据库,DataSet,NET
From: https://blog.51cto.com/guosisoft/6471022

相关文章

  • NoneType数据类型以及None
    type(None)<class'NoneType'>NoneType数据类型只有一个值:NoneNone是Python中的一个特殊对象,表示空值或者不存在。在Python中,None可以在函数中作为占位符使用,表示该参数暂时没有值。在函数中,如果一个参数不接受赋值,则可以使用None作为默认值,并且不用担心该变量没有赋值,会导......
  • 利用dotnet core的代码生成实现类型转换
    利用dotnetcore的代码生成的特性,自动生成类型转换的代码。类似于AutoMaper,但是代码生成近似于手写代码,不用反射,性能更好生成通过比较属性名字(不区分大小写)属性支持简单类型,类,List,Dictionary(key最好是string类型)在需要转换的类上标记特性:ConvertFrom、ConvertTo[Conv......
  • js WebUploader 分片上传
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • 搭建springbootweb环境
    搭建springboot环境(idea环境)实现步骤:1.基础环境配置2.maven配置3.编写第一个程序helloworld(可能有两个小问题)4.运行(jar包运行,命令行运行)一.基础环境配置进入idea,点击file->new->project,在弹出的页面上,选择springinitiallzr并进行相关的配置点击next点击create,完成sp......
  • .net 动态从容器中获取对象实例
    startup中创建对象保存ApplicationServices在startup中的Configure方法中记录下app.ApplicationServicespublicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv){Startup.applicationService=app.ApplicationServices;}获取对象varmachi......
  • Stable Diffusion WebUI 环境
    StableDiffusion是热门的文本到图像的生成扩散模型,本文介绍了如何准备其WebUI环境。StabilityAIStabilityAPIExtensionforAutomatic1111WebUIStableDiffusionwebUI环境基础OS:Ubuntu22.04.2LTSKernel:5.19.0CPU:AMDRyzen73700XGPU:NVIDIAGeF......
  • 图片优化之下一代图片格式WebP和AVIF
    本文最初由KaranjeetSingh在AdobeTechBlog上发表。已获作者授权翻译和发布。https://medium.com/adobetech/image-optimisation-with-next-gen-image-formats-webp-and-avif-248c75afacc4翻译:姜金元审校:LiveVideoStack特邀技术审校编辑:AlexWebP& AVIF 影音探索#002#  速......
  • 2023 安洵杯SYCTF Web-writeup
    2023安洵杯SYCTFWeb-writeupWeb文末:附官方wp,失效可留言联系CarelessPy首页的源代码中存在注释,提供了两个功能点。<!--好像有/eval路由和/login路由是拿来干什么的呢?-→还有一张图片,访问图片发现请求路径:会请求/download?file=zayu2.jpg,这里能任意下载文件总共......
  • WebRTC十周年、Space X成功对接国际空间站、TikTok复制品Zynn或有快手支持|Decode the
    >>顺便祝大家六一快乐<<DecodetheWeek≠音视频技术周刊 01 SpaceX载人飞船首发成功并与国际空间站对接北京时间5月31日,SpaceX首次载人火箭发射成功,而这只是SpaceX创始人ElonMusk庞大的商业航天计划中的一环。在经历19个小时的飞行后,SpaceX龙飞船与国际空间站成功对接,对接......
  • NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低
    NETSDK1045当前.NETSDK不支持将.NET6.0设置为目标。请将.NET5.0或更低https://blog.csdn.net/qq_43680827/article/details/123309449vs2019解决NETSDK1045错误一、平台描述二、问题描述三、问题原因四、解决办法一、平台描述系统:Windows10VS:Visual......