Programiranje

Oblikovalski vzorci omogočajo boljše aplikacije J2EE

Od svoje ustanovitve je J2EE (Java 2 Platform, Enterprise Edition) poenostavil konstrukcijo aplikacij za podjetja v Javi. Ko se J2EE širše sprejema, pa razvijalci spoznavajo potrebo po opredeljenih pristopih, ki poenostavljajo in standardizirajo izdelavo aplikacij. Ta cilj lahko začnete dosegati s standardizacijo aplikacije arhitekturni sloj.

Arhitekturna plast na splošno zajema tehnično zapletenost aplikacije, neodvisno od poslovne logike, in tako zagotavlja ohlapno povezavo med poslovno funkcionalnostjo in osnovno tehnično infrastrukturo. V tem članku pojasnjujem nastajajočo metodo za gradnjo aplikacijske arhitekture za projekte J2EE - takšno, ki uporablja vzorce oblikovanja, da zagotovi standardizacijo in preprostost, ki jo zahteva dobra arhitektura.

Arhitektura aplikacij in J2EE

J2EE je odlična infrastrukturna tehnologija. Zagotavlja enoten standard za naloge nižjega nivoja tehnološkega sklada, na primer komunikacijo z bazo podatkov ali distribucijo aplikacij. J2EE pa ne vodi razvijalcev k izdelavi uspešnih aplikacij. Ustvarjalci J2EE so se ob pogledu na tehnološki sklop spraševali: "Kako lahko standardiziramo te API-je?" Morali bi pogledati razvijalce aplikacij in jih vprašati: "Kako lahko razvijalcem dam gradnike, ki jih potrebujejo, da se osredotočijo na svojo poslovno aplikacijo?"

Ob začetku novega projekta J2EE nekateri člani ekipe pogosto vprašajo: "Če je J2EE sam po sebi arhitektura, zakaj potrebujemo več?" Številni razvijalci so menili, da je bila napačna predstava v zgodnjih dneh J2EE, vendar izkušeni razvijalci J2EE razumejo, da J2EE ne zagotavlja arhitekture aplikacij, ki je potrebna za dosledno zagotavljanje visokokakovostnih aplikacij. Ti razvijalci pogosto uporabljajo vzorce oblikovanja, da zapolnijo to vrzel.

Oblikovalni vzorci

Pri programiranju vam vzorci oblikovanja omogočajo izkoriščanje skupnih izkušenj skupnosti razvijalcev z izmenjavo težav in rešitev, ki koristijo vsem. Vzorec načrtovanja mora zajemati definicijo in kontekst problema, možno rešitev in posledice rešitve.

Za namene arhitekture aplikacij J2EE vzorci načrtovanja spadajo v dve kategoriji: splošni vzorci razvoja programske opreme in vzorci, ki opredeljujejo posebne izzive J2EE. Vzorčni vzorci zasnove, specifični za J2EE, prepoznajo minimalni nabor znanih problemov, ki bi jih morala rešiti trdna arhitektura aplikacije. Prva skupina, ki se nanaša na vzorce razvoja programske opreme, ki niso specifični za J2EE, se izkaže za enako močno - ne za prepoznavanje težav, temveč za usmerjanje gradnje arhitekture.

Podrobneje preučimo vsako področje.

Vzorci oblikovanja J2EE

Vzorci oblikovanja J2EE se razvijajo v zadnjih nekaj letih, ko je skupnost Java pridobila izkušnje z J2EE. Ti vzorci načrtovanja prepoznajo morebitne težave, s katerimi se srečujejo pri uporabi različnih tehnologij, določenih z J2EE, in razvijalcem pomagajo zgraditi zahteve arhitekture aplikacije. Priljubljen vzorec zasnove Front Controller na primer pretvori nestrukturirano kodo strežniškega programčka v krmilnik, ki spominja na izpopolnjen razvoj GUI (grafični uporabniški vmesnik).

