390 likes | 550 Views
http ://www.zope.org/. Ú vod do aplikačn í ho serveru Zope. SLT2001 Skalský dvůr, 15.-18. února 2001 Michal Mühlpachr <michalm@nextra.cz>. Co je to Zope ?. P řední Open Source aplikační server, specializovaný na interaktivní obsah (správa obsahu, portály) Web, ftp, WebDAV, XML-RPC server
E N D
http://www.zope.org/ Úvod do aplikačního serveru Zope SLT2001Skalský dvůr, 15.-18. února 2001 Michal Mühlpachr<michalm@nextra.cz>
Co je to Zope ? • Přední Open Source aplikační server, specializovaný na interaktivní obsah (správa obsahu, portály) • Web, ftp, WebDAV, XML-RPC server • Hypertext procesor - DTML • ORB (Object-Request Broker) • Objektový transakční databázový server • Integrační server - provázání s RDBMS • Autorizační server - správa práv • Prostý SQL relační databázový server
Kde se vzal, z čeho je ? • Digital Creations Inc. • Zkušenosti v oblasti aplikačních serverů • Zope je akuálně zralý produkt • Business model s Open Source a venture kapitálem • Založen na Pythonu - „executable pseudo-code“ • Zvládnutelný kód ~88k řádků Python, ~45k řádků C (PHP4 kód ~150K řádků C) • Nedodává se na 2CD, distribuce cca 10MB • Dříve BOBO, Object Publisher
Podobné produkty • Allaire Cold Fusion • PHP - Hypertext Preprocessor • JSP - Java Server Pages • RoXen Challenger • Microsoft IIS ASP - Active Server Pages
Výhody 1/2 • Jednoduchost, podpora standardů • Modulární architektura • Mocný objektový model • Vše přes web, integrovaná ODB • Řád převažuje nad chaosem • Srozumitelné URLs • Integrace s externími daty, aplikacemi • Flexibilní vyhledávání • Rozšiřitelná bezpečnost
Výhody 2/2 • Separace rolí • Delegace zodpovědnosti / pravomocí • Integrované prostředí • Skutečné web objekty • Komunita nadšenců • Mail listy cca 100 zpráv denně • Škálovatelnost • rychlé proniknutí do technologie • vhoné pro jednoduché i složité řešení • možnost oddělení aplikace a ODB • na běžném HW 1M hit/den
Architektura: Python • Interpretovaný, interaktivní, objektově orientovaný, high-level programovací jazyk • Flexibilní, jednoduchý, mocný • Škálovatelnost • zvládá jednoduché i komplikované problémy • příjemný jak pro začátečníky tak pro experty • Snadná údržba a čitelnost kódu • Rozšiřitelnost, balíčky, moduly, knihovny • C API - moduly, SWIG • Snadno použitelný z jiných prostředí (C, Java, ...)
Architektura: ZServer • Asynchronní multiprotokolový server • PCGI, FastCGI • HTTP, XML-RPC (brzy SOAP), WebDAV • FTP • Monitor klient (Python interface) • Založenna Meduse (Sam Rushing) • Podobná architektura jako dva nejvýkonnější web servery: thttpd a Zeus
Architektura: ZPublisher • Převod URL na objekty a metody - HTTP ORB • Umožňuje znovupoužitelné objekty, které se prezentují prostřednictvím různých metod • Zajišťuje jednoduchý URL design: • http://www.firma.cz/Obchod/Zaměstnanciraději než: • http://www.firma.cz/cgi-bin/zaměstnanci.cgi?oddělení=obchod nebo • http://www.firma.cz/cgi-bin/aplikace.cgi?id=123456?dotaz=zaměstnanci?oddělení=obchod • Předávání proměnných • Vývojář se nemusí starat o low level HTTP
Architektura: Framework • Poskytuje integrované prostředí pro design web prezentací a skripty vložené v HTML (Dokumentové šablony / DTML) • Základní třídy objektů • soubor, adresář, DTML metoda, DTML dokument, obrázek • SQL metody, Z Search Interface, Z Catalog, Version • Rozšiřování novými třídami (ZClasses) • Zabudovaná správa autorizací (přístupových práv), napojení na různé systémy pro správu identit, identifikací a autentizací uživatelů
Zope management model • Zope je designován pro správu pomocí webu • Jen málo operací (např. přidávání produktů) vyžaduje přístup k file systému • Obsah není „rozeset“ po file systému • Dvoupanelové UI podobně jako Windows Explorer, HTML 3.2 s JavaScriptem • Dostupný na:http://server.cz/. . ./manage • Cut, Copy, Paste, Rename, Export, Import
Jednoduché DTML • Editace index_html objektu
Objekt • Objekt - data, kód • Zope obsahuje základní třídy objektů • kontejnerové - např. adresář • prosté - např. soubor • Atributy • Instance • Objektová perzistence - automat. aktivace • Z Class • Python Class
Atributy objektu • Vytvoření atributu contact_email Accounting adresáře
Dědičnost a získávání • Přirozené (geny - DNA) / výchova (různé chování v závislosti na prostředí) • Získávání od předků - hierarchie instancí (chování objektu v závislosti na umístění) objekt je v objektu … • Dědění v rámci hierarchie tříd (funkcionalita objektu) - objekt je kategorie ...
ZODB • Ve své třetí major verzi (ZODBv3) • Transparentní správa cache • API, dotazovací jazyk • Plně transakční databáze s distribuovaným commit, dvoufázový commit • ZEO (Zope Enterprise Option) • Transakce ODB integrovány s RDBMS • Subtransakce • Transakci nad mnoha objekty lze rozdělit na menší části (zapisovat do FS po částech) • Verze (long running transactions) • Úplné undo
Verze • Umožňují připravovat změny na produkčním webu a přitom privátně • Novou podobu prezentace / aplikace není potřeba připravovat odděleně • Uvedení nové verze prezentace / aplikace jen commitem verze • Potvrzování změn po částech, možnost návratu
Mnohaúrovňové Undo • Dostupné všechny transakce od poslední komprimace objektové databáze • Undo neohrožuje objektovou integritu
Vyhledávání v ODB • Kde jsem použil tento atribut ? • Co bylo modifikováno od včerejška ?
ZSQL Metody • Realizují vyspělou integraci s relačními daty • Dynamické generování dotazů • Transparetní caching výsledků • Výsledky SQL dotazu jsou objekty, mají funkcionalitu • Nezávislé na konkrétním DB Engine • Integrovány s hlavními DB technologiemi
Architektura SQL integrace Zope Framework Z SQL Method Oracle (ODBC) Database Adapter httpd http/https Oracle (native) Database Adapter IPC/RPC Other Zope Server XML/RPC Client Web browser SQL RDBMS Results • RDBMS konektivita • RDBMS obsah je integrován s obsahem adresářů • Separace správce obsahu a DB administrátora
Příklad ZSQL Metody • Jednoduchý příkladSELECT * FROM employees WHERE ssn = <dtml-var ssn> • sqlMakeLoanPaymentUPDATE account SET balance = balance - <dtml-var payment><dtml-var sql_delimiter>UPDATE loan SET balance = balance - <dtml-var payment>
Bezpečnost • Robustní řešení bezpečnosti • Rozdíl mezi uživateli, rolemi a právy • Uživatelé mohou mít role i v lokálním kontextu s granularitou na úrovni objektů. • Hierarchie uživatelů • Správce obsahu, vývojář aplikační logika, správce relační DB SQL metody, administrátor aplikační server
Rozšiřitelnost • Zope je modularizován na produkty • SessionManager, SQLSession, FSSession • Zcatalog, Ultraseek DA • ZGadflyDA, ZPyGreSQLDA, ZOracleDA, ... • LDAPAdapter, UserFolder • COMObject, XML Document, ZCalendar • MIMETools, Portal Toolkit • WorldPilot http://www.worldpilot.org • ZClasses • Externí Python metody
Distribuce • Binární • Linux tar.gz, RPM, Debian deb • Solaris Sparc • Microsoft Win32 • Zdrojová • Na jakoukoli platformu, kde je instalovaný Python • Dokumentace - Zope Guides • Document Template Markup Language Reference DTML • Administrator's Guide, Content Manager's Guide, SQL Methods User's Guide • Zope How-Tos, Zope Tips • Developer Documentation (UML Models, ZClasses, External Methods, ZODB,ZPublisher, Acquisition, Zope Products, DOM, WebDAV, XML-RPC, ...)
Budoucnost • Produkty • ZODB • ZEO Zope Enterprise Option, OQL • Auditing, Nové metody úložiště ODB • Optimalizace, Zamykání, Cross database • Řešení konfliktů na aplikační úrovni • Integrované prostředí - Mozilla • XUL - Extensible User-Interface Language • RDF - Resource Description Framework • Python 2.0 – internacionalizace • Integrace s Perlem
Odkazy 1/6 • Zope - Open Source Application Server • http://www.zope.org/ • Digital Creations Inc. • http://www.digicool.com/ • Zope Weekly News • http://www.zope.org/Members/MikeP/ZWN/ • Zope Solution Providers • http://www.zope.org/Resources/ZSP • How-To: Getting Started With Zope • http://www.zope.org/Members/klm/GettingStarted • http://weblogs.userland.com/zopeNewbies/faq • Zope Mailing Lists • http://www.zope.org/Resources/MailingLists
Odkazy 2/6 • Python - interpreted, interactive, object-oriented high-level programming language • http://www.python.org/ • A Perl Hacker in the Land of Python • http://www.byte.com/feature/BYT20000201S0001 • Jon Udell: Internet/Web solutions • http://udell.roninhouse.com/ • Midgard - Application Server Suite • http://www.midgard-project.org/ • PHP - Hypertext Preprocessor • http://www.php.net/ • JSP - Java Server Pages • http://java.sun.com/products/jsp/
Odkazy 3/6 • DTML - Document Template Markup Language • http://www.zope.org/Documentation/Guides/DTML • CFML - Cold Fusion Markup Language • http://www.coldfusion.com/handlers/index.cfm?ID=13381 • RXML - RoXen Macro Language • http://www.roxen.com/ • ASP - Active Server Pages • http://msdn.microsoft.com/workshop/server/ • http://support.microsoft.com/support/default.asp?SD=SO&PR=asp&RLD=22 • http://www.activescripting.org/ • FastCGI - Fast Common Gateway Interface • http://www.fastcgi.com/
Odkazy 4/6 • XML - Extensible Markup Language • http://www.w3.org/XML/ • http://www.xml.org/ • http://www.xml.com/ • XMLRPC XML Remote Procedure Call • http://www.xmlrpc.com/ • WebDAV - Web-based Distributed Authoring and Versioning • http://www.webdav.org/ • http://www.ics.uci.edu/~ejw/authoring/ • http://webdav.zope.org/ • SOAP - Simple Object Access Protocol • IETF draft-box-http-soap-01.txt • http://www.develop.com/soap/
Odkazy 5/6 • XUL - Extensible User-Interface Language • http://www.mozilla.org/xpfe/ • http://www3.sympatico.ca/ndeakin/mozilla/xultu/ • http://zvon.vscht.cz/HTMLonly/MozillaTutorial/General/book.html • RDF - Resource Description Framework • http://www.w3.org/RDF/ • DOM - Document Object Model • http://www.w3.org/DOM/ • Java Script - ECMA Script • http://www.ecma.ch/ECMA1/STAND/ECMA-262.HTM
Odkazy 6/6 • LDAP - Lightweight Directory Access Protocol • http://www.directoryforum.org/ • http://www.openldap.org/ • http://www.innosoft.com/ldapworld/ • http://www.kingsmountain.com/ldapRoadmap.shtml • http://developer.netscape.com/tech/directory/ • DSML - Directory Services Markup Language • http://www.dsml.org/
Diskuze Dotazy ? Komentáře ? Michal Mühlpachr<michalm@nextra.cz> Děkuji za pozornost