280 likes | 420 Views
Adam Birnbaum. Cyberinfrastructure Case Study: The New Bioworkbench. 27 August, 2004. Intro: Bioworkbench Project. Pilot project to study Service Oriented Architecture & Web Services Modernize the Bioworkbench This is very much a work in progress!. The Bioworkbench.
E N D
Adam Birnbaum Cyberinfrastructure Case Study:The New Bioworkbench 27 August, 2004
Intro: Bioworkbench Project • Pilot project to study Service Oriented Architecture & Web Services • Modernize the Bioworkbench This is very much a work in progress!
The Bioworkbench • Free! for education and research users • Features • Search public databases for sequences (NDJINN) • Manage personal collections of sequences • Run popular analysis tools • Architecture • Main CGI program written in C • Bio codes wrapped with Perl • Everything runs on the web server http://workbench.sdsc.edu
Bioworkbench • The good: • Many mirrored databases • Personalized collection of sequences • Large set of available tools • The bad: • Hard to search through lists of apps & databases • Expansion requires coding Perl wrappers • All built to run on a single machine • The ugly: • Is a 1995 CGI application (and looks like it!)
Bioworkbench: Demo http://workbench.sdsc.edu
New Bioworkbench: Key Requirements • Modern, flexible, intuitive web user interface • User unaware of computational resources • Add analysis tools & databases without modifying the web application • Technical requirement: explore Service Oriented Architecture.
User Interface • Created storyboards • Focus groups with users at SIO • Input and feedback from Cherri Pancake Main metaphor: web email client
Service Oriented Architecture (SOA) • Decompose program into distributed services • Use standard messaging/invocation protocols • Dynamic discovery and invocation
User Interface Service Registry Service 1 Service 2 Service 3 Service Oriented Architecture looks up services invokes invokes invokes Invocation through DCOM, CORBA, Web Services…
User Interface UDDI Registry Service 1 Service 2 Service 3 Service Oriented Architecture built with Web Services UDDI SOAP messages SOAP SOAP SOAP
Web Services • Standards by W3C and OASIS • Message format: SOAP • Interface description: WSDL • Registry interface: UDDI (Universal Discovery Description and Integration) • WS-Interoperability, WS-Security, WSRF, WSRP, WS-Context… • Free servers: Tomcat/Axis, JWSDP • Stable Java APIs: JAX-RPC, JAXR, WSDL4J, SAAJ, JAXP
User DB User Interface (Struts on Tomcat) Service Registry Genbank Sequence Query Service BLAST SWISSPROT tmhmm EMBL … New Bioworkbench Architecture store user data looks up services queries invokes invokes invokes
SOA Challenges • Registry Server • Dynamic Invocation • Data Type Management • Dynamic UI Generation
Challenge 1: Registry Server • Requirement: store and query invocation info: • Input and Output Data Types • Service port, operation, uri • Categorization(s) • UDDI advantage: it's standard. • UDDI disadvantages: • Unnecessary complexity • Hard to find solid, free implementations (jUDDI, Sun's RS)
UDDI Technical White Paper, http://www.uddi.org/whitepapers.html
WSDL to UDDI Mapping Understanding WSDL in a UDDI registry, P. Brittenham et al on IBM developerWorks
Registry Server: our Current Approach • Build interfaces using RDBMS for persistence • Incorporate UDDI 'later' if really required
Challenge 2: Dynamic Invocation • Options for invoking web service: • Pre-compiled stubs (java2wsdl & wsdl2java) • Dynamic invocation • Our requirement: incorporate new services without recompiling the application • JAX-RPC includes API's for invocation (DII) • Our current approach • Store all info required for invocation in RDBMS • Use DII Call object for invocation. • Special problem: input and output data type management
Service Registry Challenge 3: Data Type Management User Interface (initializes input, interprets & displays output) Fetch data types invokes Service Challenge: dynamically create objects in webapp/UI to gather & send input, and to correctly typecast output.
Data Types • Idea: use XSD's from Registry Server to dynamically generate Java classes • Open source projects: Castor, XMLBeans... • Problem: need do it without recompiling webapp. • Current approach: dynamically load .class files provided by service author.
Challenge: Dynamic UI Generation • Need to invoke services without recompiling UI • Possible solutions: • WSRP • Automatically generate UI using reflection API on inputs & outputs
Remaining Work • Add more data sources (EMBL, Genbank) • Complete dynamic invocation system • Build dynamic UI system • Wrap bio apps as web services • Deploy
Lessons Learned • UDDI, and the mapping of WSDL to UDDI, is too complex • Writing web services is easy; deployment is tricky(tomcat, axis, postgres, webapp deployment) • This is better than the Perl implementation... how?
Acknowledgements UI Design, Focus Groups: Mike Cleary Architecture, built the UI: Kevin Fowler Architecture, built data services: Jesus Castagnetto Worked on Proposal: Mike Cleary Greg Quinn Chris Smith Hannes Niedner Information, support, and brainstorming: Brian Saunders Roger Unwin Andreia Maer Cherri Pancake