I’ve been using the ACE C++ library recently and I’m very impressed. It’s an extremely fast portable networking and server-architecture library.
- Portable primitives for sockets, threads, synchronization, logging, and many other basic components
- “Plug-and-play” pattern architectures for building high-speed servers
- A suite of IPC tools for fast portable inter-process communication
- Extra portability tools such as replacement containers, allocators, strings, etc., in case some of your target platforms don’t have good standard libraries
For me, the magical portability features are huge. I like to develop on Windows and deploy on Linux, but doing this used to be very stressful. The ACE library really takes the nightmare out of it, though. I used to grit my teeth and prepare for serious headaches whenever I copied my Windows code over to the Linux box, but now I trust that it’s going to Just Work.
I think there are two reasons this library hasn’t been a runaway success yet. First, the online tutorials are sub-par. The online references are fine, but for a tutorial you really need to buy the book.
The other problem is that it’s really two libraries in one. It’s both a low-level utility collection and a high-level pattern library in one, and this can cause a bit of a mental disconnect to people who are looking for one half or the other.
Even so, with the book in hand I was up and running in less than a day. I’m very comfortable with C++, so your mileage may vary, but I found it pretty painless.
The ACE library should be a serious consideration as part of your MMO server architecture, either as the foundation of a full server or as a plug-in replacement for underperforming components written in other languages. This library makes C++ much more appealing as a server platform.
Now if there was only a similar C++ library for portable SQL interfaces…