I don't think i'm saying pass-by-value be the default for local services, what i'm asking is if operations are possible between local components using different data bindings, and if so then it seems more user friendly that the default be that it just works without having to define anything extra to
make it work.
Sure if you can do the data transformation by-value which would be really difficult to achieve with most databinding frameworks. Otherwise the wire must be by-ref and the only way to do that is when the target service contract explicitly declares its remotability. This is extremely important to be declared in the contract, as opposed to being the default, since the semantics of the data are affected and the client cannot treat it as by-ref.

I think there are use cases where local pass-by-value makes sense. For example, if the data is immutable then the framework can make a copy to a different format and not break the semantic contract. Taking this further, if the data is mutable but the target does not modify it then we can again make a copy and still preserve the semantic.

One way to do this would be to support something like an @ReadOnly annotation that the target can declare on a parameter. In the local (by-ref) case this would allow the runtime to make copies to support incompatible data types; in the remote (by-value) case this would allow the runtime to avoid making a copy if it didn't need to. This could also be done at the type level with an @Immutable annotation on the class.

Yea this like a good solution as since it forces that decision to be explicit. The notion of read-only should probably be proposed to the spec for local services. For the remotable case, we have the "allows by-ref" marker. That means local service contracts must explicitly declare this, and it is not the default. For remotable contracts, the default would imply copying of params and nothing needs to be proposed I believe.

Jim makes a good point about not repeating the mistakes from earlier frameworks. I think the biggest mistake that they made was to focus on the "how" (as in by-ref, by-val) semantics rather than the "what" (read-only, immuatable) characteristics of the interaction. I think if we do that we can provide the function Ant would like.

That's why it is "allows" instead of "is" by reference ;-) Good point, though.
--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to