Review: Universal .NET
Desaware has been in the components business for a long time, but with
the release of their new Universal .NET bundle, they're entering new
territory. First, the price is excellent for the number of components
that you receive. Second, you get the full source code to everything,
which provides excellent insurance for any project that decides to use
Here's what you get as part of the package (all components are built to
be used from either VB .NET or C# applications):
- SpyWorks: Probably the component for which Desaware is best-known,
this one enables you to perform subclassing and event hooking down at a
very low level in the Windows system.
- NT Service Toolkit: A framework for building your own system services.
- StateCoder: A state machine framework for your .NET applications.
- StorageTools: An interface to OLE structured storage (the storage
medium used by compound files such as Word and Excel documents).
- EventLog Toolkit: Code for building event log sources.
- OneTimeDownload-5M: A way to build ASP.NET applications with
personalized links that allow only limited downloads.
- LineGraphs-5M: A graphing component for ASP.NET
- INIFileTool-5M: Code for reading and writing INI files from .NET
And, of course, it all comes with source code. Each of the source code
projects is stored separately, and there are readme files explaining the
tools and customizations you'll need to rebuild each one from scratch.
The actual components vary in their usefulness. Many are ports of
Desaware's corresponding COM components, but that doesn't mame them less
useful; indeed, if you've been using them in a VB5 or VB6 environment,
this provides an easy upgrade path. Others (the 5M ["5-minute"] series)
Some of these pieces overlap with native .NET Framework capabilities, of
course. In particular, you can build services and event sources without
buying any third-party components at all. But the Desaware components
allow you to use much more of the native functionality than .NET
currently exposes. If you've been trying to work with .NET for services
and events and have run up against the limitations of the Framework,
these are a good bet to move you forward.
SpyWorks, of course, is off in a class by itself. You can use it to set
system-wide keyboard hooks, or to export functionality from .NET
applications as a true Windows DLL, or to send private messages between
applications, or to muck around in another application's memory. Being
able to do these low-level tasks from VB .NET or C# will be a real
benefit to many developers who don't care to mess around with C++.
Overall, there's a lot of value here, and the inclusion of the source
code is just the icing on the cake (you might want to read the Desaware
white paper, "Source Code Economics", for a take
on what this means to you). Not everyone will need to perform the tasks
that Universal .NET enables, but if you do, there's a lot of code here
for a reasonable price.
Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.