Vzorci načrtovanja J2EE prepoznajo tiste težave z domeno, ki se bodo najverjetneje pojavile v vaših projektih J2EE. Če bi bile težave redke, se oblikovalski vzorci ne bi razvili, da bi jih izpolnili. S tem v mislih boste imeli koristi od reševanja vsakega problema domene v svoji arhitekturi. Če jih želite rešiti, ustvarite kontrolni seznam za potrditev popolnosti vaše arhitekture. Ta postopek je v nasprotju s postopkom za vzorce načrtovanja razvoja programske opreme, o katerih bom razpravljal v nadaljevanju, saj jih morate uporabiti le, če in če je to primerno.

Kje torej najdete vzorce oblikovanja J2EE? Sun Microsystems ponuja dve knjigi, ki vsebujeta veliko vzorcev J2EE:

  • Skupine J2EE BluePrint Oblikovanje poslovnih aplikacij s platformo Java 2 (Enterprise Edition), Nicholas Kassem idr. (Addison-Wesley, 2000; ISBN: 0201702770)
  • Skupina Sun Professional Services Osnovni vzorci J2EE: najboljše prakse in strategije oblikovanja, Deepak Alur, John Crupi in Dan Malks (Prentice Hall, 2001; ISBN: 0130648841)

(Glejte Vire za povezave do obeh knjig.)

