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
Links
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