alan runyan wrote:
Ender pretty much summed everything I could say about J2EE and Zope. but I can tell you why we chose EJB/BEA at our company rather than something like ZOPE/OpenMerchant/PHP/etc.
1. we are consulting firm and we need to be able to leave a client. ZOPE could (at the time, and I believe still can) can get pretty hairy and there just are not that many people who can grok high brow ZOPE. There are plenty JAVA programmers, with years of experience. The J2EE standard is just a set of API's Sun has set up for java programmers to work with. The underlying implementation of the API and brand name is why you chose WBELOGIC over WEBSPHERE, or vice versa.
2. as others said in the previous posts: MessageQueueing, JDBC (this is significant, I still cant get the DCOracle to work), Transactions, Documentation (javadoc of j2ee), Distributed Objects (EJB's - entity beans have their place, but session beans usually most common approach to business logic), Persistence (entity beans are rarely used, ASAIS) and a Security model (pretty complex and confusing -- but acquisition and security can get pretty hairy as well).
zope doesn't have a native message queueing system, but if you after something along the lines of MOM or JMS, you could interface to xmlblaster.org (either corba, or xml-rpc). regarding db access, this is one of my sour points with zope right now , (and no i have gotten a working DCOracle yet either), although the python dbi interface does mitigate somewhat programming portability somewhat the implementation of adaptors in zope is limited by zope's rbms access system to enforce penalties on adaptors and libraries which are not fully thread-safe. DCOracle is the only maintained level 3 adaptor for zope right now and its a bitch to compile (why? i've never had any problems compiling perl-oracle, aolserver/tcl->oracle, java->oracle, where i need to track down all the shared libs in use).
3. ZOPE has quite a lot of flexibility, but as far as implementing a exchange or large transaction heavy site, I just wouldnt do it. I am pro-ZOPE all the way, but there has been very little (?) experience with building distributed systems w/ ZOPE and the community experience (I would imagine) leans more to Content heavy - simple transaction based websites.
Transactions - Zope's transaction system is pretty good IMO, and it does support integration of external transaction aware systems. i agree with chalu kim that whats needed are more examples of this type of integration. i'm trying to work on some docs to hopefully flesh some of this out, but i tend to be more productive writing code than docs:). do you have an example of a large transaction heavy site?
4. Integration. it would be nice to have ZOPE integrate w/ J2EE (via J2EE connectors?). What I see as ZOPE's huge win is content management. ZOPE is a inclusive system that integrates poorly w/ external systems (IMHO). you must hack up wget w/ custom scripts of rolling back. (you can not push a button and say 'all marketing information is approved' - then it goes to the staging server, then what happens if you have created another version, and have packed the ZODB?) there is no way of reverting back to a historical version if you pack the database. The PTK works fine for ZOPE.ORG, but how many businesses run their shop like zope.org? I havent seen many paradigm except ZOPE.ORG or memepool.com that could work like the PTK is targeting (autonomous people posting content, how do people share documents/content?).
i disagree pretty strongly on integration, i feel the opposite, in fact, one of zope's strengths is its integration ability. ldap, rdbms, xml-rpc, smtp, pop, imap and whatever else you might care to roll in. i think the issue your tackling here is integration with developer tools, to provide cvs and the standard dev, test, prod environments, and a real ide. zope's support here is sketchy and its very dependent to how you develop a site. there is a separation here of where your code lies and where your data lies. if you have fs code and db data than you can use whatever traditonal tools that you're used to. if you're using ttw development, zcvsmixin might provide some of the support you need (although i don't recall that it did it meanigful diffs since its based on export/import). the mounted db product can provide some support for moving data from dev, test, prod environments. there was also a product (i haven't looked at it) that hooked up two zope servers via xml-rpc that might be useful for migrating content, esp if you can tie togther a seamless export/import system. the whole ide issue is up in the air till (IMO) till ActiveState releases the python-XPCOM bindings and then hopefully some work can get started on getting ZopeStudio back on track.
5. Experience. not many people have had much experience (except DC) integrating ZOPE w/ large systems (anyone?). The reason why lots of these questions are coming up is because, a larger group of people are doing more with ZOPE. using it in situations where people have not even thought about putting it. I am fascinated by the system, but once you try to plop things on the filesystem and let ZOPE work in the background (role of CMS, not webserver) things start coming apart at the seams, the idea of versioning and rendering stuff out to the filesystem(how?) and then pushing it around the testing->staging->production environments-- there is no 'best practices' regarding using ZOPE as a seperate external tool (forget this all inclusive stuff - thats why Vignette is getting a bad reputation).
the number of people with such experience is growing, and it will only grow as zope becomes more widely used (this is also one of the reasons DC and hadzur(?sp) made zope opensource), and as this happens you get more people capable of managing someone else zope's developed site or developing a kickass zope site. btw. there is a good thread on zope-zeo about zope dev with regards to best practices and dev/test/prod environments. vignette- not to mention its also hugely expensive and lots of functionality bound up in expensive add on packages.
most of ZOPEs ideas are interesting. and ZOPE wins in a lot of areas: ease of use, pre-built web interface, zClasses (great idea), ZODB (cool, but gets in the way sometimes, when you just want a filesystem), Security model (already there, on the web interface, a great easy-win), XML-RPC, and 3rd party products (LocalFS comes to mind)! I just would like to know how people used it when its a external tool, and trying to integrate it w/ JSP/ASP/PHP/ETC.
you want examples of front end integration, but than you lose most of the support for your examples of zope's benefits. kapil