Tuesday, July 26, 2005
« Extending the 3-tier conversation to the... | Main | “Distributed Objects” are bad? »
Here's an article that appears to provide a really good overview of the whole mobile agent/object concept. I've only skimmed through it, but the author appears to have a good grasp on the concepts and portrays them with some good diagrams.

Wednesday, July 27, 2005 11:19:10 AM (Central Standard Time, UTC-06:00)
Rocky,
On your personal Blog site you mentioned back in June the following ... "Tomorrow my task is to figure out the quickest way to get my primary machine back online so I can get to work on my next book. Not my Business Objects books - that's for later. Rather this is a book focused on a different (somewhat competing even) approach. Not everyone likes to use objects, so I figured it couldn't hurt to cater to the non-object audience as well." ... I have been wondering what you have up your sleeve? Would I be far off if I was to guesss O/R mapping framework?

Chris Russi
CSLA.NET user
Chris Russi
Thursday, August 04, 2005 12:32:00 PM (Central Standard Time, UTC-06:00)
Rocky,

How is mobile agent different from you CSLA? The smart objects are serialized across like the mobile agents.

Thanks.
Santi
Friday, August 05, 2005 8:05:25 AM (Central Standard Time, UTC-06:00)
CSLA .NET is a mobile object framework. You are exactly right, the objects are moved from machine to machine as needed, thus making them mobile agents.
Saturday, August 06, 2005 4:28:30 PM (Central Standard Time, UTC-06:00)
Chris, it is not an O/R framework - nope - totally different. Doesn't even involve creating objects really. I expect it to be a shocker :)
Monday, August 08, 2005 1:44:19 PM (Central Standard Time, UTC-06:00)
Rocky,

Actually, I think this guy is talking about something quite different from CSLA:

"…mobile agents send not only data, but code…"

Serialization, for all its usefulness, is only about sending data (along with type identifications). What he is proposing is much more ambitious: he wants to send whole assemblies back and forth over the wire.

In other words, mobile agents, as distinct from mobile objects. Not the same thing.

Whereas in CSLA.NET, the code has to be installed on both client and server, this vision of mobile agents envisions computers dynamically installing code on each other, to support the object instances being passed to them.

What's more, the concept of client-server distinction is eliminated. "Servers" exist only to initiate the distribution of code. A computer that has received the code can then distribute the code to other computers. All computers that execute the code are peers of equal status. There is no longer the notion of the central server acting as the ultimate arbiter of data validation, as it exists in CSLA.

Aside from implementation difficulties, this idea naturally has serious security implications. Doesn't this open the way for a rogue client to modify the assembly given to it in order to bypass a business rule? This is why the article talks at length about how a trust-based authentication system might work to prevent abuse, something that's quite unnecessary with mobile objects, where the original assemblies can be counted on to exist on the central application server, where all objects eventually end up.

Why is it that we need all this complexity? The article cites the following benefits:

1. Single code base.
2. Little to no IPC.
3. Ease of deployment.
4. Ease of modification.

Mobile objects by themselves already provide the first two benefits. The other two advantages can also be obtained using existing technologies. Today, you can already host a dynamically downloaded Windows forms application in IE. The upcoming One Click deployment, and the eventual arrival of Avalon, will eventually close the gap between rich and thin-client application in the ease-of-deployment factor.

Mobile objects and web-hosted rich clients will do practically everything mobile agents promise, with far less complexity. Seems like much abo about nothing, really.
Tony Chow
Tuesday, August 09, 2005 9:10:50 PM (Central Standard Time, UTC-06:00)
It is true that he is more ambitious in that sense. However, I rely on .NET's intrinsic no-touch deployment capability to move the assemblies across the wire - so really the difference is largely semantic, or at best one of timing (no-touch deployment or ClickOnce move the code earlier in the process than he might prefer).

Rocky
Friday, August 12, 2005 2:08:01 PM (Central Standard Time, UTC-06:00)
The primary difference between mobile objects and mobile agents, in my opinion, is that one actually knows how a mobile object works, has complete details of implementation and deployment, and can rely on a mobile object's ability to interact in a meaningful way with other systems (via servers).

Mobile agents, on the other hand, use intelligence to figure out how to interact meaningfully in a serverless world, and via autonomous self-propagation achieve mobility, replicability, and massive parallelization. As such, they are always in the right place and can do the right thing at the right time, with minimal external guidance.

The only real drawback with mobile agents is that once you actually figure out how to construct agents so that they know where to go and how to get there, you can identify the server, have specified deployment details, and replaced intelligent autonomy with mechanistic response to externally generated signals.

Then, of course, you're back to square one -- mobile objects.

Surely the lesson of the last 30 years is that it is impossible to be sufficiently cynical when it comes to intelligence, autonomy, and agency in software.
John Brown
Comments are closed.