User's Guide
Introduction
.Nick's is currently made of two libraries: DotNX.Core, which contains general purpose classes, and DotNX.Ftp, which implements an FTP client. Both libraries are being developed under .NET 2.0, but they should also work under 3.x. I made no attempt to be compatible with .NET 1.x and I haven't tried them on either MONO or the compact framework.
The code should be reasonably bug free, as it is currently part of a couple of programs that run almost continuously 24 hours a day in a production setting. However there are parts that I'm not satisfied with, test coverage is decidedly lacking, especially for DotNX.Core, the documentation should be expanded and I haven't made up my mind yet on the shape that releases should take; this is why I consider .Nick's to be in alpha state.
DotNX.Core
This library is a holding place for a set of small class collections, each of which is too small in itself to form a standalone library. The areas currently addressed are:
- Timely resource disposal, by providing support for the correct implementation of the IDisposable interface. The classes in this area are DisposableBase, which factors the portion of IDisposable that should only be implemented at the root of a hyerarchy, and AutoDisposable, which helps ensuring that IDisposable members are correctly handled during the construction of their containing object.
- Collections and algorithms, which contains a couple of new collections, ComparableCollection, a SortedCollection that implements the IComparable generic interface, and SortedCollection, a key-value pair collection that guarantees ordered traversal. In this area there are also a few helper functions that work on collections and arrays: the Collections class provides comparisons while the Args class makes it possible to pack multiple string arguments in a single array or collection.
- Application configuration, which provides a unified, type-safe approach to the representation and retrieval of information stored in .NET configuration files. This area is based on an example posted by Raskal to the RioterDecker blog.
- Threads and services, a rather naive attempt to provide helper classes for spawning threads and implementing Windows services.
DotNX.Ftp
DotNX.Ftp derives from Jean-Jacques Boudart's .NET FTP Client. I cleaned it a little bit and added a regression test suite. I also split its interface in two: the Client class provides a higher level view, which is analogous to the command set of typical interactive FTP clients; the Connection class provides almost direct access to the commands described in the protocol's RFC specifications.