Rendszer építése vállalati alkalmazások

Építése Enterprise-alkalmazások

Amikor először találkozik a „Enterprise-alkalmazás” vagy „alkalmazására az egész vállalkozás”, ez általában nem elég, hogy az említett, mint egy programozó. Feltételezem, hogy az okozta a problémát, hogy fecskendeznek használatra nem programozók, és a marketingesek vagy az eladók, akik gyakran nem kommunikálnak a fejlesztők és az üzleti vezetők. Nem valószínű, hogy válaszolni fognak Önnek a kérdést: „Miért JSP vagy Servlet utal Java Enterprise Edition, nem pedig a Java Standard Edition?». Mint látható, semmi baj nincs web-alapú. Nem valószínű, hogy ezek sokkal bonyolultabb, mint az azonos Swing. De itt vannak osztva. Voltak mindenféle keretet, amely valóban segít megoldani Vállalati szintű feladatokat. Tehát mi olyan különleges a Enterprise-alkalmazásokat. E kérdés megpróbálok válaszolni ebben a fejezetben. Lehet, hogy valaki nem ért egyet a véleményem, de nekem fontos volt, hogy megértsék, hogy az egyes technológiák célja, hogy megoldja bizonyos típusú problémák. Ha ez megoldja a feladatot is, akkor szükség van rá. Ha nem - „az ő sütőben,” ahogy mondaná professzor átváltoztatástan.
Ha elemezzük a szabályokat az építési Enterprise-alkalmazások, akkor elég világosan megérteni, mi a könyvtárak és technológiák igényelni lehet. És azok is valahogy előre - lehet, hogy több. Ahhoz, hogy hosszú terjedni az elképzelést, a fa, nézzük meg a rendszer építésének Enterpise-alkalmazás (a jövőben csak annyit mondok „alkalmazás”). Nem mondom, hogy ez tagadhatatlan, de tapasztalatom szerint ez alkalmas szinte az összes projekt, amiben részt vett. Igen, általában, és nem sokban különbözik a tanácsot a szakemberek. Ha figyelembe vesszük a specifikáció a Java EE, foglalt elképzelések, hogy lesz egy 90% -os átfedés a rajz.

Miért így és nem másképp?

A részt vevő több mint egy éve (de valószínűleg több mint egy évtized) a létrehozását vállalati rendszerek jöttem egy általános leírást, hogy hogyan kell dolgozni Enterprise-alkalmazás. Ez nagyon egyszerű: a felhasználó elküld egy parancsot paraméterekkel, az adatokat, hogy valami történik, és ennek eredményeként a felhasználó kap egy választ a megadott formában bizonyos paraméterek, amelyek megjelennek a képernyőn valamilyen módon. Úgy vélem, hogy ez a megértés vezetett a megjelenése SOA - Service Oriented Architecture (SOA - Service Oriented Architecture). Ez csak egy új szintű megértése ugyanaz a probléma: a felhasználó elküld egy kérést - a rendszer nem valami ezekkel az adatokkal, és olyan eredményt ad vissza. Mi hozta a SOA rendszer építési technológia - ez a megértés, hogy a szolgáltatások sok egységet lehet azonos, ezért nincs értelme, hogy szaporodnak őket. És mi kell egy olyan mechanizmust, amely megkönnyíti csatlakoztatni a már meglévő szolgáltatások. Minden ilyen szolgáltatás lehet megvalósítani azonos elven működik, mint a teljes alkalmazás egészét - nevezetesen, osztva az azonos szinten. Mindezek szinten ez architektúra egyszerűen fejlődésének elősegítése és fenntartása alkalmazások. A felhasználó számára, hogy elérje, amit akar megérteni, hogy milyen lépéseket kell tenni pontosabban. És ami a legfontosabb - könnyű, hogy vegye figyelembe a sajátosságait Enterprise. És ezek az alkalmazások a következők jellemzik:

Ennek alapján ezek az ígéretek, azt mondhatjuk, hogy a kérelemben meg kell használni nagyon kifinomult módszereket tárolása, feldolgozása és jelentés. És mint mindig, ahol van kereslet, van egy javaslat - és ez több, mint egy tucat csomagok és technológiákat. És minél világosabban lesz képes megérteni a problémát, annál szélesebb körben ismert technológiák, annál nagyobb a csomagok száma lesz ismerős, annál gyorsabban megoldani az ügyfél problémáit, és ennek következtében a nagyobb értéket, mint egy profi.