Poleg Suninih virov druge publikacije ponujajo informacije o vzorcih oblikovanja J2EE, vključno z različnimi revijami ali spletnimi mesti v industriji Java (npr. JavaWorld), pa tudi številne knjige. (Glejte Vire za povezave do nekaterih od teh spletnih mest, vključno z JavaWorld 's Vzorci oblikovanja Stran s tematskim kazalom.)

Vzorci načrtovanja razvoja programske opreme

Zavedajte se tudi vzorcev oblikovanja programske opreme, razdeljenih na splošne objektno usmerjene vzorce (OO) in vzorce načrtovanja, specifične za Javo. Tovarniški vzorec na primer predstavlja močan vzorec OO-oblikovanja za inkapsulacijo ustvarjanja predmetov, ki omogoča ponovno uporabo in izpolnjuje spreminjajoče se zahteve sistema. Vzorci oblikovanja jezika Java so v svojem delu upoštevali posebnosti jezika Java. Nekateri so edinstveni za Javo in so običajno neformalni (na primer izjeme in primitivi), drugi pa so vzorci OO, izpopolnjeni, da veljajo za Javo. Slavna knjiga Gang of Four, Vzorci oblikovanja avtor Eric Gamma et al., podrobno opisuje številne splošne vzorce razvoja programske opreme, uporabne vsem programerjem.

Teh vzorcev ne zavrzite preprosto zato, ker niso specifični za J2EE. Nasprotno, takšni vzorci se lahko izkažejo za enako močne, če ne celo bolj kot vzorčni vzorci J2EE, ker:

  • Medtem ko so vzorci oblikovanja J2EE novi in ​​se razvijajo (ker je J2EE nov in se razvija), drugi vzorci koristijo starosti, saj ima industrija več časa, da jih pregleda in izboljša.
  • Pogosto so osnova za oblikovanje vzorcev J2EE.
  • Zgradijo temelje, na katerih se izvajajo rešitve, specifične za J2EE. Pravilna konstrukcija tega temelja v veliki meri vpliva na robustnost in razširljivost celotne arhitekture. Če ne bi bil pravilno zgrajen, bi temelj zmanjšal uporabnost arhitekture, ne glede na to, koliko težav z J2EE rešuje.

Ne naredite kontrolnega seznama, ki bi zajemal vzorce razvoja programske opreme, ki jih zahteva vaša arhitektura, kot bi to storili z vzorci J2EE. Namesto tega uporabite take vzorce, kjer je to primerno glede na posebne izzive vašega projekta. Mnogi razvijalci zmotno verjamejo, da se bodo njihovi izdelki izboljšali, če bodo uporabili več vzorcev - ali če bodo uporabili vse! Vendar temu ni tako. Pri odločanju, katere vzorce uporabiti in kako jih uporabiti skupaj, bodite preudarni in prefinjeni.

Oblikovalski vzorci: kje je koda?

Upoštevajte, da vzorčni vzorci nimajo natančne izvedbe ali izvorne kode, ki jo boste uporabili. Ponudbe vzorčnih vzorcev segajo od redkih besedilnih opisov do bogate dokumentacije do morda kakšne vzorčne kode. Izziv je v uporabi močnih idej vzorcev. Te ideje je treba uporabiti v okolju, v katerem bodo uporabljene; okolje določa pravilno izvedbo.

Kot analogijo razmislite o oblikovalskem vzorcu za gradnjo temeljev hiše. Vzorec zasnove opredeljuje problem, kontekst in možno rešitev za gradnjo temeljev - informacije, ki so gradbeniku na terenu izjemno dragocene. Delavec pa mora vseeno zgraditi temelje. Ali ne bi imel ta gradbeni delavec več koristi, če bi dobil temelje (podobno kot razvijalec programske opreme, ki bi bil izveden)? Mogoče bi bila ta podlaga le betonska plošča, na kateri bi lahko zgradili hišo. Težava: Fundacija se mora integrirati s samo hišo in zemljiščem, kjer bo hiša prebivala. Kako lahko takšna vnaprej postavljena podlaga sprejme vse možne tlorise hiš (pravokotnik, kvadrat in druge nenavadne oblike) in vse možne pokrajine (na vrhu hriba, sredi gozda itd.)?

Nazaj v svet programske opreme je izvedljivost uporabe vnaprej izdelanih vzorcev oblikovanja odvisna od dveh dejavnikov:

  • Rešitev je izvedba in ne posamezni vzorci oblikovanja. Rešitev bi lahko vključevala več vzorcev oblikovanja in s tem vedela, kako se posamezni vzorci vzorca igrajo skupaj.
  • Rešitev mora biti prilagodljiva, kar ustreza končnemu vprašanju iz analogije predhodno zgrajenega temelja: temelj se mora prilagoditi terenu in tlorisom. Kot si lahko predstavljate, bi bil za izdelavo prilagodljive podlage v nasprotju s standardno podlago potreben izredno usposobljen obrtnik.

Pogosti vzorci oblikovanja

Spodnja tabela navaja nekaj običajnih vzorcev oblikovanja iz virov J2EE in širših vzorcev OO.

Pogosti vzorci oblikovanja
Vzorci oblikovanja J2EEVzorci razvoja programske opreme
Fasada sejeSingleton
Sestavljalec predmetov vrednostiMost
Vzorec lokatorja storitevPrototip
Poslovni delegatFactory Factory
Sestavljeni subjektMuha
Obdelovalec seznama vrednostiMediator
Locator storitevStrategija
Sestavljeni subjektDekorater
Vrednostni objektDržava
Storitev za delavcaIterator
Predmet dostopa do podatkovVeriga odgovornosti
Prestrezni filterModel View Controller II
Ogled pomočnikaMemento
Sestavljen pogledGraditelj
Pogled dispečerjaTovarniška metoda

Oglejmo si dva primera vzorčnega vzorca J2EE: vzorce fasade seje in vzorca vrednosti vrednosti. Oba prikazujeta, kako se vzorci načrtovanja J2EE osredotočajo na težave, ki so značilne za okolje J2EE, v nasprotju z vzorci načrtovanja razvoja programske opreme, ki običajno veljajo za kakršen koli napor pri razvoju aplikacij.

Primer: vzorec J2EE fasade seje

Vzorec fasade seje se je razvil iz izkušenj s Enterprise JavaBeans (EJB). Sistemi, zgrajeni na novo uvedenih entitetah EJB (ki komunicirajo z bazo podatkov), so počasi plazili. Testiranje učinkovitosti je razkrilo težave, ki izhajajo iz večkratnih omrežnih klicev med komunikacijo z entitetnimi EJB-ji, ki so dodali režijske stroške za vzpostavitev omrežne povezave, serializacijo podatkov za pošiljanje in prejemanje ter druge učinke.

V odgovor je vzorec fasade seje izboljšal zmogljivost s centraliziranjem večkratnih omrežnih zadetkov v en sam klic. Session Facade uporablja sejo EJB brez stanja, ki posreduje med odjemalskim klicem in zahtevano interakcijo EJB entitete. Obstaja več vzorcev za izboljšanje učinkovitosti dostopa do baze podatkov, vključno z vzorci Fast Lane Reader in Data Access Object.

Primer: Vzorec predmeta Vrednost J2EE

Namen vzorca Value J2EE je tudi izboljšati delovanje sistemov, ki uporabljajo EJB-je prek omrežja. Tisti omrežni klici, ki povzročajo režijo iz prejšnjega primera, pridobijo posamezna podatkovna polja. Na primer, morda imate Oseba entiteta EJB z metodami, kot so getFirstName (), getMiddleName (), in getLastName (). Z vzorcem oblikovanja predmeta vrednosti lahko tako več omrežnih klicev zmanjšate na en klic z metodo na entiteti EJB, na primer getPersonValueObject (), ki vrne podatke naenkrat. Ta predmet vrednosti vsebuje podatke, ki jih predstavlja entiteta EJB, do katerih je po potrebi mogoče dostopati, ne da bi pri tem prišlo do obremenitve omrežnega klica.

Primer: Flyweight OO vzorec

Za primer široko uporabnega vzorca zasnove OO si oglejte vzorec Flyweight, ki izboljša zmogljivost aplikacije s ponovno uporabo predmeta. Programska oprema OO ustvarja režijske stroške - zapravljene cikle procesorja, zbiranje smeti in dodeljevanje pomnilnika - ko ustvari in uniči predmet. Če bi sistem lahko ponovno uporabil te predmete, bi se temu izognili. Predmeti pa pogosto niso večkrat uporabni, ker vsebujejo informacije (imenovane država) specifično za trenutnega uporabnika predmeta. Vzorec Flyweight ponuja pristope za premikanje tega stanja drugam, tako da je mogoče preostali predmet ponovno uporabiti.

Vse skupaj: primer vztrajnosti

Zdaj, ko poznate osnove, lahko začnete uporabljati vzorce oblikovanja v svojih razvojnih praksah. Kako pa dejansko uporabljate vzorce? Začnite z določitvijo domene ali tehnične težave, ki zahteva rešitev. Vztrajnost - reševanje starostne neskladnosti med objektom in relacijsko bazo podatkov - je dober primer za večino poslovnih aplikacij. Oglejmo si korake, ki so potrebni za načrtovanje in izdelavo trajne plasti arhitekture aplikacije.

V skladu s tradicionalnim pristopom arhitekture in oblikovanja OO ustvarite primere uporabe, ki opisujejo vaše potrebe po vztrajnosti. Možni primeri uporabe vključujejo:

  1. Vztrajnost objektov mora biti pregledna z vidika razvijalcev.
  2. Mehanizme obstojnosti - EJB entitet, predmeti za dostop do podatkov itd. - je treba konfigurirati na arhitekturni ravni.
  3. Naša arhitektura bi morala uporabljati tehnologije J2EE, vendar bi morala vključevati odvisnosti J2EE. Morali bi lahko spremeniti ponudnike strežnikov aplikacijskih strežnikov J2EE, različice J2EE ali popolnoma nadomestiti J2EE, ne da bi bilo treba v celoti popraviti aplikacijo.
  4. Nastalo plast obstojnosti je treba v projektih ponovno uporabiti. To bi moralo biti del naše stalne arhitekture aplikacij.

Ko prepoznate težavo, se lahko odločite, kateri vzorci se uporabljajo. Ne pozabite, da morate za vzorce J2EE določiti, kateri vzorci veljajo na problematičnem območju, in jih odpraviti. Za vztrajnost so ustrezni vzorci oblikovanja J2EE (glejte knjige o vzorcih oblikovanja Sun J2EE v virih):

  • Vrednostni objekt
  • Čitalnik hitrih pasov
  • Predmet dostopa do podatkov
  • Fasada seje
  • Sestavljeni subjekt
  • Obdelovalec seznama vrednosti

Ker boste uporabljali EJB-je, vključite vzorce Business Delegate in Locator Service, da boste obravnavali dostop do EJB.

Poleg tega so za reševanje primerov druge in tretje uporabe potrebni tradicionalni vzorci načrtovanja razvoja programske opreme. Kako enkapsulirate odvisnosti in imate nastavljive mehanizme trajnosti? Nekateri veljavni vzorci razvoja programske opreme vključujejo:

  • Tovarna
  • Mediator
  • Strategija
$config[zx-auto] not found$config[zx-overlay] not found