Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

CUBRID ADO.NET Driver Development Notes


Applicable to: v1.0

Contents

Release information

Attribute
Version Stable 1.0
OS Windows 
Dependencies Microsoft .NET framework ver 2.0 or above
License BSD License
Development language C#
Compiler MS Visual Studio 2010
Assembly name CUBRID.Data.dll
Assembly version 8.4.0.0
File version 8.4.0.0

Components

Component Beta release Stable release Notes
Provider library x x CUBRID.Data.dll
Documentation (.CHM) x x
Installer x - Beginner
- Advanced
Tutorials x
Scenarios Test cases x x
Unit tests ? Can be released later
UI Demo x x
VB.NET Demo x
Designer support 2012 (?)
NHibernate Demo x
Online documentation 2012 (?)

Features

The main features implemented in the driver are:

  • 100% Fully-managed code. Does not require any local CUBRID component installation.
  • Open source code, released under BSD license.
  • Implementation of the CUBRID 8.4 (sockets) communication protocol.
  • BLOB/CLOB support
  • Implementation of all ADO.NET model model primary classes
  • Extended classes implementation (SchemaProvider, CommandBuilder etc.)
  • Test cases. There are 70 scenario test cases.
  • Unit testing: In progress, contributing to the overall test coverage.
  • Driver implementation documentation, in CHM format.
  • Localization support built-in. For now, only English messages are released.
  • Various demos. In progress. UI, VB.NET, NHibernate etc.

In addition to these main features, we should also mention:

  • OID Support
  • All CUBRID specific functions commands, codes, messages etc. are declared in the driver, to suport future enhancements/functionalities.
  • Support for CUBRID collections
  • Support for DataTable data updates
  • Good test coverage
  • Code follows .NET coding guideliness
  • Support for specific connection settings: auto-commit, isolation level, lock timeout
  • Documentation in code, for all public methods 

Development Information

Technical Information

Attribute
Development language C#
Compiler/IDE MS Visual Studio 2010
Test framework - MS Visual Studio Test
- Custom test cases engine
Help compiler Sandcastle
HTML Help Workshop
Installer NSIS
Managed code 100% fully managed

Notes:

  • The project has been developed using MS Visual Studio 2010 Professions edition; however, it can be used also in the free MS Visual Studio Express 2010.
  • For unit testing, we have used the Visual Studio built-in capabilities:

  • The driver documentation was generated using the standard MSDN layout. If you want to change the layout, edit the Sandcastle project and choose a different format.
  • We have used NDoc to help with generatting the methods documentation.
  • The Code Metrics and the Code Analysis is performed using the integrated MS Visual Studio tools.

Statistics

Code metrics

Driver code

Attribute
Classes 23
Methods 500+
Lines of code (LOC) 3400+
Cyclomatic complexibility 1382
Maintainability index 88
Depth of inheritance 5
Class coupling 153

Scenarios Test cases code

Attribute
Test cases 70
Lines of code (LOC) 2101
Cyclomatic complexibility 297
Maintainability index 48

Unit testing code

Attribute
Unit test cases 100+

Classes

Class name
BatchResult
ColumnMetaData
CUBRIDBatchResult
CUBRIDBlob
CUBRIDClientFactory
CUBRIDClob
CUBRIDCollectionCommand
CUBRIDCommand
CUBRIDCommandBuilder
CUBRIDConnection
CUBRIDConnectionStringBuilder
CUBRIDDataAdapter
CUBRIDDataReader
CUBRIDException
CUBRIDOid
CUBRIDParameter
CUBRIDParameterCollection
CUBRIDSchemaProvider
CUBRIDStream
CUBRIDTransaction
ResultInfo
ResultTuple
Utils

Development issues

During the development of the driver, we came across some issues that needs to be acknowledged, in order to help future development projects.

CUBRID Documentation:

  • The sockets communication protocol is not documented. We have to rely on reverse engineering the sockets communication protocol from the JDBC driver source code.
ADO.NET documentation and models:
  • Mapping the CUBRID engine protocol to the ADO.NET specifics is a challenge because in many cases there is no (direct) equivalent or mapping for metadata, isolation levels, binary data, data types, date/time differences etc.
    Therefore there is no complete compatibility with the features implemented in the MS SQL Server ADO.NET driver, for example.
  • There are very few examples available online on how to implement an ADO.NET driver and many issues required a significant amount of time invested into analysis and investigation. 
Incompatibilities:
  • Running the Java Stored procedures/functions is not possible – Java VM is not available
  • Additional/Extended connection options are not available (for example, see http://dev.mysql.com/doc/refman/5.1/en/connector-net-connection-options.html)
  • There is no support for encrypted sockets communication
  • LOB support implementation needs a second database connection
  • The driver is not backward compatible, due to a different communication protocol

Resources

Test cases status tracking
https://docs.google.com/spreadsheet/ccc?key=0AqG9a0o6VHHEdGg5bFRLVDNfalRSYWUzXzBRSTA0M2c

Bug tracking
http://jira.cubrid.org/browse/APIS/component/10404

Sandcastle Help File Builder
http://www.codeplex.com/SHFB

ADO.NET Online documentation
http://msdn.microsoft.com/en-us/library/e80y5yhx%28v=vs.80%29.aspx

comments powered by Disqus
Page info
viewed 5476 times
translations en
Author
posted 3 years ago by
CUBRID
Contributors
updated 2 years ago by
View revisions
tagged
Share this article