Jeffrey M. Barber

Tombstone

AsyncSerialization

2002 โ€“ 2003 ยท age 20โ€“21

What it was

The smallest possible object-passing socket layer, in about 400 lines of C# on .NET 1.0. A client wrapped a TCP connection, read asynchronously into a buffer, and whenever enough bytes had arrived to match a leading four-byte length, deserialized one object and handed it to a callback. Writing was the mirror image: serialize, prefix with the length, send. A server accepted connections on a thread, numbered them in a sorted list, and fanned the same events out. Both ends spoke through one four-method interface, IChannel: object arrived, connect, disconnect, close, so the application never saw a socket. A stress client fired 50,001 strings at a server that ignored every one of them. The library never grew a second message type or a real consumer.

Wins, for the age

What it taught

Genealogy

Ancestors: File Sharing Accelerator: a client and server that moved data between peers. Zen Net: the first chat server and its client. ZenErd Overlapped Server: asynchronous sockets with a protocol "decided later". Znetfs: transfer over TCP with fair, resumable connections. Descendants: Adama Net: four-byte frames on one socket, grown up. Evolution eXPeriment: a client-server game over the same kind of connection. Play Workspace: one frame protocol that browser, gateway and server all agreed on.

Epitaph

Here lies AsyncSerialization. It framed objects on a socket well enough to send fifty thousand of them, and never sent anything else.