Enterprise-rendszer építési kérelmek

Rendszer építése vállalati alkalmazások

Az egyetlen kikötés: ezt a rendszert úgy tervezték, hogy építsen rendszerek használata nélkül a fő összetevője a SOA - ESB (Enterprise Service Bus). Ha ön használ SOA, a rendszer nem fog pontosan, de ez „egy egészen más történet.” Bár néhány része a rendszer jól használható abban az esetben, a SOA.

tárolási szintet - perzisztencia réteg és adatforrás

Bunch adatforrás és állandósága réteg úgy tervezték, hogy az adatokat. Sőt, az adatok, ahogy az ábrán látható, tárolható nemcsak az adatbázisban. Ez lehet az XML-fájl vagy egy szöveges fájlt. Ez lehet egy e-mail szerver. Vagy Excel-fájlt. Általánosságban elmondható, hogy bármi lehet, amit akar - mindaddig, amíg többé-kevésbé állandó tárolására.
Annak érdekében, hogy képes elvonatkoztatni az adott adat tárolására használatos olyan dolog, mint az adatforrás - az adatforrás, amely elrejti általában valami többé-kevésbé kézzelfogható - egy külön adatbázist, fájl, vagy valami más. A koncepció adatforrás szolgálja a szerepét egy hidat állandósága réteg és a tényleges tárolási. Sőt, van még egy különleges besorolású - javax.sql.DataSource. Ő kikötés használják sodaniya a kapcsolatot az adatbázis - olvasható róla, hogy van értelme. De amellett, hogy ez a „absztrakció” van egy nagyon fontos tervezési minta - Data Access Object (DAO). A megjelenés miatt több okból is:

  • Az adatok forrása eltérő lehet.
  • Közvetlenül hozzáférni az adott boltozat használhatja a különböző API
  • A felvétel a kódot logika, amely korlátozza a műszak tárolás nem jó ötlet.

Hogyan, akkor DAO megoldja ezeket a problémákat. Az alapötlet - meghatározni az üzleti réteg felület, akkor használja az adatokhoz való hozzáféréshez. És azonnali végrehajtását ezen a felületen függ a boltban.

Rendszer építése vállalati alkalmazások

ORM - Object Relation Mapping. Figyelmeztetem egyszer - Nem úgy esetekben történő felhasználásának bármilyen más tároló, de a relációs adatbázisok. De még ebben az esetben az adatok meg kell szerezni a tárolóból, és olyan formában, amelyet kényelmes kezelni. Vannak már elég hosszú idő, a kifejezés ORM - Object Relation Mapping. Azt fordítani, mint „objektum-relációs leképezés táblák.” Bár eredetileg a „tábla”, és nem fordul elő, de jó lenne pontosabban tükrözi a jelentését. Utal technológiák, amelyek az alkalmazás szintjén lehetővé teszi számunkra, hogy fontolja meg bejegyzéseket a táblázatokban tárgyakat. Minden sor a táblázatban - az objektum. Csak ez az osztály tulajdonságai jelennek meg az oszlop a táblázatban. Az ilyen osztályokat nevezzük Entity - Essence. By the way, már majdnem került közel ehhez - bevezettük az osztály „csoport” és „Student”, amely valójában végre egy nagyon egyszerű függvény - az adatok tárolására egy táblázatban. Ezek a rendszerek veszi elég unalmas, de ez is nagyon fontos funkciókat - funkció végrehajtása szifilisz (létrehozni, olvasni, Update, Delete).
Nem kell írni ugyanazt a típusú kódot, ha beilleszt egy új rekordot, vagy fogadásakor a táblázat adatait - talán emlékszel, írtunk SQL-lekérdezések paraméterekkel, írta a kódot kitöltési paraméterek SQL-lekérdezés, írta a kódot az adattárolásra nyert ResultSetv tárgyak gyűjteménye egy bizonyos típusú. Egészen természetes, ezt a kellemetlenséget is megfigyelték a hosszú idő, és kísérletet tettek, hogy valahogy egyszerűsíteni. Így volt néhány keretet, amit már hallott. Itt vannak a legismertebb:

  • téli álmot alszik
  • TopLink
  • JPA - Java API Perzisztencia
  • JDO - Java Data Objects
  • iBatis

A szint az üzleti logika - az üzleti réteg

