数据访问层类生成器的制作方法

文档序号:6651918阅读:200来源:国知局

专利名称::数据访问层类生成器的制作方法
技术领域
:本发明一般涉及使用存储过程从数据库访问数据,尤其涉及通过分析这样的存储过程来自动生成数据访问层的系统和方法。
背景技术
:计算机技术的进步(例如,微处理器速度、存储器容量、数据传送带宽、软件功能等)极大地促进了各个行业中的计算机应用程序的增长。通常被配置为服务器阵列的功能日益增强的服务器系统通常被提供来例如服务源于诸如万维网等外部资源的请求。由于可用电子数据的数量的增长,以促进用户友好且快速的数据搜索和检索的可管理方式存储这样的数据更为重要。当今,常见的方法是在一个或多个数据库中存储电子数据。一般而言,典型的数据库可以被称为带有数据的信息的有组织的集合,这些数据被结构化以使计算机程序能够例如快速地搜索和选取所需的数据片段。传统上,通过一张或多张表来组织数据库内的数据,其中各张表含有一组记录,一个记录包括一组字段。在表中,记录通常被索引为行,而记录字段通常被索引为列,使得索引的行/列对可以引用表中的一个特定数据。目前,世界上极大多数数据库是基于关系型数据模型的,且访问通常由SQL(结构化查询语言)标准的变体主导。SQL是可以被用来询问和处理关系型数据库中的数据的语言,且许多公司在SQL兼容的数据库中维护组织、产品和顾客数据,SQL兼容的数据库最初被开发来与大型机结合使用,现在大多数数据库管理系统(DBMS)一般为支持SQL的客户机/服务器环境设计的。数据库管理系统的主要应用当然是管理数据的存储、排列和检索;然而,为了向管理系统提供各种能力,通常希望使用存储过程或预定义的函数,数据库管理系统可使用它们来完成提供的功能。数据库管理员常常使用“存储过程”来适应查询搜索,存储过程是其中仅有小部分(例如,参数)可变的内置查询。例如,存储过程可以被定义来标识拥有特定邮政编码的经营场所的顾客。从而,用户只需输入邮政编码的值来获取查询结果。换言之,用户可以访问存储过程并传递所需邮政编码作为标识的参数。通常,使用存储过程具有多种便利,包括功能封装、性能增强、客户机-服务器处理以及安全性。一般而言,存储过程可以采用任何数量的参数,这些参数在这些过程内定义。存储过程也可以用于添加、更新信息或从一个或多个数据库中移除信息。同样,在数据库应用程序的开发过程中,开发员一般在数据库中创建存储过程,然后为应用程序的中间层编写数据访问层组件的代码,应用程序的中间层可以用于调用存储过程且收集之后可以在被传递到中间层的较高层中的调用者的任何结果。创建这样的数据访问层的进程涉及复制已存在于数据库中的各种信息的代码。然而,由于当复制时可能会引入错误或引起维护问题,一般这样的方法是低效且冗余的。另外,如果对存储过程的改变没有伴随对数据访问层的类似改变,应用程序将不能正确地操作。而且,精确地确定存储过程中改变了什么以及更新数据访问层代码是既冗长又易于出错的。从而,存在克服与常规系统和设备相关联的前述示例性不足的需求。
发明内容以下提供了本发明的简化概述,以提供对本发明的一个或多个方面的基本理解。该概述不是本发明的广泛概观。它既不旨在标识本发明的关键或重要的元素,也不描绘本发明的范围。相反,该概述的唯一目的是以简化的形式呈现本发明的某些概念,作为之后呈现的更详细描述的序言。本发明提供根据存储过程的定义通过数据访问层生成器为关系型数据库应用程序的中间层自动生成数据访问层的系统和方法。这样的安排促进了关系型数据库中使用存储过程的数据访问。从而,关于数据库的信息可以被存储在一个位置中,且降低了这样的信息与维护在中间层中的信息不同步的风险。根据本发明的方法,来自可扩展标记语言扩展(XML)配置文件的数据可以由数据访问层类生成器使用,来确定通常展示给访问层的存储过程。作为结果,XML文件可以作为向数据库描述应用程序编程接口(API)的声明文件,并提供例如需要向API展示的存储过程的列表。另外,这样的XML文件可以提供总体上可能不能从数据库中容易地访问到的信息,诸如结果集的名称(如果存储过程的确返回这样的结果集)。结果集也可以含有能够自动设置的与之相关联的逻辑主键。在相关方面中,XML配置文件也可以含有关于编码约定的信息,使得参数可以从事务结构化查询语言(SQL)基础上转化为.NET架构。从而,生成的代码可以恰当地匹配由中间层编程语言使用的编程约定,即使生成的代码作为基础的存储过程使用不同的编程约定。例如,用于基于SQL的存储过程的参数的命名约定可以不同于通常在中间层编程语言中使用的命名约定。基于XML配置文件,基于SQL的参数名称可以被自动地转化为适用于中间层编程语言的命名约定。例如,本发明能够生成能够定义数据访问类的C#TM代码,其中,为获取可操作的系统,中间源文件的剩余部分可以被添加/编译并部署给服务器。这样并且基于部署,该系统可以包括数据库、含有由数据访问层生成器自动生成的数据访问层的中间层(数据访问层可以提供与数据库的通信,其中中间层支持一般可以提供网络服务和HTTP服务能力的因特网信息服务(IIS))。用户然后可以使用web浏览器来浏览运行服务器端脚本环境(例如,活动服务器页面)的web服务器(例如,IIS)主存的网页,以调用进一步调用数据库中的数据访问层和存储过程的中间层商业逻辑组件。这样的存储过程可以返回结果集和/或可替换地执行某些有用的边际效应(例如,插入、更新或删除数据)而一般无需返回任何结果集。根据本发明的又一方法,最初XML配置文件可以被剖析和相关来确定数据访问层类生成器该如何生成类。这些可以包括,例如将要检查的数据库的标识、用于生成结果的总规范、关于可以通过数据访问层访问的存储过程的信息等。下一步,可以从数据库中检索信息,且可以生成可以包括用于事务支持的典型代码和用于在数据访问层中打开数据库的代码的引导码。如果存储过程返回一个或多个结果集(例如,实际返回了数据),那么可以从数据库中取出关于这样的存储过程的元数据。之后可以使用用于调用存储过程的命令对象生成匹配这些存储过程的参数的类型的参数。接着,生成的代码可以创建数据集和数据适配器。数据适配器可以被用来使用调用存储过程的结果来填充数据集。下一步,可以生成方法头来返回表示该数据集的值。在无结果集合返回的存储过程的相关方面中,最初元数据可以从关于存储过程的数据库中获得,且然后可以使用匹配存储过程的参数类型的参数来生成方法。下一步,生成的方法的主体可以创建用于调用存储过程的命令对象,且为存储过程创建匹配从数据库中获取的元数据信息的参数。为了完成前述和相关目的,本发明因此包含之后完全描述的特征。以下描述和附图详细描述了本发明的说明性方面。然而,这些方法仅示出可在其中使用本发明的原理的多种方式中的一些。当结合附图考虑阅读以下本发明的详细描述时,本发明的其它方面、优点和新颖特征会变得明显。图1示出了根据本发明的方面自动生成数据访问层的数据访问层类生成器。图2示出了根据本发明的方面使用可扩展标记(XML)配置文件和数据库的存储过程来生成数据访问层的数据访问层生成器。图3a、3b和3c示出了根据本发明的方面生成数据访问层类的方法。图4示出了根据本发明的方面使用数据访问层类生成器的部署的系统。图5示出了根据本发明的方面作为多层结构中的一部分的与web服务器通信的web浏览器,多层结构中可以自动生成数据访问层。图6示出了可在其中实现本发明的各个方面的合适的计算环境的简要概括描述。图7示出了根据本发明可以使用本发明的各个方面来生成数据访问层的客户机-服务器系统。以下提供的附录A提供了根据本发明的方面的XML配置文件的一组特定的示例性模式,该附录可以被认为是描述本发明的说明书的一部分。具体实施例方式现在参考附图描述本发明,在所有附图中,相同的参考标号引用相同的元素。在以下描述中,为说明起见,描述多个具体细节来提供对本发明全面理解。然而,显然可以无需这些具体细节来实现本发明。在其它情况中,在框图形式中示出公知的结构和设备以便于描述本发明。如在本申请中所使用的,术语“组件”、“处理程序”、“模型”、“系统”等指的是计算机相关的实体,或者是硬件、硬件软件的组合、软件或者是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,服务器上运行的应用程序和该服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机上和/或在两台或更多计算机之间分布。同样,这些组件可以从其上存储数据结构的各种计算机可读介质执行。组件可以通过本地和/或远程进程诸如根据含有一个或多个数据包的信号来通信(例如,来自一个组件的数据与本地系统中、分布式系统中的另一组件通信,和/或跨诸如因特网等网络通过信号与其它系统交互)。本发明提供根据存储过程的定义通过数据访问层生成器自动生成关系型数据库应用程序的数据访问层的系统和方法。这样的安排能够促进关系型数据库中使用存储过程的数据访问。而且,关于数据库的信息可以被存储在一个位置中,以降低这样的信息与维护在中间层的信息不同步的风险。换言之,中间层内的数据访问层可以通过本发明的数据访问层生成器自动生成。图1示出了根据本发明的方面带有在中间层125中自动生成数据访问层130的数据访问层生成器110的多层客户机服务器体系结构100。提供了三层物理分层的结构,即客户机层、中间层以及数据库层,其中客户机层104包括用户工作站、PDA以及可以主存web浏览器的其它设备。对面向服务的解决方案而言,该层包括消耗服务的计算机和设备。一般,在这样的多层排列100中,客户机应用程序进程表示运行在计算机平台上的应用程序,其中计算机平台可以是数据库服务器的同一计算机平台,或者它可以是通过诸如通信网络等某种类型的通信介质连接至服务器的远程计算机平台。中间层125一般可以负责主存应用程序商业组件,且在web应用程序的情形中,也可以主存web服务器。这样的中间层125可以包括商业逻辑层127,商业逻辑层127对通过其来回传递的数据执行操作,且中间层位于数据层115和客户机层104中间。层127主要涉及逻辑而不是数据视图或数据存储。这样的安排一般支持可伸缩性且是容错的,其中应用程序层可以被配置为服务器场,而数据库层作为服务器群集。客户机层104可以通过请求带有或不带有各种参数的网页来与关系型数据库115交互。访问这些网页进而调用中间层的商业逻辑组件。这些商业逻辑组件然后调用数据访问层组件,数据访问层组件又发出SQL语句,其中SQL语句例如被传输给关系型数据库115。同样,客户机104可以间接地发出可以指令关系型数据库115执行外部预定义的过程中的一个的过程调用。在关系型数据库115中,大多数数据通常被存储为一张或多张表中的行。数据库115可以由具有执行表上的相联查询的能力的一个或多个实体。可以使用一组处理语言(例如,结构化查询语言)来访问表中存储的实体组,其中该语言将一张或多张表指定为数据的源,并仅输出满足给定条件的那些行(如果有)。数据访问层生成器110可以自动创建中间层125的数据访问层130。数据访问层130可以用于调用数据库115中的存储过程,并收集之后被传递给中间层125中的较高层的任何结果。图2示出通过使用可扩展标记(XML)配置文件和数据库的存储过程来自动生成数据访问层的数据访问层生成器。通常,存储过程(1到m,其中m为整数)204、206是物理地存储在数据库210内的程序(或过程)。这样的程序通常使用专有的数据语言并响应于用户请求来编写,由数据库引擎直接运行。存储过程204、206能直接访问需要操纵的数据,且一般仅需将结果传回给用户,这样减少了来回通信大量信息的开销。例如,存储过程204、206的典型用途可以包括集成在数据库结构中的数据确认(用于该目的存储过程一般被称为触发器),或者封装某个大型或复杂的处理(诸如操纵大型数据集来产生概括的结果)。当数据库210被众多外部程序操纵时,也可以使用存储过程206、206。通过使用存储过程将商业逻辑嵌入至数据库210中,减少了对将同一逻辑嵌入至访问数据的所有程序的需求。这样可以简化创建以及尤其是所涉及的程序维护。如图2中所示,数据访问层生成器215在XML配置文件205的协助下可以自动创建数据访问层类和方法定义220。XML配置文件205可以被剖析和相关来确定数据访问层类生成器215该如何生成类。这些可以包括,例如将要检查的数据库的标识、用于生成结构的总规范、关于可以通过数据访问层220访问的存储过程的信息等。下一步,可以从数据库220中检索信息,且可以生成可以包括用于事务支持的典型代码和用于打开数据访问层中的数据库的代码的引导码。XML配置文件205可以确定一般向访问层展示的存储过程。从而,XML文件可以作为向数据库描述应用程序编程接口(API)的声明文件,并提供例如需要向API展示的存储过程的列表。另外,这样的XML文件可以提供一般而言从数据库难以访问的信息,诸如结果集的名称(如果存储过程实际上确实返回这样的结果集)。结果集也可以含有可以自动设置的与之相关联的逻辑主键。可以作为配置文件205的一部分的示例性模式在本文档的末尾呈现,作为附录A部分。如前所述,这样的示例性模式可以是例如可以使用XML模式语言的模式构造来定义和描述一类XML文档的可扩展标记语言(XML)的形式。这些模式构造可以被用来约束和证明如XML文档中所用的数据类型的意义、用途以及关系,元素及其内容,属性及其值,实体,内容和符号表示。这样,一般而言,能够访问XML模式的任何计算机系统可以根据XML模式处理XML文档。而且,一般能够访问XML模式的任何计算机系统可以编写或修改XML文档来供也能够访问XML模式的其它计算机系统使用。模式可以用来定义用于定义数据结构的基本上任何数据类型,包括逻辑、二进制、八进制、十进制、十六进制、整数、浮点、字符、字符串、用户定义数据类型以及这些数据类型的组合。XML元素和属性可以被定义来表示由模式定义的数据类型。根据本发明的一个特定方面的示例性XML模式在下文中作为附录A部分呈现。在一个相关方面,XML配置文件也可以包含关于编码约定的信息,使得参数可以从事务SQL基础转变为“.NET”架构。从而,生成的代码可以适当地匹配由中间层编程语言使用的编程约定,即使生成的代码作为基础的存储过程使用不同的编程约定。例如,用于基于SQL的存储过程的参数的命名约定可以与一般用于中间层编程语言的命名约定不同。基于XML配置文件,基于SQL的参数名可以被自动地转化为适用于中间层编程语言的命名约定。本发明可以例如生成能够定义数据访问类的C#TM代码,其中为获取可操作的系统,中间源文件的剩余部分可以被添加/编译并部署给服务器。现在参考图3a,示出了根据本发明的方面的生成数据访问层类的示例性方法。尽管该示例性方法此处被示出和描述为表示各种事件和/或动作的一连串框,但是本发明不受这些框的所示顺序的限制。例如,根据本发明,某些动作或事件可以按照与此处所示的顺序不同的顺序和/或与其它动作或事件同时发生。另外,不是所有示出的框、事件或动作对实现根据本发明的方法都是必需的。而且,可以理解,可以与此处示出和描述的方法联合,以及与没有示出和描述的其它系统和装置联合来实现根据本发明的示例性方法和其它方法。最初在310处,可以读取XML参数文件一般来驱动该进程的剩余部分(一般而言,参数文件必须遵循这些模式,因为它是对照该模式来读取和确认的)。例如,顾客或用户提供的XML最初可以被验证,然后基于XML文件的内容,在320处初始化应用程序阶段——其中,信息可以作为由应用程序所操纵的对象来捕捉。下一步,在330处,可以从数据库中检索类型信息,包括检查以下内容例如,数据库中的存储过程、可能有益的任何相关的信息类型、以及在对象模型中对这样的信息的捕捉。接着在340处,生成可以包括事务支持的引导码。引导码一般是不论检查哪个数据库而生成的,可以包括用于访问层的某一数量的固定代码,诸如用于事务支持的代码和用于打开数据访问层中的数据库的协议。取决于存储过程是否能产生结果集,本发明的方法可以分为两个独立的方法分支。如果存储过程返回一个或多个结果集(例如,搜索向用户显示的目录的结果),该方法前进至图3b。如图3b中的360所示,可以从数据库中自动取出关于存储过程的参数信息。从而,如果准确地表示了存储过程,那么可以自动收集适当的参数信息。下一步,在362处,可以将属性例如从存储过程名称映射到面向对象的编程名称(例如,C#TM名称)。接着在364处,输出可以证明该过程调用了类中的存储过程的注释。该方法然后前进至366处,在那里可以使用能表示数据集的返回值来生成方法头。下一步在368处,可以生成代码来创建使用合适的参数调用特定的存储过程的命令。换言之,之前从数据库中取出的类型信息可以与来自参数文件的信息结合来生成调用返回结果集的特定存储过程的方法。该方法然后前进至370处,在那里可以生成使用调用存储过程的结果来填充数据集的代码,以从数据库中获取数据。而且,如果在参数文件中存在与基于针对数据库执行的查询的输出来创建的逻辑表相关联的逻辑主键,那么在372处可以生成支持此的代码。这样的代码可以促进创建和/或维护中间层中的数据的完整性。同样,如果除了返回的结果集之外,还存在返回的输出参数的任何具体值,那么可以在374处,生成用于捕捉和返回这样的值的代码。该方法然后可以返回至图3a,并检查将要生成的更多结果集存储过程。或者,如果存储过程在图3a的356处没有返回结果集(例如,创建顾客或插入名称),那么该方法前进至图3c。如图3c的371处所示,可以从数据库中自动取出关于存储过程的参数信息。下一步,在373处,可以将属性例如从存储过程名称映射到面向对象的编程名称(例如,C#TM名称)。接着在375处,输出可以证明该过程调用了类中的存储过程的注释。该方法然后前进至377处,在那里,因为返回值为空,可以生成方法头而不使用返回值。下一步在379处,可以生成代码来创建使用合适的参数调用特定的存储过程的命令。同样,如果存在返回的输出参数的任何具体值,那么可以在381处,生成用于捕捉和返回这样的值的代码。该方法然后可以返回来检查要生成的更多无结果的集合的存储过程。例如,对以SQL使用数据库的金融应用程序而言,可以编写存储过程用于以SQL来创建帐户和更新关于现有帐户的信息。这样的数据库一般可以根据表和列来定义,其中表之间的关系可以构成关系型数据库的逻辑组件。逻辑组件可以容易地表示数据库的语义,便于数据库映射至另一数据模型等。同样,数据库表可以被转化为XML文档,且可以将XML工具用于这些文档来对财政应用程序进行进一步处理。在这样的数据库环境中,用于创建或更新帐户的存储过程一般可以被认为是无结果集的存储过程。例如,在用于创建帐户的存储过程的情形中,可以返回带有顾客ID而不带有结果集表的输出参数,其中数据访问层类生成器可以消除改写诸如可以调用存储过程的中间层的C#TM源代码等的代码或信息的需求。这样,嵌入在类的方法定义中的可以是关于参数的顺序、名称、类型和大小的信息,其中确切的采样信息也可以是存储过程定义的一部分。当金融应用程序的要求改变时,处理透支保护帐户的应用程序可能成为必需,或者帐户创建和帐户更新存储过程一般需要被修改来包含诸如透支限额等另一参数。本发明可以消除或减少手动更新数据访问层C#TM代码的需求,在更新中,存储过程与中间层之间的参数数量、类型或大小的任何变化可能会引起错误。这样,通过使用本发明的数据访问层类生成器,一般仅需包括改变作为存储过程的定义的一部分。数据访问层类然后可以被重新生成,产生与最近的存储过程定义相兼容的组件的新的版本。这样可以极大地减少使用成百甚至成千个存储过程来更新应用程序所需的工作。图4示出了根据本发明的一方面的部署的系统,其中系统400可以包括数据库410、带有由数据访问层生成器自动生成的数据访问层415的中间层420。这样的数据访问层415可以提供与数据库410的通信,其中中间层420支持实现web服务的基于因特网信息服务(IIS)的web应用程序以及服务器端web用户界面组件430、440。用户然后可以使用web浏览器来浏览由web服务器(例如,IIS)提供的网页,该web服务器可以访问中间层中的商业逻辑组件,商业逻辑组件又可以调用数据访问层415中的组件,来召唤数据库410中的存储过程。这些存储过程可以返回结果集和/或可替换地提供无结果的集合。现在参考图5,示出了作为多层结构中的一部分与web服务器通信的web浏览器,其中可以如前详细描述的自动生成数据访问层。运行在客户机520上的是诸如web浏览器510等的客户机进程,运行在服务器550上的是相应的服务器进程,例如web服务器560。另外,根据本发明的各个方面,嵌入在web浏览器510中的可以是脚本或应用程序530,运行在客户计算机520的运行时环境550内的可以是用于打包或解包格式化的数据包的代理515。与服务器550通信的是数据库管理系统(DBMS)580,它管理对数据库(未示出)的访问。DBMS580以及数据库(未示出)可以位于服务器自身内,或可以远程地位于远程数据库服务器(未示出)上。运行在web服务器560上的是数据库接口应用程序编程接口(API)570,它提供对DBMS580的访问。如前所述,XML配置文件可以确定一般向访问层展示的存储过程。从而,XML文件例如可以作为向数据库描述API570的声明文件,并提供需要向API展示的存储过程的列表。客户计算机520和服务器计算机550可以通过网络590彼此通信。当例如web浏览器510等的客户机进程从数据库中请求数据时,脚本或应用程序530发出通过网络(例如,因特网)590向服务器计算机550发送的查询,然后在服务器计算机550处,由服务器进程,例如web服务器560解释该查询。客户机520对服务器550的请求可以包括多条命令,且来自服务器550的响应可以返回多个结果集。返回的对客户机命令的响应可以是自描述的,且是面向记录的(例如,数据流可以描述名称、类型以及所返回的行的可任选描述)。同样,生成的代码可以恰当地匹配由中间层编程语言所使用的编程约定,即使生成的代码作为基础的存储过程使用不同的编程约定。例如,用于基于SQL的存储过程的参数的命名约定有可能不同于一般用于中间层编程语言中的那些命名约定。基于XML配置文件,基于SQL的参数名可以被自动转化为适用于中间层编程语言的命名约定。本发明可以例如生成能够定义数据访问类的C#TM代码,其中为获取操作系统,中间资源文件的剩余部分可以向服务器添加/编译和部署。现在参考图6,示出了可在其中实现本发明的各个方面的合适的计算环境的简要概括描述。尽管上文中在运行在一台或多台计算机上的计算机程序的计算机可执行指令的通用语境中描述了本发明,但本领域的技术人员可以认识到,本发明也可以结合其它程序模块来实现。一般而言,程序模块包括例程、程序、组件、数据结构等,它们执行特定的任务和/或实现特定的抽象数据类型。而且,本领域的技术人员可以理解,该创造性方法可以使用其它计算机系统配置实现,包括单处理器或多处理器计算机系统、小型计算机、大型机、以及个人计算机、手持式计算设备、基于微处理器或可编程消费者电子产品等。如前所述,本发明所示出的各方面也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备执行。然而,本发明即使不是全部,也有某些方法可以在独立计算机上实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。该示例性环境包括计算机620,它包含处理单元621、系统存储器622以及将包括系统存储器在内的各种系统组件耦合至处理单元621的系统总线623。处理单元可以是任何各种可在市场上购买到的处理器。双微处理器和其它多处理器体系结构也可被用作处理单元621。系统总线可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种市场上供应的总线体系结构中的任一种的局部总线。系统存储器可以包括只读存储器(ROM)624和随机存取存储器(RAM)625。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机620中元件之间传递信息的基本例程,它通常存储在ROM624中。计算机620还包括硬盘驱动器627、磁盘驱动器628(例如从可移动磁盘629中读取或向其写入)以及光盘驱动器630(例如,从CD-ROM盘631中读取或向其写入,或者从其它光学介质中读取或向其写入)。硬盘驱动器627、磁盘驱动器628以及光盘驱动器630分别通过硬盘驱动器接口632、磁盘驱动器接口633以及光盘驱动器接口634连接至系统总线623。驱动器及其相关联的计算机可读介质为计算机620提供了对数据、数据结构、计算机可执行指令等的存储。尽管以上对计算机可读介质的描述涉及硬盘、可移动磁盘和CD,但本领域的技术人员应该理解,计算机可读的其它类型的介质,诸如盒式磁带、闪存卡、数字多功能盘、贝努利盒式磁带等,也可以用于示例性环境中,而且任何这样的介质可以包含用于执行本发明的方法的计算机可执行指令。多个程序模块可以被存储在驱动器和RAM625中,程序模块包括操作系统635、一个或多个应用程序636、其它程序模块637以及程序数据638。示出的计算机中的操作系统635可以是基本上任何市场上供应的操作系统。用户可以通过键盘640和诸如鼠标642等定点设备向计算机620中输入命令和信息。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的串行端口接口646连接至处理单元621,但也可以由其它接口,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器647或其它类型的显示设备也经由接口,诸如视频接口648连接至系统总线623,且使用如上详细描述的本发明的各个方面。除监视器以外,计算机也可以包括其它外围输出设备(未示出),诸如扬声器和打印机。监视器的电源可以通过与其相关联的燃料电池和/或蓄电池来供应。计算机620可使用至一台或多台远程计算机,诸如远程计算机649的逻辑连接在网络化环境中操作。远程计算机649可以是工作站、服务器计算机、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机620描述的许多或所有元件,尽管在图6中只示出存储器存储设备650。图6中所示逻辑连接包括局域网(LAN)651和广域网(WAN)652,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN网络环境中使用时,计算机620可以通过网络接口或适配器653连接至局域网651。当在WAN网络环境中使用时,计算机620通常包括调制解调器654,和/或被连接至LAN上的通信服务器,和/或具有用于通过诸如因特网等广域网652建立通信的其它装置。调制解调器654可以是内置或外置的,它可以通过串行端口接口646被连接至系统总线623。在网络化环境中,相对于计算机620所描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。根据计算机编程领域的技术人员的实践,本发明是参考由诸如计算机620等的计算机所执行的动作和操作的符号表示来描述的,除非以其它方式指出。这样的动作和操作有时候被称为计算机执行的。可以理解,动作和符号表示的操作包括由处理单元621对表示数据位的电子信号的操纵,该操纵引起电子信号表示的结果引起的变化或减少;以及在存储器系统(包括系统存储器622、硬盘驱动器627、软盘628以及CD-ROM631)中的存储单元处对数据位的维护,借此重新配置或以其它方式更改计算机系统的操作和对信号的其它处理。其中维护这样的数据位的存储单元是具有对应于该数据位的特定电子、磁性或光学性质的物理位置。现在参考图7,示出了可以使用用于在客户机或服务器端上无线显示的本发明各个方面的服务器系统700。客户机720可以是硬件和/或软件(例如,线程、进程、计算设备)。系统700也可以包括一个或多个服务器740。服务器740也可以是硬件和/或软件(例如,线程、进程、计算设备)。客户机720和服务器740可以按根据本发明的传输的数据包的形式在两个或多个计算机进程之间通信。如所示,系统700包括可以促进客户机720和服务器740之间和/或各自显示监视器之间的通信的通信架构780。客户机720操作上连接至可以存储对客户机720本地的信息的一个或多个客户机数据存储。而且,客户机720可以访问和更新位于运行服务器进程的服务器计算机740上的数据库760。在本发明的一个方面中,通信架构780可以是因特网,而客户机进程为web浏览器,服务器进程为web服务器。同样,典型的客户机720可以是通用计算机,诸如含有中央处理器(CPU)、系统存储器、用于将个人计算机连接至因特网的调制解调器或网卡和显示器,以及诸如键盘、鼠标等的其它组件。同样,典型的服务器740可以是大学或公司大型机,或专用的工作站等。以下提供根据本发明为配置文件提供示例的样本XML模式,作为附录A部分,且该附录被认为是描述本发明的本说明书的一部分。而且,尽管本发明是参考某些示出的方面来示出和描述的,但可以理解,在阅读和理解本说明书和附图之后,本领域的技术人员可以想到等效的更改和修改。尤其对于由上述组件(程序集、设备、电路、系统等)执行的各个功能,除非以其它方式指示,否则用于描述这样的组件的术语(包括对“装置”的引用)旨在对应于执行所述组件的指定功能的任何组件(例如,功能等效的组件),即使在结构上与执行本发明此处所示的示例性方面的功能的所揭示的结构不同。在这一点上,也可以认识到,本发明包含系统,以及含有用于执行本发明的各个方面的动作和/或事件的计算机可执行指令的计算机可读介质。而且,就术语“包括”、“包含”、“具有”、“拥有”以及其变化在详细描述中或者在权利要求书中所使用的意义上而言,这些术语旨在以类似于术语“含有”的方式为包括性的。附录A<?xmlversion=″1.0″?><xsschematargetNamespace=″http//schemas.microsoft.com/SqlServer/DataAccessClass″xmlnsxs=″http//www.w3.org/2001/XMLSchema″elementFormDefault=″qualified″attributeFormDefault=″unqualified″><xselementname=″parameters″><xscomplexType><xssequence><xselementname=″connectionString″><xscomplexType><xsattributename=″value″type=″xsstring″use=″required″/></xscomplexType></xselement><xselementname=″handcodedSprocs″minOccurs=″0″><xscomplexType><xsattributename=″file″type=″xsstring″use=″required″/></xscomplexType></xselement><xselementname=″prefixToRemove″minOccurs=″0″><xscomplexType><xssequence><xselementname=″sprocNamePrefix″type=″xsstring″minOccurs=″0″maxOccurs=″unbounded″/><xselementname=″sprocArgPrefix″type=″xsstring″minOccurs=″0″maxOccurs=″unbounded″/></xssequence><xsattributename=″isSprocArgInitialLowerCase″type=″xsboolean″/></xscomplexType></xselement><xselementname=″timeout″><xscomplexType><xsattributename=″command″type=″xsstring″use=″required″/></xscomplexType></xselement><xselementname=″output″><xscomplexType><xssequence><xselementname=″using″type=″xsstring″maxOccurs=″unbounded″/></xssequence><xsattributename=″file″type=″xsstring″use=″required″/><xsattributename=″namespace″type=″xsstring″use=″required″/><xsattributename=″class″type=″xsstring″use=″required″/></xscomplexType></xselement><xschoiceminOccurs=″0″maxOccurs=″unbounded″><xselementname=″dsSproc″><xscomplexType><xssequence><xselementname=″table″maxOccurs=″unbounded″><xscomplexType><xssequence><xselementname=″primaryKey″minOccurs=″0″maxOccurs=″unbounded″><xscomplexTypemixed=″true″><xsattributename=″fixupType″type=″xsstring″/></xscomplexType></xselement></xssequence><xsattributename=″name″type=″xsstring″use=″required″/></xscomplexType></xselement></xssequence><xsattributename=″name″type=″xsstring″use=″required″/><xsattributename=″schema″type=″xsstring″use=″optional″default=″dbo″/></xscomplexType></xselement><xselementname=″ndsSproc″minOccurs=″0″maxOccurs=″unbounded″><xscomplexType><xsattributename=″name″type=″xsstring″use=″required″/><xsattributename=″schema″type=″xsstring″default=″dbo″/></xscomplexType></xselement></xschoice></xssequence></xscomplexType></xselement></xsschema>权利要求1.一种促进对数据库的数据访问的系统,包括基于配置文件和数据库中的存储过程自动生成数据访问层的生成器;以及使用所述数据访问层来访问所述数据库的中间层组件。2.如权利要求1所述的系统,其特征在于,所述配置文件是用作描述应用程序编程接口(API)的声明文件的可扩展标记语言(XML)文件。3.如权利要求2所述的系统,其特征在于,所述XML配置还包括将参数从事务结构化查询语言(SQL)基础转化为.NET架构的编码约定。4.如权利要求3所述的系统,其特征在于,还包括对SQL和.NET架构之间的差距建立连接的代码。5.如权利要求4所述的系统,其特征在于,所述代码是C#TM代码。6.一种访问数据库的方法,包括由数据类生成器剖析XML配置文件;将所述文件中的数据与存储在所述数据库中的存储过程协调;以及由所述数据类生成器自动生成中间层的数据访问层。7.如权利要求6所述的方法,其特征在于,还包括访问所述数据库中间层。8.如权利要求6所述的方法,其特征在于,还包括生成代码来创建调用所述数据库中的存储过程的命令。9.如权利要求6所述的方法,其特征在于,还包括从所述数据库中为所述存储过程自动取回参数命令。10.如权利要求6所述的方法,其特征在于,还包括输出证明调用存储过程的过程的注释。11.如权利要求6所述的方法,其特征在于,还包括为所述数据访问层定义数据访问类。12.如权利要求6所述的方法,其特征在于,还包括保留来自所述数据库的结果集和无结果的集合中的一个。13.如权利要求6所述的方法,其特征在于,还包括创建引导码。14.如权利要求13所述的方法,其特征在于,还包括将存储过程名映射至面向对象的编程名称。15.如权利要求6所述的方法,其特征在于,还包括捕捉与从所述存储过程调用得到的输出参数相关联的参数。16.如权利要求15所述的方法,其特征在于,还包括将所述捕捉到的参数传递给客户机层。17.一种促进数据访问的系统,包括用于基于配置文件和数据库中的存储过程来生成数据访问层的装置;以及用于访问所述数据库的装置。18.如权利要求17所述的系统,其特征在于,还包括用于描述应用程序编程接口的装置。19.如权利要求17所述的系统,其特征在于,还包括用于将参数从事务结构化查询语言(SQL)基础转化为.NET架构的装置。20.如权利要求17所述的系统,其特征在于,还包括用于对SQL和.NET架构之间的差距建立连接的装置。全文摘要通过数据访问层生成器,为具有存储过程的关系型数据存储的中间层自动生成数据访问层的系统和方法。数据访问层生成器可以使用可扩展标记语言扩展(XML)来确定通常向访问层展示的存储过程。这样的安排可以促进关系型数据库中使用存储过程的数据访问。而且,关于数据库的信息可以存储在一个位置中,来降低这样的信息与维护在中间层的信息不同步的风险。文档编号G06F17/30GK1804840SQ20051013703公开日2006年7月19日申请日期2005年12月12日优先权日2005年1月12日发明者B·N·范伯格申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1