Microsoft System.XML 服务是一组通过 .NET 数据提供程序来处理 XML 数据集的接口。ODP.NET 与 System.XML API 交互操作,通过 ODP.NET DataAdapter 接口为其提供数据。使用 XML DB 和 System.XML 的一个主要的不同之处是,前者在数据库服务器上提供包含数据的 XML 服务。
而后者在客户端操纵 XML。因此,ODP.NET 为程序员提供了极大的灵活性,用以选择最适合于他们项目需求的 XML 技术。
性能
ODP.NET 与 OLE DB .NET 和 ODBC .NET 的一个主要的不同之处在于其更好的性能。根据以前的描述,ODP.NET 接近于 .NET 环境,因此它并不使用数据访问桥接,而其他两种数据访问方法需要这种桥接。数据访问桥接是数据经过的一个附加的间接层。这不仅意味着性能降低,还可能给数据访问层带来不稳定性。额外的层造成了更多潜在的不稳定性,因为这就增加了出现故障的可能性。
此外,ODP.NET 对检索和操纵 Oracle 本地类型进行了很多优化,如 LOB 和 REF Cursor,而 OLE DB .NET 和 ODBC .NET 很少进行优化。
通过使用 ODP.NET 提供的许多调整特性,可以进一步改善 .NET 的数据访问性能。根据最适合于应用程序的使用配置文件的情况,确定这些调整特性的设置。调整特性包括:
- 连接池 — 为应用程序建立连接池,允许设定连接生存时间、最小和最大池的尺寸
- 预取行 — 指定每次服务器往返时将要取出的行数
- 数据块大小(LONG,LONG RAW) — 指定要取出的非标量数据的大小
原生 Oracle 类型
在 .NET 中,Microsoft 已经在不同的 .NET 编程语言中推出了一组统一的数据类型。使用 ODP.NET 时,Oracle 用户可以访问 .NET 数据类型以及 Oracle 原生类型。在 .NET 应用程序中可以充分操纵 Oracle 类型,并与 .NET 数据类型进行交互。Oracle 原生类型提供了高级功能,以存储和检索数据库的专用数据结构,如 XML 或 Microsoft Word 文档。甚至在使用通用类型(如 OraDecimal,等同于 .NET 的十进制数字类型)时,Oracle 类型也提供更好的功能。
在 OraDecimal 的示例中,它提供 38 位精确度,高于 .NET 十进制数提供的 28 位精确度。
ODP.NET 支持全部高级 Oracle 类型,包括 REF Cursor、LOB (CLOB、BLOB、NCLOB)、BFILE、Long、RAW、LONG RAW 和 N-data 类型。使用 OLE DB .NET 或 ODBC .NET 的一个限制是,用户无法充分操纵 Oracle 类型。例如,在 ODP.NET 中,可以任意访问那些作为 PL/SQL 输出参数而获得的多个 REF Cursor 对象。而使用其他两种数据访问方法时,必须以线性方法访问 REF Cursor。
其他主要特性
ODP.NET 提供了许多其他 Oracle 数据库特性,包括 PL/SQL、事务处理和 Unicode 支持。ODP.NET 用户可以完全执行数据库中的 PL/SQL 存储过程和函数。
PL/SQL 可以被封装或不封装。程序员拥有了使用 PL/SQL 的重要灵活性,包括从一个存储过程返回多个结果集的能力。
ODP.NET 可以作为资源管理器参与到使用 Oracle 数据库的事务处理应用程序中。在 .NET 环境中,ODP.NET 使用 Microsoft Enterprise Services 作为事务处理协调器。Oracle Services for Microsoft Transaction Server (OraMTS) 作为 ODP.NET、Enterprise Services 和 Oracle 数据库之间的代理程序,以便协调这些事务。OraMTS 为 ODP.NET 程序员提供了强健的体系结构,使其事务处理应用程序保持高可用性并以可伸缩的方式执行。
ODP.NET 完全支持 Unicode,因此 .NET 用户可以用多种书面语言方便地对应用程序进行全球化。这样能够更快捷地在多语言环境中部署应用程序。
结论
ODP.NET 为程序员的 .NET 应用程序提供了更好的性能、灵活性以及特性的选择。利用 ODP.NET,开发人员能够使用 .NET,但不必损失 Oracle 强大的数据管理能力。有关更多信息,请访问 ODP.NET 网页。