In a MMORPG I dont see why you need to keep live sockets. Setting up the correct web services could allow you to do everything through standard HTTP connections. (Alowing me to play through my companies firewall).

OK I must admit I dont know if this is really possible. With a socket connection there is a direct link from PC to Server with Web Services you would be using the HTTP protocol and thereby having all the over heads of routers etc (you may be able to get around this by submitting to the server's IP address).

I have just started on a new project at work as the Technical Architect on the project. The decision was already made to develop in Delphi.NET. For the Project I am proposing a 4 tiered system. The Back End will be an Oracle database, on top of that a Business Rules layer comprising web services. Then a Presentation Layer (ASP.NET in Delphi) will consume those web services to deliver web pages to the client - BUT - the client PC could also have a rich client that consumes the web services directly as well.

I see no reason why a MMORPG cannot use the same sort of technology to distribute its information. Have a look at my Web Live tutorial to see how it would be structured. I'll do my best to get a Web Services tutorial up as soon as possible.

<ramblings>
Web Services use XML. With XML you can structure your data in any format you want. This allows a single call to the server to deliver multiple types of information to the client. For example the Details of the room they are standing in - eg Width, Length, color floor, name etc, and can then include a record set of objects actually in the room at the same time.

Web services in Delphi come in two different forms.
1. Sharing datasets accross the internet through the use of remote data sets inside TClientDataSet
2. Sharing objects across the internet through the use of TRemotable objects (this is what I'll write a tutorial on).

The first type allows you to share actual datasets accross the internet along with clild datasets (master/child structure) to many levels.

The second to me is the most interesting because it effectivly makes a copy of an object on the client sharing the data and methods of an object on the server. This means that you can through XML over HTTP make method calls on the remote server. So in the example above instead of seeing it as an XML block of data containing information about a room it is actually a TRoom object that has a dynamic child array of TGameObjects and various properties to represent Width, Length and floor color.

I am waiting for my cgi-bin directory to be set up on my cairnsgames web site and will then make some sort of simple game that uses web services.
</ramblings>