Web services: Circular reference serializing problem

Web services using Document/literal (literal XML) encoding is the actual interoperability standard. The XmlSerializer in Mono which is used in System.Web.Services.WebService serializes using this standard and is pretty simple to write web services using WebServiceAttribute and WebMethodAttribute. By the way you can generate a proxy to interoperate with the web service with several frameworks and technologies even outside .Net, like Python or PHP.

However, there are some issues that can't be solved with Documnent/literal format, because literal XML is a tree and it can't represent a graph for example. With RPC/encoded style you can do this but is not standard so you loose interoperability. You can read a complete article here about that.

Now in Boxerp project we will use Remoting instead of web services for communications. We loose a little of interoperability but gain developing simplicity and facilities.