Ezen a szinten, egyrészt, hogy nagyon egyszerű, másrészt - nehéz. Csak azért, mert az ő ötlete és a funkcionalitás valóban nagyon egyszerű - teljesít adatfeldolgozás összhangban egy bizonyos logika - változások, hozzáteszi, tölti. És semmi mást. Másrészt, több nehézséget. - Először is kell szervezni a munkát adatok formájában egész ügylet (Remélem, hogy ez, mint tudjuk). És a második - a rendszer lehet összetett hierarchiáját osztályok, amelyeket meg kell állítani (inicializálja), ami szintén nem mindig egyszerű feladat.
Az első problémát meg lehet oldani többféleképpen is elég:

  • EJB - Enterprise Java Beans. Tény, hogy egyes osztályok (módszer), amely bizonyos intézkedéseket lehet rendelni a tranzakciót, amely kezeli az Application Server (ne felejtsük el, hogy az Application Server támogatnia kell a munkát az EJB). Úgy kezdődik, amikor belépnek az eljárás véget ér, és a kilépő módszer. A legújabb verzió EJB 3.0 (újra, ha a szerver ezt támogatja) megbirkózik a szükséges feladatokat elég jól. kapott.
  • Nagyon őszinte, hogy megkezdi a tranzakciós és a fogást az eredmény SQL-lekérdezések. Ez természetesen jobb, ha nem használja - az erdő nem fogja látni a fák között. Némi enyhülést munka lenne, hogy használja szempontokat. Az alapötlet a szempontok - egyfajta kód behelyezés különböző helyeken a program. Például megadhatjuk néhány sor módszerek és meghatározzák a cselekvések őket elején és végén. Aztán, ha hívja a módszer először elvégezni szempont kódot, és csak azután, hogy maga a módszer. További részletek megtalálhatók - aspektus-orientált programozás
  • Használja keret Spring. Ez tartalmazza a lehetőséget, hogy a különböző típusú tranzakciók - a szokásos JDBC-ügylet, a tranzakció Hibernate, TopLink, és még használni a tranzakció Application Server. Dolog nagyon kényelmes, és nagyon szép, nem igényel Application Server - tud dolgozni a szokásos Tomcat web-szerver. Ami fontos megjegyezni, hogy a végrehajtása a tavaszi használja az AOP, amely

inicializálási probléma megoldható fogalmát használva NOB (Inversion of Control). Leggyakrabban, az alapelv az úgynevezett „Hollywood elv” - „ne hívj, majd hívlak.” Más szavakkal -, hogy megteremtse a probléma inicializálás közötti kapcsolatok osztályok keretében írása helyett, az inicializáló kódot, ahol szükség van rá. A probléma megoldására van egy csomó keret, de most azonosított két:

Amellett, hogy továbbra is szeretnék rámutatni, - vegye figyelembe, hogy a perzisztencia réteg és az üzleti réteg, átadjuk az entitások, és más szinteken (UI szint) BusinessLayer küld / fogad egy nézet.
Először - ez kényelmes. UI kell adni, hogy ez fog megjelenni. És megmutatni, hogy nem mindig a pontos szerkezete közötti kapcsolatok az Entity. Tehát akkor kell gondolni, hogy - így könnyebben azonnal ad erre lehetőséget. Lehet, hogy néhány, a kilátás lesz a szerkezet még egybeesik a szervezetek. De gyakrabban ez nem történik meg.
Második - néhány évvel ezelőtt, a barátaim gyorsan létrehozott web-Sevices az osztály struktúra, amely adta ki az entitást. NetBeans őszintén létrehoz egy komplett osztály leírást. Aztán támadt egy kellemetlen felfedezés. Az a tény, hogy az entitás nem mindig töltse ki az összes egyszerre. Van olyan dolog, mint egy lusta alaphelyzetbe (lusta inicializálás). Ezt a technikát gyakran használják, ha nem kell minden mezőt az Entity azonnal. Ez csak akkor ezeket az adatokat kell majd - egy adatbázis lekérdezés. A kérés azonban csak akkor, ha egy nyitott tranzakciót. Abban az időben a tranzakció benyújtott üzleti réteg, az adatok átalakítása céljából az Web-Services Később - és van egy probléma. Egyrészt akar Entity „doinitsializirovatsya” végre, és az ügylet már lezárult. végrehajtási hiba lép fel. Kényelmetlen.
Van egy másik, hogy ad súlyt használni View - szabványos módszerek útján történő átvitelének HTTP paramétereket (lásd alább «Web-kliens» fejezetben.). Átalakítani a Java osztályok néhány szöveges megjelenítése reflexió gyakran használt mechanizmus (a megszerzésének lehetőségét információt az osztály - a mezők, módszerek, stb.) Tehát amikor konvertáló csomagok fogadására osztály, megpróbálta kivenni az összes mezőt. Ha bármelyik mező utal egy másik tárgy, a csomag megpróbál hozzáférést minden területén az objektum. És így tovább a végtelenségig. Valószínűleg már kitalálta, mi is szembe, ha két tárgy hivatkoznak egymásra. Vagy, általában van némi zárt láncot lehetőség. Egy ilyen átalakítás egyszerűen írja egy végtelen ciklus. Ez természetesen lehetséges, hogy írjon minden alkalommal a konverter. De ne legyen egyszerűbb levelet osztályt a nézet.
Ezen okok miatt a fordulat - ez kényelmes, hogy külön osztályokban a kérdés, hogy a szint UI

