[Lazarus] WebData
Leonardo M. Ramé
l.rame at griensu.com
Mon Oct 18 14:23:59 CEST 2010
On 2010-10-16 12:18:30 +0200, Michael Van Canneyt wrote:
>
>
>
> >I attached a proof of concept, take a look and comment.
>
> Seems like a very good start, some suggestions:
>
> 1. You created something which is by definition non-visual ?
> Why not make the TDynamicSQLWebProvider a component which you can drop on a webmodule ?
>
> 2. Having done 1, you could rework TModuleProvider so it recognizes and uses a TDynamicSQLWebProvider dropped on it.
> (if I understand correctly, there is no need to do anything, it would be automatic if the
> TDynamicSQLWebProvider uses it's owner as the owner for the providers)
>
> 3. Why not create the providers on an as-needed basis ?
> Now you create all registered providers.
> If you override the GetProvider method in TModuleProvider, you can simply create the instance you actually need.
>
> My projects contain typically 1000+ providers.
> If I would create them all in memory per connection - memory consumption would rocket sky high :-)
>
> I would simply load the definitions - once - and then create providers on an as-needed basis.
>
> 4. You forgot the XMLprovider unit :-)
> Seems like you make it a procedural interface to load the definitions.
> I would expect that TSqlWebDataProviders has a virtual abstract method which loads the definitions from file:
> Procedure LoadFromFile(Const AFileName : String); virtual; Abstract;
> In the case of a component, there could even be a 'FileName' property, read in the 'Loaded' method.
> then create a descendent which loads from whatever file format is fitting.
>
> 5. Advanced concept:
> Why didn't you use the TFPWebDataProviderManager factory class ? (see demo5)
>
> It is built for this kind of thing. (I currently use that at work) : you register all providers there.
> TFPWebProviderDataModule knows about this class and fetches a provider there on-demand.
> All you'd need to do is register 1 TModuleProvider instance there. This is optional of course.
> So in fact, there are 2 paths you could follow.
>
> I hope all this makes sense :-)
>
> Michael.
Thanks, I'll try to implement this next week.
--
Leonardo M. Ramé
http://leonardorame.blogspot.com
More information about the Lazarus
mailing list