durusmail: quixote-users: Re: [slightly OT] Component frameworks and Inversion of Control Pattern
is anyone working ona task list, bug list, issue tracking type utility
2004-08-17
2004-08-17
2004-08-18
is anyone working ona task list, bug list, issue tracking type utility
2004-08-18
is anyone working ona task list, bug list, issue tracking type utility
2004-08-18
Re: is anyone working ona task list, bug list, issue tracking type utility
2004-08-19
Re: is anyone working ona task list, bug list, issue tracking type utility
2004-08-19
Re: is anyone working ona task list, bug list, issue tracking type utility
2004-08-19
is anyone working ona task list, bug list, issue tracking type utility
2004-08-18
2004-08-18
is anyone working ona task list, bug list, issue tracking type utility
2004-08-18
2004-08-20
2004-08-20
[slightly OT] Component frameworks and Inversion of Control Pattern
2004-08-23
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
2004-08-24
2004-08-24
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
2004-08-24
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
2004-08-25
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
2004-08-25
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
Re: [slightly OT] Component frameworks and Inversion of Control Pattern
Graham Fawcett
2004-08-24
Shalabh Chaturvedi wrote:

>I agree with you on most points. In fact I have been motivated by similar
>factors to try and design componentized additions to Quixote. However if
>applications want to be portable across data sources, they have to be
>written to one defined interface and then are limited by the different
>implementations available for that interface. This is still a step up from
>something like Zope, where applications written for ZODB cannot be
>(easily) ported to relational databases.
>
>

I may have gone a little far when I suggested "abstracting away all
persistence details" in my earlier rant. ZODB and any relational
database have almost nothing in common, and abstracting their
differences would be very tough.

>I think that a data persistence interface by itself could be used
>*instead* of components with pre-defined interfaces. For examle, instead
>of having a user management component that implements an interface (i.e.
>an API consisting of a bunch of methods), there could just be a user 'data
>schema' (i.e. consisting of a set of objectclasses each consisting of a
>set of attributes).
>
>Now any application such as an issue tracker uses the standard persistence
>interface to add and read user and group information. When someone wants
>to deploy this application, he simply points it to the correct objectclass
>in his environment, that may be implemented over any data source. Now you
>have a new application working with *existing* data. In fact there might
>be a separate application that adds and deletes users so that function of
>the issue tracker may be turned off by configuration.
>
>
Hm... I was going to argue that an interface is necessary since, at the
least, one needs lookup functions. Having a User object without a
well-known 'UserSource.getUser(userid)' method isn't too helpful. But
'getUser' and the rest of the interface could be derived from the
schema, couldn't it? SQLObject et. al. use this approach, I believe.

>Taking the idea further, the schema doesn't even have to be pre-defined.
>During deployment, the deployer may *create* a new objectclass from
>existing ones simply by configuration (specifying joins, mapping attribute
>names etc.). This new objectclass now exposes the correct schema for the
>new application and they can be tied together.
>
>Sorry for going on and on,
>
I'm eager to listen. ;-)

>but I think the idea I am trying to push is to
>use a data-oriented approach rather than an interface-oriented one. With
>interfaces, you always need a pre-written component that implements the
>correct interface.
>
Yes, though not necessarily implementations. One can create an Interface
class that specifies the required methods and attributes but does not
implement them. Java, Zope3, PyProtocols/PEAK share this notion. Such
Interfaces are declarative in nature, like schemas; not that I'm
equating the two concepts.

In practice, do you conceive the data-oriented approach being sufficient
in cases where the back-end systems are quite dissimilar? For example,
it is not hard to imagine moving user management away from a relational
database toward LDAP. What benefits might be gained from a data-oriented
approach (c.f. an interface-oriented one) in such a case?

I may have misunderstood some of your ideas. I'm left with the notion that

    * a schema implies an interface (with create/retrieve/update/delete
      functions),
    * a schema could be used to generate an implementation of the
      implied interface (!) against a particular persistence system
      (e.g. MySQL),
    * but not all possible implementations of the interface could be
      generated in this way,
    * that applications using the schema are really using the
      implementation, via the interface, not the schema itself,
    * therefore schema are a useful tool for building implementations,
      and implying interfaces,
    * but the interface is the truer decoupling point, since an
      implementation that cannot be derived from the schema could be
      substituted if necessary (as I suspect in the RDBMS/LDAP case, for
      example).

I'll probably regret posting that last bit when I re-read it tonight,
but I have to head home...

I'm eager to hear your thoughts.

-- Graham


-- Graham


reply