Vra

My span is besig om 'n nuwe diensgerigte produk met 'n webfront-end te ontwikkel.In besprekings oor watter tegnologieë ons gaan gebruik, het ons besluit om 'n JBoss-toepassingsbediener en Flex-frontend (met moontlike lessenaar-ontplooiing deur Adobe AIR) te bestuur, en webdienste om die kliënt en bediener te koppel.

Ons het 'n dooiepunt bereik wanneer dit kom by watter bedienertegnologie om vir ons besigheidslogika te gebruik.Die groot argument is tussen EJB3 en Spring, met ons grootste bekommernisse is skaalbaarheid en werkverrigting, en ook instandhouding van die kodebasis.

Hier is my vrae:

  1. Wat is die argumente vir of teen EJB3 vs Spring?
    • Watter slaggate kan ek met elkeen verwag?
    • Waar kan ek goeie maatstafinligting vind?
Was dit nuttig?

Oplossing

Daar sal nie veel verskil wees tussen EJB3 en Spring gebaseer op prestasie nie.Ons het Lente gekies om die volgende redes (nie in die vraag genoem nie):

  • Spring dryf die argitektuur in 'n rigting wat eenheidstoetsing makliker ondersteun.Spuit byvoorbeeld 'n skyn-DAO-voorwerp in om jou besigheidslaag te toets, of gebruik Spring se MockHttpRequest-objek om 'n servlet te toets.Ons handhaaf 'n aparte Spring-opstelling vir eenheidstoetse wat ons toelaat om toetse na die spesifieke lae te isoleer.
  • 'n Oorheersende bestuurder was verenigbaarheid.As jy meer as een App Server moet ondersteun (of uiteindelik die opsie wil hê om van JBoss na Glassfish te skuif, ens.), sal jy in wese jou houer (Lente) saam met jou dra, eerder as om op versoenbaarheid tussen verskillende implementerings van die EJB3 spesifikasie.
  • Lente maak voorsiening vir tegnologie-keuses vir volharding, verwydering van voorwerpe, ens.Ons gebruik byvoorbeeld ook 'n Flex-voorkant en gebruik die Hessian-protokol vir kommunikasie tussen Flex en Spring.

Ander wenke

Die gaping tussen EJB3 en Lente is duidelik baie kleiner as wat dit was.Dit gesê, een van die nadele van EJB3 is nou dat jy net in 'n boon kan spuit, sodat jy uiteindelik komponente in bone kan verander wat nie hoef te wees nie.

Die argument oor eenheidtoetsing is nou redelik irrelevant - EJB3 is duidelik ontwerp om makliker eenheidtoetsbaar te wees.

Die verenigbaarheidsargument hierbo is ook soort van irrelevant:of jy EJB3 of Spring gebruik, jy is steeds aangewese op implementerings van transaksiebestuurders, JMS, ens.

Wat dit egter vir my sou swaai, is ondersteuning deur die gemeenskap.Terwyl ons verlede jaar aan 'n EJB3-projek gewerk het, was daar net nie baie mense wat dit gebruik en oor hul probleme praat nie.Lente, reg of verkeerd, is uiters deurdringend, veral in die onderneming, en dit maak dit makliker om iemand te vind wat dieselfde probleem het wat jy probeer oplos.

Wat is die argumente vir of teen EJB3 vs Spring?Lente is altyd innoverend en erken werklike beperkings.Spring het eenvoud en elegansie vir die Java 1.4-toepassingsbedieners gebied en het nie 'n weergawe van die J2EE-spesifikasie vereis waartoe niemand in 2004 - 2006 toegang gehad het nie.Op hierdie stadium is dit amper 'n godsdienstige debat waarin jy ingesuig kan word - Spring + abstraksie + oopbron versus Java Enterprise Edition (Java EE) 5.0 spesifikasies.

Ek dink Lente komplementeer meer as kompeteer met die Java EE-spesifikasies.Aangesien die kenmerke wat eens uniek aan Lente was, steeds in die spesifikasie ingerol word, sal baie argumenteer dat EJB 3 'n 'goed genoeg' kenmerkstel vir die meeste interne besigheidstoepassings bied.

Watter slaggate kan ek met elkeen verwag?As jy dit as volhardingskwessie (Lente+JPA) teenoor EJB3 hanteer, maak jy regtig nie so 'n groot keuse nie.

