SOA with Ruby erubycon July 18, 2007 Zak Mandhro  Senior Manager BearingPoint, Inc Content of this document is covered und...
Agenda <ul><li>Introduction to SOA </li></ul><ul><li>Discuss benefits of SOA </li></ul><ul><li>Review SOA-related Ruby lib...
What is Service-Oriented Architecture? <ul><li>Choose the BEST answer: </li></ul><ul><li>A. A paradigm shift in software d...
Definitions of SOA <ul><li>“A paradigm for  organizing and utilizing distributed capabilities  ... [A] uniform means to of...
Characteristics of SOA <ul><li>Based on open standards </li></ul><ul><li>Interoperable </li></ul><ul><li>Autonomous </li><...
Core Components of SOA <ul><li>SOAP : Simple Object Access Protocol </li></ul><ul><li>WSDL : Web Services Description Lang...
Standards Galore Aka:  “ WS death star ” http://roadmap.cbdiforum.com/reports/protocols/
Benefits of SOA <ul><li>Improve long-term value of software assets </li></ul><ul><li>Improve quality through modularity an...
Enter Ruby
Benefits of  Ruby <ul><li>Less code = Improved productivity </li></ul><ul><li>Meta-programming = Better APIs </li></ul><ul...
SOA-Related Ruby Libraries <ul><li>Web Services Interoperability – Basic Profile Version 1.0 * </li></ul><ul><li>Standard ...
SOA-Related Ruby Libraries <ul><li>Web Services Interoperability – Basic Profile Version 1.0 * </li></ul><ul><li>Standard ...
Library Maturity – Grade Scale <ul><li>Criteria Grade </li></ul><ul><ul><li>Code A: Stable, mostly usable as is B: Beta, m...
Ruby XML Libraries <ul><li>Name :  REXML </li></ul><ul><ul><li>Pros: Most popular. Comes standard with Ruby. </li></ul></u...
SOAP 1.1 with Ruby <ul><li>Project Name:  SOAP4R </li></ul><ul><li>Purpose:  Ruby library for Simple Object Access Protoco...
WSDL for Ruby <ul><li>Project Name:  WSDL4R </li></ul><ul><li>Purpose:  Generate Ru by code from Web Services Descriptions...
UDDI for Ruby <ul><li>Project Name:  UDDI4R </li></ul><ul><li>Purpose:  Dynamic discovery and binding of web services </li...
Web Services for Rails <ul><li>Project Name:  Action Web Services  </li></ul><ul><li>Purpose:  Simple web services provide...
What's Missing <ul><li>WS-I Basic Profile 1.1 </li></ul><ul><ul><li>Newer versions of standards  </li></ul></ul><ul><li>WS...
Use cases for SOA with Ruby <ul><li>Ruby can be a  productive  way to: </li></ul><ul><li>Build web applications over web s...
Questions and Answers My blog:  http://mandhro.com UDDI4R:  http://uddi4r.rubyforge.org SOAP4R & WSDL4R:  http://dev.ctor....
Upcoming SlideShare
Loading in …5
×

Soa With Ruby

8,647 views

Published on

Service-Oriented Architecture with Ruby. Covers open-source libraries that make web services possible on Ruby.

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,647
On SlideShare
0
From Embeds
0
Number of Embeds
191
Actions
Shares
0
Downloads
229
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

