Foto av Johan Eltes

TSSS 2007 Apache Tuscany - Not The Same Old Architecture

// Johan Eltes

Apache Tuscany är en informell referensimplementation av SCA. Passande nog släpptes SCA-specifikationerna i version 1.00 idag. Tuscany implementerar Java-och WS-modellerna. Apache har också ett projekt för C++/SCA, men det täcktes inte av föredraget.

Java annoteringar för dependency injection

Tuscany stödjer SCA dependency injection och dess annoteringar. Här är ett exempel på konstruktor-baserad injecering mha annoteringar i Java. Kopplingen till infrastruktur (WebServices eller JMS eller POJO->POJO etc bestäms i ett senare skede och har defaults som är implementationspecifika:

public class LoanServiceImplim plements LoanService {
  private CreditService creditService;

  public LoanServiceIm pl(@Reference CreditService creditService) {
    this.creditService = creditService;
  }

  public void apply(Application application) {
    String id = application.getCusto merID();

    intrating = creditService.getCreditScore(id);
  }
}

Jämför med .Net Communication Framework

Talaren jämför SCAs abstraktion med den i version 3 av Windows Communication Framework (WCF). Precis som WCF, defknierar SCA ett generelt API för att definiera service-orienterade lösningar utan att binda programkod till protokoll-specifika api:er, så som JAX-WS, JMS etc. För att ytterligare förstärka den lösa kopplingen, bygger SCA på dependency injection. Om man väljer att avstå från annoteringar till fördel för XML-baserad konfiguration av beroenden, blir koden t.o.m. oberoende av SCA.

Var står Tuscany idag?

Apache Tuscany har idag Alpha-status. Man siktar mot följande mål:

  • Pluggbar implementation för att kunan lägga till olika runtimes och språk (JBI?)
  • Zero configuration
    • Default-sättningar för att lösa upp policies till lämplig binding (t.ex. OnceOnlyOnce->JMS)
    • Automatisk nedladdning och installation av extention-bibliotek som krävs av en viss (utpekad) bindning, t.ex. Spring för Spring-bindning.
  • Skala för deploy (via change sets) till 1000-tals noder
  • Runtimestöd för deployment mot standalone JVM, OSGi och WebApp (JAX-WS)
  • Att göra litet avtryck i deploy-time (2 MB)
  • SCA-lösningar skapade för Tuscany ska kunna bäddas in i andra containers (JavaEE, OSGi)

Kommentarer