HTTP-kérések feldolgozását szint - web réteg

Valamilyen oknál fogva ezen a szinten gyakran rendelni üzleti logika kezelése - különösen a servlet. Véleményem szerint ez nem teljesen helyes.
Először is - vegyes adatok átalakítása c logika - minden technika gyűjteni egy halom, és szemetet. És akkor meg kell csinálni - mert nem jön a Java-objektumok és a szokásos HTTP. Igen, persze, vannak olyan módon, hogy automatizálják, de mégis akkor meg borzasztó.
A második -, aki azt mondta, hogy nem lesz csak a web-ügyfelek? És ha ez a web-Sevices démonokat vagy hagyományos „vastag» GUI-ügyfelek ami képes kommunikálni alkalmazása RMI vagy azonos web-szolgáltatások. Meg fog okozni a logikája a servlet? Elvileg ez lehetséges, de ez egyértelműen növeli a „pomoechnye” kódot.
Ezért született bízza a Web szintek egyszerű feladata az adatok közötti átváltási HTTP és Java. Az egyetlen dolog, amit még mindig ott feküdt a Web-szint - ez a logika a képernyők változás. Ugyanez a tervezési minta MVC (Model-View-Controller). De ez nem túl erős kötést azt az üzleti logikát. Ami a technológia és a keret, amelyet fel lehet használni ezen a szinten, hogy sokan vannak:

  • JSP + JSTL
  • JSF
  • Struts
  • tavasz
  • és még sok más - nehéz felsorolni

WS kliens (Web-Service kliens)

Általában itt különösen sokat beszélni - ami a Servais használni bármilyen távoli programot - így szép. Előnyei és hátrányai ennek a technológiának, kereshet az interneten. Ha leírunk egy példát létrehozását egy olyan kliens - röviden érinti ezeket a kérdéseket.

GUI-kliens

Itt minden teljesen nyilvánvaló, kivéve, hogy a kommunikációs protokoll a Application Server és az ügyfél kérdéseket vethet fel, de általában ez az RMI. Ami a közvetlen értékesítésre GUI, itt a választás a tiéd. Véleményem Swing lehetővé teszi, nagyon sok. Ezen kívül vannak SWT és a tenger különböző részeiben. Nézd meg az interneten.
Általában senki sem zavar rájössz hagyományos kliens-szerver alkalmazás egy vastag kliens és az adatbázis. De a kérdés már úgy nagyon röviden az első részben. Így néz ki és az interneten.

Web-kliens

Ma ez az egyik legnépszerűbb megoldás - de ez akkor használja építeni - itt is a választás elég nagy. Világos, hogy ha szeretné, hogy a UI volt szép és modern, akkor lehet használni AJAX. Persze, hogy azt is meg kell használni valamilyen könyvtárban. Mi lehet választani - úgy dönt:

  • ExtJS
  • jQuery
  • dojo
  • GWT
  • JSF - RichFaces, ICEfaces, MyFaces
  • és ismét sokkal

Mit vettem észre, ebben a szakaszban - tehát ez egy adatátviteli rendszer az ügyfél és a kiszolgáló és vissza. Ön ténylegesen használni fogja a HTTP, de nem Java-objektumokat. Itt ma a választás nem túl nagy:

Elvileg ez minden, amit akartam mondani ebben a fejezetben. A következőkben fogjuk felhívni a bonyolultabb rendszer a személyzeti osztály -, hogy ez sokkal érdekesebb. Akkor kezdődik - 15. rész - Az új adatstruktúra.