diff options
Diffstat (limited to 'web/tds-providers')
-rw-r--r-- | web/tds-providers | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/web/tds-providers b/web/tds-providers new file mode 100644 index 00000000000..6442e69601a --- /dev/null +++ b/web/tds-providers @@ -0,0 +1,164 @@ +* Design of the Microsoft SQL Server, Sybase, and TDS Data Providers in Mono + + <ul> + * After much discussion among the Mono ADO.NET developers, + we have come up with the design of implementing a Sybase, Microsoft + SQL Server, and TDS Generic ADO.NET providers. These providers have + been created and are actively developed by Tim Coleman. + + * Since Sybase and Microsoft SQL Server databases both + use the TDS protocol for data access, and other implementations + of TDS (FreeTDS and jTDS) have included support for multiple + versions of the TDS, we have decided to do the same. + + * The TdsClient ADO.NET provider will be Mono's first provider + written completely in C# without any dependencies except + the usual suspects: corlib.dll, System.dll, and System.Xml.dll. + </ul> + +* New ADO.NET Providers + +<p>There will be three ADO.NET providers that will use TDS. + + <ol> + <li><p>Mono.Data.SybaseClient namepace and assembly will + hold the ADO.NET provider for Sybase SQL Server database. + This provider uses TDS version 5.0 which + can only be used with Sybase databases. + + <li><p>System.Data.SqlClient namespace and System.Data assembly + will hold the ADO.NET provider + for Microsoft SQL Server 7.0/2000 databases. This provider is to be + compatible with SqlClient in Microsoft .NET and uses TDS version 7.0 + which only supports Microsoft SQL Server 7.0/2000. + There is TDS version 8.0 + which we will need to support as well, but it is used for + Microsoft SQL Server 2000 databases. + + <li><p>Mono.Data.TdsClient namespace and assembly is a generic + provider for older TDS databases. This provider will default to + using TDS version 4.2 which can be used by older Sybase and + Microsoft SQL Server databases. + </ol> + +* Building The New Providers + + <p> All three providers will use common internal code + at Mono.Data.TdsClient.Internal. Any classes in + Mono.Data.TdsClient.Internal will have the internal + keyword and will be built with the assembly of that provider. + <ol> + <li><p>SqlClient will build its assembly System.Data using files + from System.Data, System.Data.SqlClient, System.Data.SqlTypes, + System.Data.Common, and Mono.Data.TdsClient.Internal. + + <p>SqlClient + will only reference the usual + suspects: corlib.dll, System.dll, and System.Xml.dll. SqlClient will be + a wrapper around TdsClient.Internal, but provide specific functionality to + Microsoft SQL Server 7.0/2000 databases. + + <p>SqlClient build example: + +<pre> + mcs -target:library -out:System.Data.dll \ + System.Data.SqlClient/*.cs \ + ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs \ + [any other classes in System.Data assembly...] \ + -r corlib.dll -r System.dll -r System.Xml.dll +</pre> + + <li><p>SybaseClient will build its assembly Mono.Data.SybaseClient using + files from Mono.Data.SybaseClient and Mono.Data.TdsClient.Internal. + SybaseClient will reference + the usual suspects plus System.Data.dll SybaseClient will + be a wrapper around TdsClient.Internal, but provide specific + functionality to Sybase. + + <p>SybaseClient build example: + +<pre> + mcs -target:library -out:Mono.Data.SybaseClient.dll \ + Mono.Data.SybaseClient\*.cs \ + ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs + -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll +</pre> + + <li><p>TdsClient will build its assembly Mono.Data.TdsClient + using files from Mono.Data.TdsClient + and Mono.Data.TdsClient.Internal. TdsClient will reference the + usual suspects plus System.Data.dll TdsClient is a wrapper + provider around TdsClient.Internal used for generic + unit tests. TdsClient will a wrapper around TdsClient.Internal + as a generic TDS provider + and allow TDS configuration options not exposed in SqlClient + nor SybaseClient, such as, TdsVersion will be exposed in TdsClient + but not in SqlClient nor SybaseClient. + + <p>TdsClient build example: + +<pre> +mcs -target:library -out:Mono.Data.TdsClient.dll \ + Mono.Data.TdsClient\*.cs \ + Mono.Data.TdsClient.Internal\*.cs \ + -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll +</pre> + </ol> + +* Classes in Mono.Data.TdsClient.Internal will: + + <ul> + <li>use the internal keyword to prevent exposing these classes + to the System.Data.dll assembly. + + <li> implement the ADO.NET interfaces just like any other ADO.NET provider, such as, + IDbConnection, IDbCommand, IDataReader, IDataRecord, IDataAdapter, etc... + + <li> be sealed just like other providers + + <li> provide features to be directly used by the SqlClient and SybaseClient + providers, such + as, setting the default TDS version: SqlClient to 7.0 and SybaseClient + to 5.0 and TdsClient to 4.2. + + <li> be written completely in C# or IL assembly language (if need be). + + <li> implement the TDS protocol version 4.2, 5.0, 7.0, and 8.0. This + is where most of the + work will take place. + + <li> be an internal ADO.NET provider to the public ADO.NET providers: + System.Data.SqlClient, Mono.Data.SybaseClient, and Mono.Data.TdsClient. + </ul> + +* Implementation Details of the TDS Protocol + + <ul> + * will be implemented in pure C# from scratch + + * will reside in Mono.Data.TdsClient.Internal + + * will use FreeTDS and jTDS as rerferences. + </ul> + +* More Information + + <ul> + * <a href="http://www.freetds.org/">FreeTDS</a> is C API that implements + the TDS protocol. Has libraries for tds, ctlib, and dblib. It builds + and runs on Windows, Linux, and other platforms. FreeTDS provides + data access to Microsoft SQL Server and Sybase databases. + + * <a href="http://jtds.sf.net/">jTDS</a> is a 100% Java JDBC provider + for Microsoft SQL Server and Sybase databases. + + * <a href="http://www.freetds.org/tds.html">TDS Protocol</a> + </ul> + +* Contribute + + <p>Anybody willing to help? If so, + contact any of the people working on the ADO.NET support + in Mono: Rodrigo Moya, Tim Coleman, Daniel Morgan, Brian Ritchie, + Vladimir Vukicevic, Ville Palo, Franklin Wise, and others. + |