"Biznesowe" wzorce projektowe
|
|
- Ryszard Kuczyński
- 8 lat temu
- Przeglądów:
Transkrypt
1 POLITECHNIKA GDAŃSKA WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI Katedra Architektury Systemów Komputerowych Jarosław Kuchta Instrukcja do laboratorium z przedmiotu Projektowanie Aplikacji Internetowych "Biznesowe" wzorce projektowe Gdańsk 2013/14 1
2 Wprowadzenie W ćwiczeniu studenci mają za zadanie napisanie aplikacji internetowej w technologii Web Service lub WCF wykorzystującej jednocześnie trzy wzorce projektowe: Transfer Object Assembler Composite Entity Business Delegate 1. Transfer Object Assembler Konieczność pobierania danych z wielu obiektów biznesowych przez warstwę aplikacji skutkuje ścisłym związkiem między warstwą aplikacji a rozproszonym modelem obiektowym. Zmiana modelu obiektowego powoduje konieczność zmiany warstwy aplikacji. Liczne operacje pobrania danych z komponentów rozproszonych powodują zmniejszenie wydajności sieci (wywołania zdalne z narzutem sieciowym). Zarządzanie komponentami biznesowymi przez warstwę aplikacji wymusza włączenie logiki biznesowej do warstwy aplikacji (zastosowanie grubego klienta) Jeśli warstwa biznesowa ma klientów różnych typów, to przeniesienie zmian modelu obiektowego do tych wielu różnych klientów jest dodatkowo utrudnione, jako że ten sam kod biznesowy może występować po stronie klienta w wielu różnych miejscach. Rozwiązaniem tych problemów może być przekazywanie danych wielu różnych komponentów biznesowych w jednym, zbiorczym obiekcie transferowym. Obiekt ten jest tworzony przez połączenie wielu obiektów transferowych z różnych komponentów biznesowych w jeden. Serwer tworzy taki zbiorczy obiekt transferowy w locie, tworząc jednocześnie biznesowy model obiektowy. Jeśli ten model jest złożony, to zbiorczy obiekt transferowy nie powinien być modyfikowany. W tym wzorcu: 1: To asembler obiektów transferowych (Transfer Object Assembly) jest po stronie serwera tym komponentem, który obsługuje żądania klienta co do pobrania danych. 2: W reakcji na to żądanie asembler tworzy obiekt transferowy (Transfer Object), który będzie zawierał dane. 3: Następnie asembler synchronicznie lub asynchronicznie pobiera dane z wielu różnych obiektów: 3a: z komponentów encyjnych (Business Entity), 3b: z komponentów sesyjnych (Business Session). 3c: lub bezpośrednio z obiektów DAO. 4: pobrane dane asembler umieszcza w obiekcie transferowym, 5: który odsyła do klienta 2
3 1.1. Przykład Aplikacja zarządzania projektem. Klient żąda zbiorczej informacji o projekcie, która zawiera: Dane identyfikacyjne projektu Dane osobowe kierownika projektu Listę zadań w tym projekcie Zasoby dla każdego zadania Klasa złożonego obiektu transferowego public class ProjectDetailsData public ProjectTO projectdata; public ProjectManagerTO projectmanagerdata; public Collection listoftasks; Klasa obiektu transferowego dla zasobów zadania public class TaskResourceTO public String projectid; public String taskid; public String name; public String description; public Date startdate; public Date enddate; public ResourceTO assignedresource; 3
4 public TaskResourceTO(String projectid, String taskid, String name, String description, Date startdate, Date enddate, ResourceTO assignedresource) this.projectid = projectid; this.taskid = taskid; this.assignedresource = assignedresource; Klasa dla obiektu transferowego zadania public class TaskTO public String projectid; public String taskid; public String name; public String description; public Date startdate; public Date enddate; public assignedresourceid; public TaskTO (String projectid, String taskid, String name, String description, Date startdate, Date enddate, String assignedresourceid) this.projectid = projectid; this.taskid = taskid; this.assignedresource = assignedresource; Klasa dla obiektu transferowego zasobu public class ResourceTO public String resourceid; public String resourcename; public String resource ; public ResourceTO (String resourceid, String resourcename, String resource , ) this.resourceid = resourceid; this.resourcename = resourcename; this.resource = resource ; 4
5 Implementacja asemblera obiektów transferowych public class ProjectDetailsAssembler implements javax.ejb.sessionbean public ProjectDetailsData getdata (String projectid) // Tworzenie złożonego obiektu danych ProjectDetailsData pdata = new ProjectDetailsData(); // Pobieranie danych projektu ProjectHome projecthome = ServiceLocator.getInstance().getHome ("Project", ProjectEntityHome.class); ProjectEntity project = projecthome.findbyprimarykey(projectid); ProjectTO projto = project.getdata(); // Dodawanie danych projektu do złożonego obiektu danych pdata.projectdata = projto; // Pobieranie danych menedżera projektu ProjectManagerHome projectmanagerhome = ServiceLocator.getInstance().getHome ("ProjectManager", ProjectEntityHome.class); ProjectManagerEntity projectmanager = projectmanagerhome.findbyprimarykey (projto.managerid); ProjectManagerTO projmgrto = projectmanager.getdata(); // Dodawanie danych menedżera do złożonego obiektu danych pdata.projectmanagerdata = projmgrto; // Pobieranie listy projektów Collection projtasklist = project.gettaskslist(); // Tworzenie listy zasobów dla zadania ArrayList listoftasks = new ArrayList(); Iterator taskiter = projtasklist.iterator(); while (taskiter.hasnext()) TaskTO task = (TaskTO) taskiter.next(); // Pobieranie danych zasobu ResourceHome resourcehome = ServiceLocator.getInstance().getHome ("Resource", ResourceEntityHome.class); ResourceEntity resource = resourcehome.findbyprimarykey (task.assignedresourceid); ResourceTO resto = resource.getresourcedata(); // Tworzenie obiektu transferowego dla zasobu zadania // korzystając z obiektów danych Task i Resource TaskResourceTO trto = new TaskResourceTO (task.projectid, task.taskid, task.name, task.description,task.startdate, task.enddate, resto); // Dodanie obiektu transferowego do listy zadań 5
6 listoftasks.add(trto); // Dodanie listy zadań do obiektu złożonego pdata.listoftasks = listoftasks; // Pobieranie innych danych obiektu transferowego // Zwracany złożony obiekt danych return pdata; 2. Composite Entity W aplikacjach rozproszonych komponenty klienckie uzyskują dostęp do komponentów encyjnych poprzez ich interfejsy zdalne. Dlatego każde wywołanie potencjalnie przechodzi przez liczne warstwy sieci, nawet wówczas, gdy klient odwołuje się do serwera lokalnego (na tym samym komputerze). Jeśli komponenty encyjne są "drobnoziarniste" oferują wiele szczegółowych metod to liczne wywołania tych metod przez klienta generują duży ruch sieciowy dając jednocześnie duży narzut sieciowy na wykonanie operacji. Komponenty encyjne reprezentują trwałe, rozproszone obiekty biznesowe. Podczas ich projektowania trzeba uwzględniać "ziarnistość" modelowych klas biznesowych. Stosowanie komponentów encyjnych jest opłacalne wówczas, gdy klasy biznesowe oprócz szeregu prostych metod pobierania i ustawiania właściwości ("get" i "set") oferują jeszcze metody bardziej złożone. Takie, "gruboziarniste" obiekty mają zazwyczaj obiekty zależne, które nie mają żadnego znaczenia w świecie rzeczywistym o ile nie są przypisane do jakiegoś nadrzędnego obiektu "gruboziarnistego". Powracającym problemem jest bezpośrednie odwzorowanie modelu klas z analizy w model komponentów encyjnych. Tworzą się wówczas relacje pomiędzy klasami komponentów encyjnych a klasami obiektów zależnych nie uwzględniające ziarnistości klas. Brak odpowiedniego zarządzania ziarnistością komponentów encyjnych powoduje szereg problemów: Konieczność walidacji referencji zdalnych do komponentów encyjnych Bezpośrednie odwzorowanie modelu klas w model EJB nie bierze pod uwagę skutków/wpływu relacji między obiektami. Relacje międzyobiektowe są bezpośrednio tłumaczone na relacje między komponentami encyjnymi. W rezultacie komponent encyjny może zawierać lub przechowywać zdalną 6
7 referencję do innego komponentu encyjnego. Jednak zarządzanie zdalnymi referencjami między obiektami rozproszonymi wymaga innych technik niż zarządzanie referencjami do obiektów lokalnych. Oprócz zwiększenia złożoności kodu, zmniejsza to elastyczność, ponieważ komponenty encyjne muszą się zmieniać jak tylko następują jakiekolwiek zmiany w relacjach między nimi. Ponadto nie ma gwarancji co do poprawności referencji do komponentów encyjnych w całym czasie działania aplikacji. Takie referencje są ustanawiane dynamicznie za pośrednictwem obiektu domowego komponentu encji i klucza głównego instancji komponentu encyjnego. To pociąga za sobą duży narzut na sprawdzanie poprawności referencji w czasie wykonania. Problemy z zarządzaniem i pielęgnowaniem systemu Implementacja drobnoziarnistych obiektów jako komponentów encyjnych powoduje, że liczba komponentów encyjnych w systemie jest bardzo duża. Każdy komponent encyjny zawiera szereg klas. Dla każdego komponentu encyjnego projektant musi napisać klasy dla interfejsu domowego, interfejsu zdalnego, implementację funkcjonalności i klucza głównego. Ponadto kontener może wymagać szeregu klasy pomocniczych. Tak więc liczba klas do implementacji i utrzymania jest bardzo duża. Problemy z wydajnością sieci Pomiędzy drobnoziarnistymi komponentami encyjnymi zazwyczaj występuje wiele relacji. Komponenty te są implementowane jako obiekty rozproszone. Jeśli jeden komponent wywołuje metody innego komponentu, to wywołanie jest traktowane jako wywołanie zdalne, nawet jeśli oba komponenty rezydują na tej samej maszynie. Jak liczba relacji między komponentami encyjnymi wzrasta, to wydajność całego systemu spada ze względu na zwiększający się narzut sieciowy. Zależność aplikacji od schematu bazy danych Gdy komponenty encyjne są drobnoziarniste, to każda instancja komponentu zazwyczaj reprezentuje pojedynczy rekord w bazie danych. Taki sposób projektowania zachęca do operowania bezpośredniego na bazie danych i jej tabelach, a to z kolei uzależnia aplikację od konkretnej struktury bazy danych. Jeśli struktura bazy danych się zmienia, to zmianie muszą również ulec komponenty encji. Ponieważ klienci operują na tym samym poziomie ziarnistości, to i ich implementacja jest zależna od schematu bazy danych. Konieczność zarządzania relacjami przez klienta Ziarnistość komponentów encyjnych wpływa na przesyłanie danych pomiędzy komponentem a jego klientem. W większości aplikacji klienci zazwyczaj potrzebują większej ilości danych niż tylko jednego lub dwóch rekordów tabeli. W takim przypadku oznacza to konieczność zarządzania relacjami przez klienta. W zależności od wymagań na dane klient może być zmuszony do przeglądania wielu tabel dla uzyskania wymaganych informacji. Wzorzec Composite Entity łączy gruboziarnisty obiekt trwały i jego obiekty zależne w złożony komponent encyjny. Obiekt trwały jest obiektem przechowywanym w pamięci trwałej (np. w bazie danych). Obiekt trwały jest instancją klasy trwałej. W przypadku implementacji w 7
8 relacyjnej bazie danych klasa trwała jest implementowana jako tabela w bazie danych, a jej instancja (obiekt trwały) jest reprezentowana przez pojedynczy rekord w tabeli. Wyróżnia się gruboziarniste obiekty trwałe i obiekty zależne. Obiekt gruboziarnisty jest implementacją klasy modelowej reprezentującej pewien byt rzeczywiście istniejący w dziedzinie problemu (np. byt "Klient"). Poprzez relacje z tabelą implementującą obiekt gruboziarnisty mogą być powiązane tabele implementujące obiekty zależne. Każdy obiekt zależny reprezentuje dane, które nie mają znaczenia bez powiązania z obiektem gruboziarnistym (przykład: adres zamieszkania i adres korespondencji). We wzorcu Composite Entity obiekty zależne nie są widoczne dla klienta inaczej, jak tylko poprzez obiekt gruboziarnisty. To ten obiekt pobiera z pamięci trwałej obiekty zależne i dostarcza je razem ze swoimi danymi do klienta w postaci jednego, złożonego komponentu encyjnego. Współdziałanie komponentów w tym wzorcu rozpoczyna się od: 1: Żądania pobrania/utrwalenia danych skierowanego od klienta do komponentu encyjnego. Komponent ten zawiera referencję do obiektu gruboziarnistego zaimplementowanego jako klasa trwała. Poprzez tę referencję: 2: komponent encyjny przekazuje żądanie klienta do obiektu gruboziarnistego. Ten z kolei ma zapisane referencje do obiektów zależnych, od których 3a: albo pobiera dane bezpośrednio 3b: albo pośrednio poprzez inne obiekty zależne 8
9 2.1. Przykład Do poprzedniego przykładu dodajemy dobieranie specjalistów do zadań. W tym celu zaimplementowano obiekt biznesowy Resource, który reprezentuje "zasób ludzki" odpowiedni do wykonania zadania. Obiekt ten ma dwa obiekty zależne: BlockOutTime czas niedostępności "zasobu" z powodu szkolenia, urlopu, zwolnienia i in. Każdy "zasób" może być blokowany wielokrotnie, stąd między klasami Resource i BlockOutTime występuje relacja jeden-wiele. SkillSet zbiór umiejętności jakie posiada "zasób". Wybierany będzie ten "zasób", który posiada umiejętności niezbędne do realizacji zadania. Ponieważ jeden specjalista może mieć wiele umiejętności, to między klasami Resource i SkillSet występuje relacja jeden-wiele. Implementacja obiektu gruboziarnistego package corepatterns.apps.psa.ejb; import corepatterns.apps.psa.core.*; import corepatterns.apps.psa.dao.*; import java.sql.*; import javax.sql.*; import java.util.*; import javax.ejb.*; import javax.naming.*; public class ResourceEntity implements EntityBean public String employeeid; public String lastname; public String firstname; public String departmentid; public String practicegroup; public String title; public String grade; public String ; public String phone; public String cell; public String pager; public String managerid; // Kolekcja zależnych obiektów typu BlockOutTime public Collection blockouttimes; // Kolekcja zależnych obiektów typu SkillSet public Collection skillsets; private EntityContext context; // Implementacja metody Entity Bean public String ejbcreate(resourceto resource) throws CreateException 9
10 this.employeeid = resource.employeeid; setresourcedata(resource); getresourcedao().create(resource); catch(exception ex) throw new EJBException("Reason:" + ); return this.employeeid; public String ejbfindbyprimarykey(string primarykey) throws FinderException boolean result; ResourceDAO resourcedao = getresourcedao(); result = resourcedao.selectbyprimarykey(primarykey); catch(exception ex) throw new EJBException("Reason:" + ); if (result) return primarykey; else throw new ObjectNotFoundException(); public void ejbremove() // Usuwanie obiektów zależnych if (this.skillsets!= null) // Do tego celu wykorzystujemy obiekt DAO SkillSetDAO skillsetdao = getskillsetdao(); skillsetdao.setresourceid(employeeid); skillsetdao.deleteall(); skillsets = null; if (this.blockouttime!= null) // Tak samo dla drugiej kolekcji obiektów zależnych // Usuwamy dane główne encji korzystając z DAO ResourceDAO resourcedao = new ResourceDAO(employeeId); resourcedao.delete(); catch (ResourceException ex) throw new EJBException("Reason:"+); catch (BlockOutTimeException ex) throw new EJBException("Reason:"+); catch (Exception exception) 10
11 public void setentitycontext(entitycontext context) this.context = context; public void unsetentitycontext() context = null; public void ejbactivate() employeeid = (String)context.getPrimaryKey(); public void ejbpassivate() employeeid = null; public void ejbload() // Ładujemy dane główne encji z DAO ResourceDAO resourcedao = getresourcedao(); setresourcedata((resourceto) resourcedao.load(employeeid)); catch(exception ex) throw new EJBException("Reason:" + ); public void ejbstore() // Zapisywanie informacji z encji przez DAO getresourcedao().update(getresourcedata()); catch(skillsetexception ex) throw new EJBException("Reason:" + ); catch(blockouttimeexception ex) throw new EJBException("Reason:" + ); public void ejbpostcreate(resourceto resource) // Pobieranie obiektu transferowego zasobu public ResourceTO getresourceto() // Tworzenie nowego obiektu transferowego ResourceTO resourceto = new ResourceTO (employeeid); // Kopiowanie danych z encji do obiektu transferowego resourceto.lastname = lastname; resourceto.firstname = firstname; resourceto.departmentid = departmentid; return resourceto; 11
12 public void setresourcedata(resourceto resourceto) // Kopiowanie danych z obiektu transferowego do encji employeeid = resourceto.employeeid; lastname = resourceto.lastname; // Metoda pobierania zależnych obiektów transferowych public Collection getskillsetsdata() // Jeśli kolekcja skillsets nie jest załadowana, to załaduj ją najpierw // Patrz ładowanie leniwe return skillsets; // Inne metody get i set // Metody biznesowe public void addblockouttimes (Collection morebots) throws BlockOutTimeException // parametr morebots jest kolekcją obiektów BlockOutTimeTO Iterator moreiter = morebots.iterator(); while (moreiter.hasnext()) BlockOutTimeTO botto = (BlockOutTimeTO)moreIter.next(); if (!(blockouttimeexists(botto))) // dodaj obiekt BlockOutTimeTO botto.setnew(); blockouttime.add(botto); else // Obiekt już istnieje w kolekcji dodanie niemożliwe throw new BlockOutTimeException(); catch(exception exception) throw new EJBException(); public void addskillset(collection moreskills) throws SkillSetException // podobna operacja do addblockouttime() 12
13 public void updateblockouttime(collection updbots) throws BlockOutTimeException Iterator botiter = blockouttimes.iterator(); Iterator upditer = updbots.iterator(); while (upditer.hasnext()) BlockOutTimeTO botto = (BlockOutTimeTO)updIter.next(); while (botiter.hasnext()) BlockOutTimeTO existingbot = (BlockOutTimeTO) botiter.next(); // porównanie wartości klucza aby znaleść obiekt BlockOutTimeTO if (existingbot.equals(botto)) // Obiekt BlockOutTime znaleziony w kolekcji // zastępujemy nowym botto.setdirty(); // stary obiekt jest zaznaczony jako zmodyfikowany botto.resetnew(); // a nie nowy existingbot = botto; catch (Exception exc) throw new EJBException(); public void updateskillset(collection updskills) throws CommitmentException // implementacja podobna do updateblockouttime Implementacja ładowania leniwego Gdy obiekt złożony ResourceEntity jest ładowany metodą ejbload(), to jedynie dane zasobu są ładowane czyli jedynie abuty zdefiniowane w klasie ResourceEntity, a nie kolekcje obiektów zależnych. Te z kolei są ładowane dopiero, gdy klient wywołuje metodę biznesową, która potrzebuje tych obiektów. Dlatego metoda ejbload() śledzi obiekty zależne ładowane w ten sposób i dołącza je przy przeładowaniu. public Collection getskillsetsdata() throws SkillSetException checkskillsetload(); 13
14 return skillsets; private void checkskillsetload() throws SkillSetException // Ładowanie na żądanie if (skillsets == null) skillsets = getskillsetdao(resourceid).loadall(); catch(exception exception) throw new SkillSetException(); public void ejbload() // Ładowanie danych głównych zasobu z DAO ResourceDAO resourcedao = new ResourceDAO(employeeId); setresourcedata((resourceto)resourcedao.load()); // Jeśli obiekty zależne są już załadowane, to muszą być załadowane ponownie. // Jeśli nie są załadowane, to nie są ładowane teraz, lecz później if (skillsets!= null) reloadskillsets(); if (blockouttimes!= null) reloadblockouttimes(); throw new EJBException("Reason:"+); Implementacja markera DirtyMarker dla zbioru umiejętności Przy zmianie zbioru umiejętności używanego jako obiektu transferowego są ustawiane znaczniki "dirty", "isnew" i "deleted". public class SkillSetTO implements DirtyMarker, java.io.serializable private String skillname; private String expertiselevel; private String info; private boolean dirty = false; private boolean isnew = true; private boolean deleted = false; public SkillSetTO () 14
15 // inicjalizacja // Jest to nowy obiekt transferowy setnew(); // Wszyskie metody zmiany wartości muszą ustalać znacznik modyfikacji public setskillname(string newskillname) if (newskillname!= skillname) skillname = newskillname; setdirty(); // znacznik "dirty" stosowany do modyfikowanych obiektów transferowych public void setdirty() dirty = true; public void resetdirty() dirty = false; public boolean isdirty() return dirty; // znacznik "isnew" stosowany do nowych obiektów transferowych public void setnew() isnew = true; public void resetnew() isnew = false; public boolean isnew() return isnew; // znacznik "deleted" stosowany do usuniętych obiektów transferowych public void setdeleted() deleted = true; public boolean isdeleted() return deleted; public void resetdeleted() deleted = false; Implementacja optymalizacji zapisu Gdy obiekt ResourceEntity jest zapisywany metodą ejbstore(), to obowiązkowo są zapisywane tylko dane główne encji. Obiekty zależne są zapisywane tylko wtedy, gdy są zmodyfikowane i ustawiona jest dla nich któraś z flag modyfikacji. public void ejbstore() // Zapisywanie danych głównych encji getresourcedao().update(getresourcedata()); // Jeśli kolekcja obiektów zależnych SkillSets jest załadowana, // to sprawdzamy konieczność aktualizacji bazy danych if (skillsets!= null) // obiekt DAO umożliwi zapisywanie obiektów zależnych SkillSetDAO skillsetdao = getskillsetdao(); 15
16 // Iterator po kolekcji obiektów zależnych Iterator skilliter = skillset.iterator(); while (skilliter.hasnext()) // Pobieramy obiekt transferowy z iteratora SkillSetTO skill = (SkillSetTO) skilliter.next(); // Sprawdzamy, czy jest to nowo utworzony obiekt zależny if (skill.isnew()) // Jeśli tak, to obiekt transferowy jest dodawany przez DAO do bazy danych skillsetdao.insert(skill); // Flagi modyfikacji są kasowane skill.resetnew(); skill.resetdirty(); // Sprawdzamy, czy obiekt zależny został zaznaczony jako usunięty else if (skill.isdeleted()) // Jeśli tak, to obiekt transferowy jest usuwany przez DAO z bazy danych skillsetdao.delete(skill); // i usuwany z kolekcji obiektów zależnych skillsets.remove(skill); // Wreszcie sprawdzamy, czy obiekt zależny został zmieniony else if (skill.isdirty()) // Jeśli tak, to obiekt transferowy jest zmieniany przez DAO w bazie danych skillsetdao.update(skill); // Flagi modyfikacji są kasowane skill.resetdirty(); skill.resetnew(); // Podobnie implementuje się modyfikację kolekcji BlockOutTime catch(skillsetexception ex) throw new EJBException("Reason:"+); catch(blockouttimeexception ex) throw new EJBException("Reason:"+); catch(commitmentexception ex) throw new EJBException("Reason:"+); 3. Business Delegate Komponenty warstwy prezentacji współdziałają bezpośrednio z komponentami usługowymi. Taka bezpośrednia współpraca powoduje, że komponenty warstwy prezentacji mogą być wrażliwe na szczegóły implementacyjne warstwy usługowej. W 16
17 rezultacie każda zmiana warstwy usługowej może pociągać za sobą konieczność zmianę implementacji warstwy prezentacji. Ponadto jeśli po stronie klienta brak mechanizmów buforowania i agregacji, to komponenty warstwy prezentacji wysyłają wiele wywołań warstwy usług przez sieć. Wreszcie bezpośrednie korzystanie z API warstwy usługowej zmusza zespół projektowy pracujący nad warstwą prezentacji do zajmowania się rozproszoną naturą technologii EJB. Rozwiązaniem tych problemów jest komponent o nazwie delegat biznesowy (Business Delegate). Działa on po stronie klienta wywołując usługi komponentów biznesowych. W ten sposób ukrywa przed klientem szczegóły implementacji usług biznesowych oraz uniezależnia implementację komponentów prezentacyjnych od zmian zachodzących w warstwie biznesowej. Współdziałanie komponentów: 1. Klient tworzy delegata biznesowego 1.1 W imieniu klienta delegat biznesowy zwraca się do lokalizatora usług o wyszukanie komponentu usługowego Lokalizator usług wyszukuje odpowiedni komponent usługowy i zwraca go do delegata biznesowego. 2. Klient wywołuje metodę delegata biznesowego, który: 2.1 przekazuje wywołanie od komponentu usługowego 17
18 3. Klient może zwrócić się do delegata biznesowego o podanie identyfikatora komponentu usługowego. Identyfikator ten będzie używany w późniejszym czasie 3.1 Delegat biznesowy przekazuje żądanie do lokalizatora usług, który: pobiera uchwyt komponentu usługowego i przekształca go w łańcuch zwracany do klienta Przy kolejnej okazji: 4. Klient tworzy delegata biznesowego przekazując mu identyfikator określonego komponentu usługowego. 4.1 Delegat biznesowy zwraca się do lokalizatora usług o podanie komponentu o określonym identyfikatorze Lokalizator usług przekształca identyfikator łańcuchowy w uchwyt komponentu i Wykorzystuje ten uchwyt do połączenia z odpowiednim komponentem usługowym 5. Od tego momentu klient może korzystać z tego komponentu usługowego 5.1 za pośrednictwem delegata biznesowego 18
19 3.1. Przykład Do poprzedniego przykładu dodajemy delegata biznesowego po stronie klienta. Implementacja delegata zasobów // imports public class ResourceDelegate // Wykorzystujemy zdalny interfejs fasady sesji private ResourceSession session; // Klasa obiektu domowego fasady sesji private static final Class homeclazz = corepatterns.apps.psa.ejb.resourcesessionhome.class; // Domyślny konstruktor. Wyszukuje obiekt domowy i łączy się z sesją public ResourceDelegate() throws ResourceException ResourceSessionHome home = (ResourceSessionHome) ServiceLocator.getInstance().getHome( "Resource", homeclazz); session = home.create(); catch(servicelocatorexception ex) throw new ResourceException(); catch(createexception ex) throw new ResourceException(); catch(remoteexception ex) throw new ResourceException(); // Konstruktor wykorzystujący identyfikator sesji użytkownika do ponownego połączenia public BusinessDelegate(String id) throws ResourceException super(); reconnect(id); // Zwraca identyfikator sesji użytkownika do ponownego wykorzystania public String getid() return ServiceLocator.getId(session); catch (Exception e) throw new ResourceException(); 19
20 // metoda ponownego połączenia z wykorzystaniem identyfikatora sesji użytkownika public void reconnect(string id) throws ResourceException session = (ResourceSession) ServiceLocator.getService(id); catch (RemoteException ex) throw new ResourceException(); // Metody biznesowe "proxy" wywołujące metody fasady sesji public ResourceTO setcurrentresource (String resourceid) throws ResourceException return session.setcurrentresource (resourceid); catch (RemoteException ex) throw new ResourceException(); public ResourceTO getresourcedetails() throws ResourceException return session.getresourcedetails(); catch(remoteexception ex) throw new ResourceException(); public void setresourcedetails (ResourceTO vo) throws ResourceException session.setresourcedetails(vo); catch(remoteexception ex) throw new ResourceException(); public void addnewresource(resourceto vo) throws ResourceException session.addresource(vo); catch(remoteexception ex) throw new ResourceException(); 20
21 4. Zadanie dla studentów Zaprogramować w środowisku Visual Studio albo J2EE aplikację rozproszoną składającą się z części serwerowej i części klienckiej. W części serwerowej zrealizować wzorzec Composite Entity. W części klienckiej wzorzec Business Delegate. Do transferu danych zastosować wzorzec Transfer Object Assembly. We wzorcu Composite Entity zaimplementować leniwe ładowanie lub modyfikację z wykorzystaniem znaczników modyfikacji. Bibliografia Rysunki i przykłady pochodzą z następujących źródeł: er.html Literatura uzupełniająca: Gamma et al: Wzorce projektowe, WNT Warszawa Buschman et al: Pattern-Oriented Software Architecture Volume 1: A System of Patterns, Wyd. Wiley, Schmidt et al: Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects, Wyd. Wiley, 21
Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej
Jarosław Kuchta Wzorce projektowe warstwy biznesowej Wzorce projektowe dotyczące danych, obiektów i logiki biznesowej Transfer Object Assembler Łączy dane pochodzące z różnych komponentów biznesowych Composite
Bardziej szczegółowoProjektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług
Wzorce projektowe warstwy usług Wzorce projektowe warstwy usług Service Locator Ułatwia wyszukanie komponentów usługowych Service Activator Umożliwia asynchroniczne przesyłanie żądań do komponentów biznesowych
Bardziej szczegółowoWzorce projektowe warstwy danych
POLITECHNIKA GDAŃSKA WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI Katedra Architektury Systemów Komputerowych Jarosław Kuchta Instrukcja do laboratorium z przedmiotu Projektowanie Aplikacji Internetowych
Bardziej szczegółowoProjektowanie Aplikacji Rozproszonych Jarosław Kuchta. Wzorce projektowe warstwy danych
Rozproszonych Jarosław Kuchta Wzorce projektowe warstwy danych Wzorce projektowe Core J2EE Patterns (podział umowny) Warstwy danych: Data Access Object, Transfer Object, Value List Handler Warstwy biznesowej:
Bardziej szczegółowoWzorce logiki dziedziny
Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),
Bardziej szczegółowoAplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów
Bardziej szczegółowoWarstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.
Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy
Bardziej szczegółowoZagadnienia projektowania aplikacji J2EE
211 Zagadnienia projektowania aplikacji J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 212 Wstęp Techniki projektowe: Wprowadzenie modułu
Bardziej szczegółowoWzorce dystrybucji i wspólbieżności autonomicznej
Wzorce dystrybucji i wspólbieżności autonomicznej 1. Wzorce dystrybucji, fasada zdalna (Remote Facade), obiekt transfery danych (Data Transfer Object), 2. Wzorce współbieżności autonomicznej, blokada optymistyczna
Bardziej szczegółowoWzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski
Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół
Bardziej szczegółowoPlan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych
Plan prezentacji Budowa aplikacji w technologii Enterprise JavaBeans Przegląd architektur aplikacji rozproszonych: CORBA,, Wprowadzenie do Enterprise JavaBeans () Budowa komponentów sesyjnych Budowa komponentów
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia
Bardziej szczegółowoBudowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG
Budowa aplikacji w technologii Enterprise JavaBeans Maciej Zakrzewicz PLOUG Plan prezentacji Przegląd architektur aplikacji rozproszonych: CORBA, SOAP, EJB Wprowadzenie do Enterprise JavaBeans (EJB) Budowa
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoObiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
Bardziej szczegółowoAplikacje RMI Lab4
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych
Bardziej szczegółowoEnterprise JavaBeans
Enterprise JavaBeans 1. Wprowadzenie. 2. Przegląd komponentów EJB. komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 3. Kontener komponentów EJB: JBoss. 1 Enterprise JavaBeans
Bardziej szczegółowoProgramowanie komponentowe 5
Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf
Bardziej szczegółowoNarzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
Bardziej szczegółowoPodejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoBezstanowe komponenty sesyjne i zdarzenia zwrotne
Bezstanowe komponenty sesyjne i zdarzenia zwrotne 1. Zdarzenia zwrotne. klasy nasłuchujące, klasy nasłuchujące a dziedziczenie. 2. Bezstanowe komponenty sesyjne. interfejsy: bazowy, zdalny i lokalny, obiekty
Bardziej szczegółowoAplikacje internetowe i rozproszone - laboratorium
Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,
Bardziej szczegółowoStanowe komponenty sesyjne
Stanowe komponenty sesyjne 1. Porównanie komponentów stanowych i bezstanowych. 2. Cykl życia stanowego komponentu sesyjnego, 3. Komponenty sesyjne a kontekst utrwalania, 4. Zagnieżdżanie komponentów sesyjnych,
Bardziej szczegółowoZaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Bardziej szczegółowoInstrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:
Bardziej szczegółowoKomponenty sterowane komunikatami
Komponenty sterowane komunikatami 1. Usługa JMS asynchroniczność, model przesyłania komunikatów, 2. Przykład wysyłanie wiadomości, odbieranie wiadomości, komponent sterowany komunikatami 3. Komponenty
Bardziej szczegółowoSzczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych
Szczególne problemy projektowania aplikacji Jarosław Kuchta Miejsce projektowania w cyklu wytwarzania aplikacji SWS Analiza systemowa Analiza statyczna Analiza funkcjonalna Analiza dynamiczna Analiza behawioralna
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoPodejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm
Bardziej szczegółowoDokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV
Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium
Bardziej szczegółowoEJB 3.0 (Enterprise JavaBeans 3.0)
EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie
Bardziej szczegółowoRemote Method Invocation 17 listopada 2010
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowo1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1
1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie
Bardziej szczegółowoSystemy Rozproszone - Ćwiczenie 6
Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs
Bardziej szczegółowoZdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Bardziej szczegółowoOprogramowanie systemów równoległych i rozproszonych Wykład 7
Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoPrototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Bardziej szczegółowoLaboratorium 8 Diagramy aktywności
Laboratorium 8 Diagramy aktywności Zofia Kruczkiewicz Zofia Kruczkiewicz Lab_INP002017_8 1 Modelowanie zachowania obiektów za pomocą diagramów aktywności. Modelowanie zachowania obiektów za pomocą diagramów
Bardziej szczegółowoInformacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4
Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne
Bardziej szczegółowoProjektowanie logiki aplikacji
Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie logiki aplikacji Zagadnienia Rozproszone przetwarzanie obiektowe (DOC) Model klas w projektowaniu logiki aplikacji Klasy encyjne a klasy
Bardziej szczegółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoWypożyczalnia VIDEO. Technologie obiektowe
Wypożyczalnia VIDEO Jest to program do obsługi wypożyczalni i wypożyczeń klientów. Głównym zadaniem programu jest zarządzanie wypożyczeniami i drukowanie potwierdzenia wypożyczenia oraz naliczenie punktów
Bardziej szczegółowoRemote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoEnterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.
1 Enterprise JavaBeans 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss. 2 Enterprise JavaBeans Enterprise JavaBeans (EJB) to specyfikacja
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności
Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce odpowiedzialności 1 Roadmap Singleton Observer Mediator Proxy Flyweight 2 Wzorce odpowiedzialności Udostępniają techniki centralizacji, delegowania
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np.
Bardziej szczegółowo1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)
Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie
Bardziej szczegółowoUsługa TimerService ejbtimeout() @javax.ejb.timeout
TimerService i JNDI 1. Usługa TimerServiece, interfejsy TimedObject, TimerService, Timer, TimerHandle transakcje, zastosowanie usługi w komponentach EJB, cykl życia EJB, problemy. 2. Zasoby JNDI i wstrzykiwanie,
Bardziej szczegółowoJava: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Bardziej szczegółowoWspółbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Bardziej szczegółowoProjektowanie obiektowe Wzorce projektowe
Projektowanie obiektowe Wzorce projektowe Gang of Four Kreacyjne wzorce projektowe (wzorce konstrukcyjne) 1 Roadmap Memento Factory Method Abstract Factory Prototype Builder 2 Wzorce konstrukcyjne wzorce
Bardziej szczegółowoAlgorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Bardziej szczegółowoWprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o
Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa
Bardziej szczegółowoInstrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.
Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie systemów informatycznych Przekształcenie
Bardziej szczegółowoLaboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz
Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres
Bardziej szczegółowoRMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE
Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems www.cs.agh.edu.pl/~slawek/zrodla_rmi2.zip Kilka pytań Co mamy? rok 2005-ty, gotową wersję 2 programu NoteBoard.
Bardziej szczegółowoJAX-RS czyli REST w Javie. Adam Kędziora
JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL
Bardziej szczegółowoRemote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1
P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw
Bardziej szczegółowoProjektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design
Projektowanie Zorientowane na Dziedzinę ang. Domain Driven Design 2 Projektowanie Stan posiadania Przypadki użycia Model dziedziny Operacje systemowe Kontrakty dla operacji systemowych Problemy do rozwiązania
Bardziej szczegółowoBEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska
BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,
Bardziej szczegółowo2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK
Zaawansowane aplikacje internetowe EJB 2 Celem tego laboratorium jest pokazanie, w jaki sposób aplikacje stworzone w różnych technologiach mogą korzystać z funkcjonalności udostępnianej przez komponenty
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowoZastosowanie komponentów EJB typu Session
Zastosowanie komponentów EJB typu Session na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe Lab1 1 1. Refaktoryzacja kodu programu Sklep_6 z lab5, TINT 1.1. Należy wykonać
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Wzorce projektowe Wzorzec projektowy (ang. design pattern) w inżynierii oprogramowania, rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie
Bardziej szczegółowo1 Wprowadzenie do J2EE
Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2
Bardziej szczegółowoProjektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych
Projektowanie architektury systemu rozproszonego Jarosław Kuchta Zagadnienia Typy architektury systemu Rozproszone przetwarzanie obiektowe Problemy globalizacji Problemy ochrony Projektowanie architektury
Bardziej szczegółowoJarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie warstwy danych
Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie warstwy danych Zagadnienia Sposoby zapisu danych zewnętrznych Odwzorowanie dziedziny problemu w dziedzinę danych Normalizacja relacyjnej
Bardziej szczegółowoDiagram stanów Laboratorium 9
Diagram stanów Laboratorium 9 Zofia Kruczkiewicz Zofia Kruczkiewicz lab_inp002017_9 1 Modelowanie zachowania obiektu za pomocą diagramu stanów. Opracowanie diagramu stanów dla obiektu wybranej klasy, reprezentującego
Bardziej szczegółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)
Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoBudowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz
Budowa prostej aplikacji wielowarstwowej Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Konfigurowanie edytora programu za pomocą Tools/Options/Editor Konfigurowanie edytora programu za pomocą
Bardziej szczegółowoKatedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium
Bardziej szczegółowoWprowadzenie do Enterprise JavaBeans 2.0
71 Wprowadzenie do Enterprise JavaBeans 2.0 Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 72 Wprowadzenie do EJB Rodzaje komponentów Zdalny
Bardziej szczegółowoWzorce prezentacji internetowych
Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.
Bardziej szczegółowoZastosowanie słuchaczy zdarzeń wg
Zastosowanie słuchaczy zdarzeń wg https://docs.oracle.com/javaee/7/jeett.pdf Technologie internetowe 6 1. Obsługa zdarzeń typu valuechangelistener Rejestracja słuchaczy zdarzeń typu valuechangelistener
Bardziej szczegółowoAplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin
Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko
Bardziej szczegółowoWzorce projektowe cz. II. Wzorce projektowe cz. II 1/35
Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji
Bardziej szczegółowoWątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Bardziej szczegółowoWarstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.
Warstwa prezentacji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Definicja warstwy prezentacji - pięciowarstwowy model logicznego rozdzielania zadań 2. Podstawowe przypadki - analiza
Bardziej szczegółowoProjektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz
Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoAplikacja wielowątkowa prosty komunikator
Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoTestowanie aplikacji Java Servlets
Borland Developer Days 2004 2-3 czerwca 2004 Testowanie aplikacji Java Servlets Bartosz Walter mailto: Bartek.Walter@man.poznan.pl Agenda Aplikacje Java Servlets TM Jak testować aplikacje internetowe?
Bardziej szczegółowoZaawansowane aplikacje internetowe - laboratorium
Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest
Bardziej szczegółowoDiagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com
Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,
Bardziej szczegółowoInstrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM
Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Cel laboratorium 5 Należy wykonać dwie aplikacje zawierające warstwę integracji
Bardziej szczegółowo