From: Geoffrey T. <gta...@na...> - 2003-03-04 13:58:32
|
Ian Bicking [mailto:ia...@co...] wrote: > The current convention of Webware development is making it > difficult to > distribute or reuse servlets. I'm thinking that rather than try to share servlets (which I would expect to be very difficult to re-use unless the application is identical), it makes more sense to share "components" (such as a login component or a site navigation component) that provide some functionality and are designed to be _used_ in servlets with a minimum of fuss. Whether those components are mixins or simply helper classes, I'm not sure. I may have a page that needs to display a login component, a tree navigation component, and news of the day. I ought to be able to grab those 3 components and easily assemble them in my own servlet. I wouldn't expect to find a reusable servlet that provides this combination. > It's expected that many pages will not be reusable -- they'll be tied > into their applications, calling all sorts of methods that > are specific > to that application. But most useful servlets have to tie into > *something*, even if they could be reused. In the case of users, it's > an issue of tying into the (presumably) application-specific > definition > of a user, authentication, etc. We need ways to provide > application-specific information to potentially generic > servlets (like a > login page). > > There is also the matter of site look. Again, many of us are handling > our site look through inheritance -- overriding writeBodyParts or > otherwise putting the site look in the SitePage. Again, the generic > servlet needs some way to access this information. > > Lastly, there's the matter of specializing the generic > servlet, which is > really just another way of looking at the other two issues, though in > this case there's the presumption that the servlet has a basic > understanding of what to do, but you want to change that. > > Inheritance just doesn't work for this kind of reuse. It's onerous to > change the inheritance structure of the generic servlet, because that > involves editing the actual servlet code, making it no longer > generic. > Mixins, in my experience, can be very difficult to work with -- the > semantics of who's method gets called where can get very confusing. > It's also hard to use more than one mixin at the same time, they just > aren't gentle with each other. > > So, I'm hoping people can give ideas of new things we can do with > servlets to make this work. I think this an important > underlying reason > that we aren't seeing a lot of servlet-like code being shared among > Webware users. I'm not following your argument, maybe because I need a more concrete example of the problem. I'm not ready to throw out inheritance or mixins quite yet. Obviously, in order to be re-used, your component needs to have a clean interface without application-specific details embedded in. But I do think that can be accomplished with mixins by requiring the user to subclass the mixin to add in the application-specific hooks. Something like this: class AuthenticationMixin: # Methods to be used by servlets def getLoggedInUser(self): ... def writeLoginForm(self): ... # Abstract methods must be implemented to "wire up" # the login form with the app-specific logic def authenticateUser(self, username, password): raise AbstractError # etc. AuthenticationMixin is designed to be reusable, but it's not usable without also wiring it in by implementing the abstract methods. That could be done in an application-specific subclass of LoginMixin or it could be done directly in the servlet, depending on what seems more appropriate. - Geoff |
From: Ian S. <Ian...@et...> - 2003-03-05 16:28:15
|
Huy Do wrote : >> A cool idea we have played with is to create components which can be reused in different servlets. To use them, a programmer will just need to create an instance of this component. This component will then automatically/dynamically attach itself to the current servlet i.e insert it's own actions into the servlets action list, dynamically create new action methods, add itself to the search list etc. << Maybe I'm missing the point of this thread but I really like this para. = from Huy. Webware has some great structural peices = [Fun]FormKit,WebKit,TaskKit,Cheetah etc but it appears to be missing the = smaller "plug in" components that make fleshing out a webapp easier : PollComponent - For easy creation / summarization of webpolls. CacheComponent - For caching in-page content with timeouts. ChartComponent - For creating table-based or jpg-based charts. AuthorizationComponents - Unix/NT/LDAP/ActiveDirectory authentication = methods eCommerceComponents - Credit card processing etc. CalendarComponent - For displaying calendars (ok, Aaron may have this = one covered) ..well, the list goes on... From my perspective sharing of components like these is more important = than sharing "structural" code. Of course, I'm a webware hobbyist and = don't use it for significant or public sites and I'm not offering any = insight on *how* to write these plugins. |
From: Aaron H. <aaron@MetroNY.com> - 2003-03-05 17:06:50
|
I like this, but we should not overcomplicate this idea. Its python - if we wanted complication we would use Java! We should have a list of python modules that do useful web things. ie. I have a module that returns stories from a php - postNuke mySQL data store. It returns a python object and can be used from a desktop app or a webware app. To me this is where webware shines. Ian Sparks wrote: >Huy Do wrote : > > >A cool idea we have played with is to create components which can be >reused in different servlets. To use them, a programmer will just need >to create an instance of this component. This component will then >automatically/dynamically attach itself to the current servlet i.e >insert it's own actions into the servlets action list, dynamically >create new action methods, add itself to the search list etc. ><< > >Maybe I'm missing the point of this thread but I really like this para. from Huy. > >Webware has some great structural peices [Fun]FormKit,WebKit,TaskKit,Cheetah etc but it appears to be missing the smaller "plug in" components that make fleshing out a webapp easier : > >PollComponent - For easy creation / summarization of webpolls. >CacheComponent - For caching in-page content with timeouts. >ChartComponent - For creating table-based or jpg-based charts. >AuthorizationComponents - Unix/NT/LDAP/ActiveDirectory authentication methods >eCommerceComponents - Credit card processing etc. >CalendarComponent - For displaying calendars (ok, Aaron may have this one covered) >..well, the list goes on... > >From my perspective sharing of components like these is more important than sharing "structural" code. Of course, I'm a webware hobbyist and don't use it for significant or public sites and I'm not offering any insight on *how* to write these plugins. > > > > > > > >------------------------------------------------------- >This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger >for complex code. Debugging C/C++ programs can leave you feeling lost and >disoriented. TotalView can help you find your way. Available on major UNIX >and Linux platforms. Try it free. www.etnus.com >_______________________________________________ >Webware-discuss mailing list >Web...@li... >https://lists.sourceforge.net/lists/listinfo/webware-discuss > > |