[Opensim-dev] [Proposal] New software architecture
Justin Clark-Casey
jjustincc at googlemail.com
Fri May 22 15:00:01 UTC 2009
diva at metaverseink.com wrote:
> I'm guessing here, but it can also be there. I'll keep an eye on the
> discussion tab. Thanks. Your input will be very much appreciated.
Okay. In general it all looks pretty good to me on the surface. Here are some comments/questions, a mix of minor admin
and more major ones.
1. I put a link to this page in the proposals section of the main documentation page at
http://opensimulator.org/wiki/Developer_Documentation so that this isn't an orphan wiki page.
2. Could you put the proposer names on this proposal? How about a closing date? Perhaps a change history (a higher
level of abstraction from the wiki page history)?
3. Are the details of the protocol between client and server side really invisible to the service clients? The awkward
case here is between local 'in process' and remote servers, I think. For instance, on IAssetService there is a method
Get(string id, Object sender, AssetRetrieved handler)
Afaik, if the asset service is local then the asset is returned via the same thread to the AssetRetrieved handler (i.e.
synchronously). If the asset service is remote, then the asset is returned asynchronously to the nominated handler
method on a different thread. This is not fully invisible.
This could be a problem if the caller does a lot of work using the handler thread. If the service is synchronous, then
the caller thread may be used for this where the caller did not expect it.
I guess the only solution to this is to tell the caller that it is possible that the handler may be called
synchronously. If they plan on doing a lot of work then they should use a separate thread. This is advisable anyway
even for async operations if the handler thread is coming from the thread pool.
All this perhaps is a little unfair since this problem and the one below are not at all new. I'd like to know what you
think about this.
4. In particular on IAssetService, there appears to be a purely synchronous get methods, e.g.
AssetBase Get(string id);
I know these also existed in the past, but are they a good idea in a world where the callers are not meant to know
whether the underlying service is local or remote? I know practically they may be needed (at least in the old code, the
underlying call simply timed out and returned null if the asset wasn't retrieved in a hard coded amount of time).
Again, this is a difference between in-process servers (which will return immediately) and remote ones (which could
delay up to 10 secs).
5. At the very least, interfaces need proper documentation if the caller is not meant to have to know what is happening
inside. This documentation needs to be in the proper XML style so that it shows up in generated documentation.
>
> Justin Clark-Casey wrote:
>> diva at metaverseink.com wrote:
>>> Hi,
>>>
>>> Here is the description of the new software architecture that some of us
>>> have been working on:
>>> http://opensimulator.org/wiki/OpenSim_Services_and_Service_Connectors
>>>
>>> Comments, feedback -- welcome and needed.
>> Did you want discussion here on in the discussion tab of the wiki page?
>>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
--
justincc
Justin Clark-Casey
http://justincc.wordpress.com
More information about the Opensim-dev
mailing list