So, what's the difference between the free code and the licensed version?

People often ask me what the difference is between the free code that’s available on this website and the licensed version; this is what I reply…

Please note that the most up to date information on the licensed version of our high performance, super scalable, IO completion port based networking code will always be available from the dedicated website for The Server Framework.

The latest version of The Server Framework is available in source code form, the same as the free version, but includes many new features , performance improvements and bug fixes. It includes many sample servers and support for AcceptEx(), ConnectEx(), IPV4, IPV6, TCP and UDP, multicast, connection limiting (to prevent uncontrolled resource usage), etc. The code also comes with a sample that shows how to link with MFC libraries and use MFC code in your servers. The latest version of the code includes complete UDP support and support for multi-cast and builds and runs natively on x86 and x64 based machines.

The following sets of code are available. (see here for the most up to date details for the various options available).

  1. TCP/UDP server framework - based on the code project and blog releases of the code and featuring these new features:
  • Ability to share IO thread pools, buffer pools and socket pools between server instances (if you run several TCP or UDP servers within the same process then they can all use the same set of IO threads and buffer/socket pools). This reduces resource usage and increases performance.

  • Outgoing connection support - the framework now supports sync and async connection establishment to allow for servers to make outbound connections or to allow the framework to be used for client applications.

  • Easy multiple server management - the framework provides a “Server collection” class which makes it easy to manage multiple server instances in a single process making servers that listen on multiple ports simple to implement.

  • Support for shared locking - where per socket locks are required these can be shared between sockets to reduce resource usage at the expense of potentially more contention. This sharing can be configured easily in one place.

  • Support for multi-homed machines; servers can listen one or all of the network interfaces in a machine.

  • “Better” code factoring. The code has been broken apart into a more easily testable design.

  • Bug fixes.

  • Builds with VC 6 (note not supported after release 5.2.3 of the framework), VS.Net 2002, VS.Net 2003, VS.Net 2005 and VS.Net 2008 (x86 and x64 native on 2005 and 2008)

The framework comes with sample echo servers including:

  • a basic server which does all of its work on the IO threads.

  • a “business logic” thread pool server which passes messages from the IO threads to a “business logic” pool which can do database work, etc.

  • an AcceptEx() server

  • a UDP server

  • a UDP server that listens on multicast groups

  • a multi-homed, server that listens on multiple ports etc.

In addition we can supply.

  1. Windows Service functionality. Many of our clients find that their servers should really run as Windows Services. We have a library of code that makes this easy. To allow for easy debugging the library includes the option of running the service in “debug” mode which runs the services as a normal executable (without using the SCM) and allows external control via an event based system.

This also means that you can run the service inside the Visual Studio debugger.

  1. Performance counters. We find that the best way to tune our servers is to add appropriate monitoring using performance counters so that you can view the activity of the server using perfmon.

  2. SSL/TLS (https style encryption) support using OpenSSL OR Microsoft’s SChannel (note that you’d purchase either the OpenSSL or the SChannel code, or both). With the addition of our SSL library, the framework can use SSL to protect the data stream. The encryption/decryption all occurs within the framework and the user development interface to the framework doesn’t change so it’s trivial to add SSL to an existing server or to write a server that listens on one port with SSL and another without.

  3. CLR hosting. Servers that demonstrate hosting the .Net runtime to enable you to write part, or all, of your server logic in a .Net language, such as C#.

  4. Bluetooth server functionality - build servers that utilise the Windows Bluetooth Winsock support.

Each of the above comes with example servers which demonstrate the key features of the additional code that is supplied.

We provide email support for the framework. We can provide consultancy to help with the integration of your business logic if you require help. Most clients don’t require this as the framework is very easy to use and the points at which you would link to your business logic are limited. The addition of SSL occurs “below” the point where your business logic would sit so you can easily add SSL to an existing server that has been built with the framework and you can also easily create servers that can listen on multiple ports some of which are secure and some of which are not without needing to duplicate business logic.

Licensing terms are such that you have an unrestricted license to use and modify the source code and a royalty free license to distribute anything built from the code in compiled form. If you need to be able to distribute our source code to your clients then we’ll need to discuss further licensing options.

Please contact me for details on pricing and our standard terms and conditions.

Updated: 10 May 2007 - some of the documentation for the licensed version of the library is available here.

Updated: 3 October 2007 - the licensed code now supports x64. Latest release documentation, release notes and release announcement here.

Updated: 18 February 2008 - Release 5.2.1 - see here for details of the changes.

Updated: 18 July 2008 - Release 5.2.2 - see here for details of the changes.

Updated: 3 August 2008 - Release 5.2.3 - see here for details of the changes.

Updated: 9 December 2008 - Release 5.2.4 - see here for details of the changes.

Updated: 29 January 2009 - Release 5.2.5 - see here for details of the changes.

Updated: 26 March 2009 - Release 6.0 - see here for details of the changes.

Updated: 26 March 2009 - The full documentation pack for the version 6.0 of the licensed version of the code is available here.

Updated: 04 September 2009 - Release 6.1 - see here for details of the changes.

Updated: 16 November 2009 - Release 6.1.1 - see here for details of the changes.

Updated: 25 November 2009 - Details of some of the features of the licensed code can be found here.

Updated: 15 December 2010 - Please see The Server Framework website for the latest and most up to date information.