Monday, November 07, 2005

Best Practices: .NET/J2EE interoperability

Laurence Moroney de Mainsoft, ha sigut l'encarregat de comentar alguns aspectes de com integrar J2EE i .NET... que s'ha acavat convertint en una demostració del producte de Mainsoft que ells anomenen Unified Platform.
Inicialment ens ha enumerat les diferents possibilitats d'integració .NET/J2EE:
  1. Web Services: Efectivament funciona, però afegeixen overhead, augmenten la complexitat de mantenir els diferents servidors implicats i també converteixen l'interoperabilitat en un paradigma de request/response força lent... a més a més si s'involucren tipus de dades complexos la cosa es complica: ja sabem com va això dels estàndards en informàtica ;)
  2. EAI: Utilitzar un EAI és una opció. Augmenta la complexitat de mantenir els servidors, ja que a més dels servidors J2EE i .NET hem de mantenir i configurar el EAI
  3. Missatgeria: Vé a ser el mateix que el punt anterior.
Arribat en aquest punt a on sembla que no hi ha cap solució que permeti interoperar J2EE i .NET de forma fàcil, és quan ens ha presentat el Unified Platform de Mainsoft.
La idea és unificar .NET i J2EE en una sola plataforma (J2EE) de forma transparent, i que la gent de .NET pugui seguit utilitzant els seus coneixements, habilitats i productes (VS.NET).
El producte de Mainsoft, bàsicament, és un compilador de MSIL a bytecode: Agafa codi MSIL de .NET i el compila a bytecode per a ser executat en una JVM. D'aquesta manera qualsevol aplicació .NET pot executar-se com si fos una aplicació java.
La idea de Mainsoft és doncs aquesta: Permetre l'execució d'aplicacions .NET sota servidors J2EE. L'aplicació .NET és compilada a bytecode, es genera una aplicació 100% J2EE que és la que s'executa (sota un websphere, un weblogic o un jboss). A més a més el procés està 100% integrat amb VS.NET (no cal explicitament realitzar cap acció extra per tal de convertir el codi MSIL a bytecode) i permet fins i tot depurar amb VS.NET! O sigui que la gent que programa en .NET no ha de canviar cap dels seus costums.
Ok, d'acord, algú pot objectar que no n'hi ha prou convertint el codi MSIL a bytecode: tot i que el rol que juguen MSIL i bytecode a cada plataforma és el mateix, el framework de classes que hi ha per sota no te res a veure en .NET i en J2EE. Resumint: ens cal tenir un .NET Framework "convertit" a J2EE o un .NET Framework natiu en la plataforma escollida... Segons m'ha semblat entendre Mainsoft ha escollit la primera opció: utilitzant el seu propi compilador de MSIL a bytecode, han compilat les llibreries de classes de Mono a J2EE, i aquestes llibreries convertides son les que s'inclouen en el seu producte (de fet Mainsoft és un dels principals patrocinadors del projecte Mono i participa activament en el seu desenvolupament). Convertint Mono a J2EE s'asseguren que poden donar suport a qualsevol plataforma (igual que J2EE).
Aspectes claus de l'eina:
  • 100% integrada amb VS.NET: Es pot depurar amb VS.NET la part .NET de l'aplicació que s'està executant sota un contenidor J2EE.
  • Permet l'ús directe de classes java i/o EJBs desde VS.NET: Apareixen dues opcions extres a VS.NET (add java reference i add EJB reference) que automàticament generen els proxies en .NET per a invocar directament una classe Java.
  • Permet la creació de EJBs en .NET, a través d'Enterprise Services, però és una opció que tot i que és possible no la recomanen.
  • No suporta, de moment, aplicacions winforms (winforms no estan suportats actualment en Mono).
  • Suport per a .NET 2.0 es preveu en mig any (m'ha semblat entendre).
Més info sobre l'eina es pot trobar a http://www.mainsoft.com/solutions/whitepapers/vmw4j2ee_tech_wp.pdf

Resumint: La presentació era totalment comercial, però no es pot negar que l'eina sembla a priori força potent...

2 Comentaris:

Blogger eiximenis ha dit...

Bé... després del comentari de la dolça bridgitte (mmmm... es pot eliminar l'spam d'alguna manera a blogger??), afegeixo un parell de dades que ens van donar durant la conferència:

1) El 95% de GRANS projectes s'implementen mitjançant J2EE i .NET o almenys contemplen algun mecanisme de col·laboració entre ambdues plataformes.

2) J2EE està molt més ben considerat per realitzar la part de back-end que no pas la de front-end. Per altra banda .NET (especialment ASP.NET) sembla que té molta més tirada per realitzar la tasca de presentació. Així doncs, la majoria de projectes que interoperen .NET i J2EE ho fan amb ASP.NET a la capa de presentació i components J2EE a les capes de negoci i dades...

5:31 AM  
Blogger lleonard.- ha dit...

Edu, ja he eliminat el spam de "la dolça bridgitte". Avantatges de ser l'administrador :-)

12:24 PM  

Post a Comment

<< Home