Waar kan ek goeie maatstafinligting vind?Ek het nie die gevolg nie specj maatstaf resultate vir 'n geruime tyd, maar hulle was 'n rukkie gewild.Dit blyk dat elke verskaffer (IBM, JBOSS, Oracle en Sun) al hoe minder belangstel om 'n bediener te hê wat voldoen.Die lyste word al hoe korter van gesertifiseerde verskaffers soos jy van 1.3, 1.4 af gaan.1.5 Java Enterprise Edition.Ek dink die dae van 'n reuse-bediener wat ten volle aan al die spesifikasies voldoen, is verby.

Ek sal beslis EJB3 oor die lente aanbeveel.Ons vind dat dit meer vaartbelyn is, lekkerder om in te kodeer en beter ondersteun word.Ek het in die verlede Spring gebruik en gevind dat dit baie verwarrend is, en nie so goed gedokumenteer soos EJB3 (of JPA ek dink aan die einde van die dag)

  1. Vanaf EJB3 hoef jy nie meer te doen met eksterne konfigurasielêers nie, en daar is net een POJO wat jy per databasistabel annoteer.Hierdie POJO kan sonder enige probleme na u webvlak oorgedra word.IDE's soos Netbeans kan selfs hierdie POJO's outomaties vir jou genereer.Ons het EJB3 nou as die agterkant gebruik vir 'n hele paar grootskaalse toepassings, en het geen prestasieprobleme opgemerk nie.Jou sessiebone kan maklik as webdienste blootgestel word wat jy aan jou Flex-frontend kan blootstel.Sessiebone is maklik om op 'n metode- of klasvlak toe te sluit om rolle en sulke dinge toe te ken as jy dit nodig het.

Ek kan nie soveel oor lente praat nie, want ek het dit net vir 'n paar weke probeer.Maar my algehele indruk daarvan was baie swak.Dit beteken nie dat dit 'n slegte raamwerk is nie, maar ons span hier het gevind dat EJB3 die beste is vir die volharding/besigheidslaag.

Ek is geneig om Spring bo EJB3 te verkies, maar my aanbeveling sal wees watter benadering jy ook al volg, probeer om by die skryf van POJO's te bly en gebruik die standaardaantekeninge waar moontlik, soos die JSR-aantekeninge soos @PostConstruct, @PreDestroy en @Resource wat met beide EJB3 werk of Lente sodat jy kan kies watter raamwerk jy ook al verkies.

bv.jy kan op een of ander projek besluit om Guice eerder vir IoC te gebruik.

As jy voorafversoekinspuiting wil gebruik, soos in 'n webtoepassing, sal jy dalk vind dat Guice heelwat vinniger is vir afhanklikheidsinspuiting as Lente.

Sessiebone kom meestal neer op afhanklikheidsinspuiting en transaksies;so EJB3 en Lente is nogal soortgelyk daarvoor.Waar Lente die voorsprong het, is op beter afhanklikheidsinspuiting en mooier abstraksies vir dinge soos JMS

ek het in die verlede 'n baie soortgelyke argitektuur gebruik.Spring + Java 1.5 + Actionscript 2/3, gekombineer met Flex Data Services, het dit alles baie maklik (en pret!) gemaak om te kodeer.'n Flex-voorkant beteken egter dat u voldoende kragtige kliëntmasjiene benodig.

Oor jou vraag:

Wat is die argumente vir of teen EJB3 vs Spring?

Ek stel voor dat u die antwoord van die kenners lees: 'N ANTWOORD OP:EJB 3 EN LENTE VERGELYKENDE ONTLEDING deur Mark Fisher.Lees die opmerkings om Reza Rahman se opmerkings te vind (EJB 3.0).

Nog iets ten gunste van lente is dat die meeste van die ander gereedskap / raamwerke daar buite beter ondersteuning het vir integrasie met lente, die meeste van hulle gebruik ook veer intern (bv.activemq, kameel, CXF, ens.).

Dit is ook meer volwasse en daar is baie meer hulpbronne (boeke, artikels, beste praktyke, ens.) & ervare ontwikkelaars beskikbaar as vir EJB3.

Ek dink EJB is 'n goeie komponenttegnologie, maar nie 'n goeie raamwerk nie. Lente is die beste raamwerk wat vandag beskikbaar is. Ek moet dus Lente as die beste implementering van JEE in die sin van 'n raamwerk beskou en my aanbeveling is om lente in elke projek wat ons die buigsaamheid gee om maklik met enige komponenttegnologie te integreer.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top