> >> Code is seperate from yours > > > >This is an advantage, why? If it crashes, you are still dealing with > > th > >einability of your app to function. Look what happens to net apps > > when > >net_server crashes. > > It runs in a different memory area. Loose pointers can't squash you. An app that doesn't function is just as bad as a crashed one. > >> Accessible easily from scripting languages > > > >How so? If I'm translating a BMessage into XML, I have to tell the > >scripting language what a BMessage is first. Also, most scripting > >languages can talk to C symbols in a ... shared library, but may not > >know about messaging. > > Easy - if I want to write a scripting language, I can write one > mapping of > BMessage, then within the scripting language write modules that send > the right protocol to the server. Prime example - awk. I could add an > awk > command of the format: > returnArray=SendBMessage(toWhom,what,parameters...) > Then implement the whole BeOS API accesses in AWK completely. > Example: > returnArray=SendBMessage("xmlServer",TOXML,previousReturnArray) OR: TranslateBMessageToXML(what,etc.) It's really not much easier. > >> Any initialization time can be shared easily (the example I did > > > for > >> the newsletter with the dictionary is a good example) > > > >This is true. But we were talking about flattening BMessages and > >getting preferences, were we not? Init time is nil. > > You asked what the advantages are. I listed all of those that I could > think of. Yes. Init time matters in some very narrowly defined cicrumstances. This is not one of them. > >> Easily extensible without recompiling any clients > > > >How so? Extension is impossible without either telling the clients, > > or > >having a config interface. Shared libs can read config files just as > >well as servers. > > Nope. I can add functionality to a server all day long and never > rebuild > any clients. That is also true, to some degree, with shared libs, > though. The same degree. > >> No FBC issues > > > >If the client interface is encapsulated in a class, there are FBC > >issues. If not, there would be none in a shared lib either. > > That is assuming a client interface. I was talking about "pure" > servers. Indeed. You could also have a single ioctl() like function in a shared lib, which, IMHO, is a huge PITA> > >> Library advantages > >> No IPC time > >> No time to stuff/unstuff a BMessage > >> Ability to subclass > > > >> Kit advantages (Server + Client stub) > >> Really all of both. You can have libraries do the quick and easy > >> stuff, and servers do the heavy lifting. > > > >This is *not* a Kit. A kit is a collection of interfaces. The Device > >Kit is a serverless Kit, as is Translation, Support, and Storage. > >Surely you wouldn't argue a server for those? > > There are serverless kits, yes. I think of kits not as abstractly but > more concretely. > IOW - most of the time a kit is a server and a shared lib. Really a > difference in > perspective. See my other post :) That's not really true. -Nathan -- Fortune Cookie Says: It's easier to get forgiveness for being wrong than forgiveness for being right.