Soa With Ruby

  1. 1. SOA with Ruby erubycon July 18, 2007 Zak Mandhro Senior Manager BearingPoint, Inc Content of this document is covered under the Creative Commons Attribution 3.0 license with the exception of BearingPoint copyrighted template, logo and trademark.
  2. 2. Agenda <ul><li>Introduction to SOA </li></ul><ul><li>Discuss benefits of SOA </li></ul><ul><li>Review SOA-related Ruby libraries </li></ul><ul><li>Discuss use-cases for SOA with Ruby </li></ul>
  3. 3. What is Service-Oriented Architecture? <ul><li>Choose the BEST answer: </li></ul><ul><li>A. A paradigm shift in software development </li></ul><ul><li>B. A way to integrated heterogeneous systems </li></ul><ul><li>C. A new name for distributed computing </li></ul><ul><li>D. The most hyped and overused buzzword of this industry </li></ul>
  4. 4. Definitions of SOA <ul><li>“A paradigm for organizing and utilizing distributed capabilities ... [A] uniform means to offer, discover, interact with and use capabilities to produce desired effects...” - OASIS [1] </li></ul><ul><li>“ An approach to building software as a set of autonomous, reusable and interoperable units of functionality using open standards.” - Zak Mandhro </li></ul>[1] http://en.wikipedia.org/wiki/Service-oriented_architecture
  5. 5. Characteristics of SOA <ul><li>Based on open standards </li></ul><ul><li>Interoperable </li></ul><ul><li>Autonomous </li></ul><ul><li>Reusable </li></ul><ul><li>Reliable </li></ul><ul><li>Discoverable </li></ul><ul><li>Loosely-Coupled </li></ul><ul><li>Stateless </li></ul><ul><li>Composable </li></ul><ul><li>Manageable </li></ul><ul><li>Secure </li></ul>
  6. 6. Core Components of SOA <ul><li>SOAP : Simple Object Access Protocol </li></ul><ul><li>WSDL : Web Services Description Language </li></ul><ul><li>UDDI : Universal Discovery, Definition and Integration </li></ul><ul><li>BPEL : Business Process Execution Language </li></ul><ul><li>ESB : Enterprise Service Bus </li></ul><ul><li>WS-* : Web Services Standards </li></ul><ul><li>Foundation: XML and HTTP </li></ul>
  7. 7. Standards Galore Aka: “ WS death star ” http://roadmap.cbdiforum.com/reports/protocols/
  8. 8. Benefits of SOA <ul><li>Improve long-term value of software assets </li></ul><ul><li>Improve quality through modularity and testability </li></ul><ul><li>Reduce development time with composition and reusability </li></ul><ul><li>Leverage heterogeneous development environments </li></ul><ul><li>Avoid vendor and platform lock-in </li></ul><ul><li>Integrate with ERPs and Enterprise infrastructure software </li></ul>
  9. 9. Enter Ruby
  10. 10. Benefits of Ruby <ul><li>Less code = Improved productivity </li></ul><ul><li>Meta-programming = Better APIs </li></ul><ul><li>Dynamic behavior = No stubs! </li></ul>
  11. 11. SOA-Related Ruby Libraries <ul><li>Web Services Interoperability – Basic Profile Version 1.0 * </li></ul><ul><li>Standard </li></ul><ul><li>XML 1.0 </li></ul><ul><li>SOAP 1.1 </li></ul><ul><li>WSDL 1.1 </li></ul><ul><li>UDDI V2 </li></ul>* Source: http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html
  12. 12. SOA-Related Ruby Libraries <ul><li>Web Services Interoperability – Basic Profile Version 1.0 * </li></ul><ul><li>Standard Ruby Library </li></ul><ul><li>XML 1.0 REXML, others </li></ul><ul><li>SOAP 1.1 SOAP4R, AWS </li></ul><ul><li>WSDL 1.1 WSDL4R, AWS </li></ul><ul><li>UDDI V2 UDDI4R </li></ul>* Source: http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html
  13. 13. Library Maturity – Grade Scale <ul><li>Criteria Grade </li></ul><ul><ul><li>Code A: Stable, mostly usable as is B: Beta, may require tweaking C: Alpha, will need fixing </li></ul></ul><ul><ul><li>Documentation A: Detailed, with examples B: Plenty of Ruby docs (RDOC) C: Learn from source code </li></ul></ul><ul><ul><li>Testing A: More than 60% coverage B: More than 30% coverage C: Less than 30% coverage </li></ul></ul>Grades are informational only, and represent nothing more than my evaluation and personal opinion.
  14. 14. Ruby XML Libraries <ul><li>Name : REXML </li></ul><ul><ul><li>Pros: Most popular. Comes standard with Ruby. </li></ul></ul><ul><ul><li>Cons: A bit complex. Native Ruby, slower. </li></ul></ul><ul><li>Name: libxml-Ruby </li></ul><ul><ul><li>Pros: Faster, binds to C library. </li></ul></ul><ul><ul><li>Cons: Also complex. Binary dependency. </li></ul></ul><ul><li>Other Libraries: </li></ul><ul><ul><li>ROXML (RubyForge) binds Ruby classes to XML </li></ul></ul><ul><ul><li>XML::Simple and XML::Smart provide simpler APIs </li></ul></ul><ul><ul><li>Rails 'to_xml' method builds XML from models </li></ul></ul><ul><ul><li>Builder::XmlMarkup provides builder-style XML creation </li></ul></ul>REXML Score Code: A Doc: A Tests: A libxml-R Score Code: B Doc: B Tests: B
  15. 15. SOAP 1.1 with Ruby <ul><li>Project Name: SOAP4R </li></ul><ul><li>Purpose: Ruby library for Simple Object Access Protocol 1.1 </li></ul><ul><li>Features </li></ul><ul><ul><li>Inter-operable web services clients </li></ul></ul><ul><ul><li>Standalone SOAP server </li></ul></ul><ul><ul><li>SOAP with attachments </li></ul></ul><ul><ul><li>Basic authentication and SSL </li></ul></ul><ul><ul><li>RPC-encoded style </li></ul></ul><ul><ul><li>Document-literal style </li></ul></ul>SOAP4R Score Code: A Doc: C Tests: A
  16. 16. WSDL for Ruby <ul><li>Project Name: WSDL4R </li></ul><ul><li>Purpose: Generate Ru by code from Web Services Descriptions (WSDL) </li></ul><ul><li>Features </li></ul><ul><ul><li>Packaged with SOAP4R </li></ul></ul><ul><ul><li>Dynamic Web Services clients (no stubs!) </li></ul></ul><ul><ul><li>WSDL from Ruby web services </li></ul></ul><ul><ul><li>Ruby classes from XML schemas (XSD) </li></ul></ul><ul><ul><li>Command-line tools wsdl2ruby and xsd2ruby </li></ul></ul>Maturity Score Code: B Doc: C Tests: B
  17. 17. UDDI for Ruby <ul><li>Project Name: UDDI4R </li></ul><ul><li>Purpose: Dynamic discovery and binding of web services </li></ul><ul><li>UDDI Version 2.0 Client </li></ul><ul><li>Features </li></ul><ul><ul><li>All UDDI Version 2.0 inquiry operations </li></ul></ul><ul><ul><li>Built on ROXML </li></ul></ul><ul><ul><li>Disclaimer: I am the lead developer for UDDI4R </li></ul></ul>Maturity Score Code: B Doc: B Tests: A
  18. 18. Web Services for Rails <ul><li>Project Name: Action Web Services </li></ul><ul><li>Purpose: Simple web services provider </li></ul><ul><li>Designed for building APIs over Ruby on Rails applications </li></ul><ul><li>Features </li></ul><ul><ul><li>RPC-Encoded web services only </li></ul></ul><ul><ul><li>Dynamic WSDL at runtime </li></ul></ul><ul><ul><li>Packaged with Ruby on Rails (for now) </li></ul></ul>Maturity Score Code: A Doc: B Tests: A
  19. 19. What's Missing <ul><li>WS-I Basic Profile 1.1 </li></ul><ul><ul><li>Newer versions of standards </li></ul></ul><ul><li>WS-I Security Profile 1.0 </li></ul><ul><ul><li>WSS4R is work-in-process library </li></ul></ul><ul><li>Better documentation </li></ul><ul><ul><li>SOAP4R and WSDL4R need tutorials </li></ul></ul><ul><li>Important WS-* Standards </li></ul><ul><ul><li>Can be built on existing foundation libraries </li></ul></ul>
  20. 20. Use cases for SOA with Ruby <ul><li>Ruby can be a productive way to: </li></ul><ul><li>Build web applications over web services </li></ul><ul><li>Write web services tests with minimal code </li></ul><ul><li>Write custom web services monitoring and management </li></ul><ul><li>Integrate ERPs, COTS and custom applications </li></ul><ul><li>Write SOA glue-code, e.g. custom transformation </li></ul><ul><li>Perform programmatic web services orchestration </li></ul><ul><li>Develop basic web services </li></ul>
  21. 21. Questions and Answers My blog: http://mandhro.com UDDI4R: http://uddi4r.rubyforge.org SOAP4R & WSDL4R: http://dev.ctor.org/soap4r REXML: http://www.germane-software.com/software/rexml/ libxml-Ruby: http://libxml.rubyforge.org

×