I may be a bit out of my depth here, but... If I understand the Arc web framework correctly, navigation state is handled by appending links (or forms) with an unique identifier which identifies a closure existing on the server. When the link is navigated, the server receives the ID and locates and executes the closure. This have some serious drawbacks. You have to keep closures alive indefinitely, since the user might have bookmarked the URL, or Google might have indexed it. If you keep them in memory then all is lost if you restart the server: You users receive the dreaded "unknown or expired link" and your pagerank plummet. Millions in marketing are lost. If you keep them in a database you have to manage a database that might grow very quickly - forever and ever. Perhaps this can be alleviated with a different approach? Instead of using an ID to a closure, the URL could contain a reference to the function (not to a closure but to the name of the function) and the actual values of the bindings. Basically you are serializing the closure to the URL. This allows you to keep the server stateless. You can recompile the script or restart the server without users noticing. You can scale to multiple servers without problems. The bindings should probably be encrypted. The biggest issue I see is that the amount of data in the closure becomes too big. But not all user-specific information should be kept in closures anyway. Some information should be kept in session state (which should be tracked using cookies rather than URL's) . Does this make sense? |