|
Comments
|
Today's Top SOA Links
Features Get the Most from .NET with Oracle, DB2, and Sybase Databases
Exercising forethought in designing data-driven .NET solutions can save time, trouble, and expense
By: Mark Troester
Jan. 6, 2007 08:00 PM
(SYS-CON Media) - The capabilities and advantages of using the Microsoft .NET Framework are undeniable. It provides the ability to rapidly build, deploy, manage, and use connected, security-enhanced solutions with Web Services, enabling businesses to integrate their systems more rapidly and agilely and helping them realize the promise of information anytime, anywhere, on any device.
This is readily evident in database connectivity - a critical yet often overlooked aspect of Web Services integration. The business-critical data of many an enterprise resides on Oracle, DB2, and Sybase ASE relational databases, yet the ADO .NET providers that come with those databases - Oracle ODP.NET Provider, IBM DB2 .NET Data Provider, and Sybase ASE ADO.NET Data Provider - are simply incapable of availing themselves of the many benefits that .NET can provide. Using these providers can have a considerably adverse impact on the performance of your system - a highly undesirable outcome, since the slowest operations for a data-centric application (not to mention the most costly in terms of processing overhead) involve network requests and disk I/O. Using the database vendor supplied data providers also costs in terms of the manageability and security of your systems, with real potential consequences for your organization's bottom line. Microsoft's implementation of the Common Language Infrastructure (CLI) standard for the virtual machine component of the .NET Framework, the Common Language Runtime (CLR), provides the execution environment for all .NET Framework code. Code that runs in the CLR is known as managed code. The CLR provides numerous benefits for application developers using managed code, such as:
Factors that Commonly Prevent Other Databases from Fully Leveraging .NET The most obvious consequence of this is that the performance advantages of the managed code environment are lost when unmanaged code is called. The CLR makes additional checks on calls to the unmanaged or native code, putting a drag on performance. Other less obvious consequences can also have real impact on the operation of your .NET environment and must also be considered. Only when your .NET application uses components built using 100% managed code do you get the full benefits of the .NET Framework. With ADO.NET data providers, this can't be achieved unless the provider is architected to dispense with the unmanaged client element altogether. A provider that uses the same (officially supported) protocol used by the native database clients can be designed to communicate directly with the database at the network level. This enables all the database-related application code to run entirely in the CLR - that is, it's 100% managed - eliminating the need for the driver to interact with another layer (the native database client), which can't be optimized for an ADO.NET environment. Runtime A good example is NGEN.exe: a .NET utility that post-compiles applications. Post-compiling improves start-up performance for managed code while preserving all the security and stability advantages of managed assemblies. It also ensures that the data provider is optimized for the hardware architecture of the particular machine on which it's being installed. NGEN allows for superior use of shared memory and computing resources that are critical to optimal performance. Using data providers built with 100% managed code can leverage similar runtime features and services in the following areas:
Calling unmanaged code, which takes place when a data provider calls a client library, bypasses the .NET CLR security. This doesn't necessarily mean that a security problem exists, of course; only that it opens a door to potential problems due to the functionality of the unmanaged code that has direct access to memory or machine registers, or uses pointers. Once that code is executing, the CLR can no longer check it. Development and Deployment When Oracle's ODP.NET data provider is used, it calls the unmanaged Oracle client pieces specific to a particular version of the Oracle database. Running two versions of the unmanaged data provider - for example, Oracle 9i and Oracle 10g - on the same machine results in conflict because each data provider will require a particular version of the clients, which in turn are native Win32 DLLs. Organizations typically address the issue of conflicts by deploying multiple mid-tier servers, each running different database client software; this makes for a more costly, convoluted, and difficult-to-manage environment having multiple combinations of provider and native clients. This brings up versioning issues beyond the scope of a single application project, intended to address a single business solution. However, anyone tackling business problems in an actual multi-application environment must realistically consider such issues. Applications are tested and/or certified against specific versions of the database and corresponding middleware. So how, for instance, do you address different or unrelated applications being developed and/or updated on different schedules when it comes to data connectivity? Do you force all applications to use the same version of the database? If this isn't the case, do you segregate the applications on different machines since each server can only run one version of the native database client? Faced with these questions, it isn't hard to see the impediments to deployment flexibility when unrelated applications (and development teams) must coordinate their upgrade efforts. In nearly every project involving data connectivity, a myopic focus on solving the immediate challenge at hand is a non-strategy that can cause trouble and expense down the road. Other commonly employed non-strategies include never upgrading the database client software (which forces you to use older software with more limited features and will eventually cause support issues), or simply upgrading the client in hopes it won't break something from an existing application unrelated to the project underway. Using ADO.NET data providers designed with 100% managed code eliminates or solves all these issues, as follows:
In planning .NET-based projects for organizations, data connectivity should be carefully considered. This is particularly true now that - with the strides made in processing power and database design - performance and scalability bottlenecks have moved to the connectivity layer in well-designed applications. As this article makes clear, falling back on the data providers that come with the Oracle, DB2, and Sybase ASE databases prevent your solutions from fully leveraging the many advantages built into the .NET Framework's Common Language Runtime. These advantages can give a needed boost to the performance and scalability of data connectivity in .NET-based solutions. By using data providers built with 100% managed code that runs entirely in the .NET CLR, organizations incorporating Oracle, DB2, and/or Sybase ASE data resources into their solutions can fully leverage these performance and scalability advantages, along with a wealth of additional advantages that make their applications perform more efficiently and safely. (See Sidebar) Reader Feedback: Page 1 of 1
Your Feedback
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||