SlideShare a Scribd company logo
1 of 79
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 1 / 50
Programowanie Komponentowe 
Wykład #4: Podstawy połaczen komponentów 
Mikołaj Olszewski 
Wydział Zastosowan Informatyki i Matematyki 
Szkoły Głównej Gospodarstwa Wiejskiego 
28.10.2014 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 2 / 50
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 3 / 50
Rozwiazywanie zaleznosci 
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 4 / 50
Rozwiazywanie zaleznosci 
Rozwiazywanie zaleznosci 
Pomiedzy obiektami 
Pomiedzy komponentami 
Uwaga 
Wazny temat! 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 5 / 50
Rozwiazywanie zaleznosci 
Rozwiazywanie zaleznosci 
Pomiedzy obiektami 
Pomiedzy komponentami 
Uwaga 
Wazny temat! 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 5 / 50
Rozwiazywanie zaleznosci 
Problem 
−−−−! zawiera 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 6 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Typowe rozwiazanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 7 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Typowe rozwiazanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 8 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Typowe rozwiazanie 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e S i l n i k 1 6 s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 
8 g 
9 g 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 9 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Problemy? 
Kazdy samochód ma taki sam silnik (1.6) 
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) 
Kazdy samochód/pojazd ma swój własny naped — nie moze byc 
współdzielony (np. holowanie) 
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od 
konkretnej klasy (złamanie DIP) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Problemy? 
Kazdy samochód ma taki sam silnik (1.6) 
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) 
Kazdy samochód/pojazd ma swój własny naped — nie moze byc 
współdzielony (np. holowanie) 
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od 
konkretnej klasy (złamanie DIP) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Problemy? 
Kazdy samochód ma taki sam silnik (1.6) 
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) 
Kazdy samochód/pojazd ma swój własny naped — nie moze byc 
współdzielony (np. holowanie) 
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od 
konkretnej klasy (złamanie DIP) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Problemy? 
Kazdy samochód ma taki sam silnik (1.6) 
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) 
Kazdy samochód/pojazd ma swój własny naped — nie moze byc 
współdzielony (np. holowanie) 
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od 
konkretnej klasy (złamanie DIP) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Problemy? 
Kazdy samochód ma taki sam silnik (1.6) 
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) 
Kazdy samochód/pojazd ma swój własny naped — nie moze byc 
współdzielony (np. holowanie) 
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od 
konkretnej klasy (złamanie DIP) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Rozluznienie powiazan 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 11 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Rozluznienie powiazan 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 
8 g 
9 g 
Problem 
Jak pozbyc sie tworzenia konkretnej implementacji 
(i stworzyc system pluginowy)? 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
Rozwiazywanie zaleznosci Typowe rozwiazanie 
Rozluznienie powiazan 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 
8 g 
9 g 
Problem 
Jak pozbyc sie tworzenia konkretnej implementacji 
(i stworzyc system pluginowy)? 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 13 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 
6 f 
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Problemy 
Uzaleznienie od konkretnej fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 
6 f 
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Problemy 
Uzaleznienie od konkretnej fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 
6 f 
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Problemy 
Uzaleznienie od konkretnej fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka abstrakcyjna 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 15 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka abstrakcyjna 
1 p u b l i c c l a s s Kl i e n t 
2 f 
3 p u b l i c Kl i e n t ( ) f 
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 
5 var samochod = new Samochod ( f a b r y k a ) ; 
6 g 
7 g 
8 p u b l i c c l a s s Samochod 
9 f 
10 p r i v a t e I S i l n i k s i l n i k ; 
11 
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
14 g 
15 g 
Korzysci 
Mozliwosc korzystania z róznych silników i fabryk 
Problemy 
Problem z konkretyzacja i dostarczeniem fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka abstrakcyjna 
1 p u b l i c c l a s s Kl i e n t 
2 f 
3 p u b l i c Kl i e n t ( ) f 
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 
5 var samochod = new Samochod ( f a b r y k a ) ; 
6 g 
7 g 
8 p u b l i c c l a s s Samochod 
9 f 
10 p r i v a t e I S i l n i k s i l n i k ; 
11 
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
14 g 
15 g 
Korzysci 
Mozliwosc korzystania z róznych silników i fabryk 
Problemy 
Problem z konkretyzacja i dostarczeniem fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Fabryka abstrakcyjna 
1 p u b l i c c l a s s Kl i e n t 
2 f 
3 p u b l i c Kl i e n t ( ) f 
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 
5 var samochod = new Samochod ( f a b r y k a ) ; 
6 g 
7 g 
8 p u b l i c c l a s s Samochod 
9 f 
10 p r i v a t e I S i l n i k s i l n i k ; 
11 
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 
14 g 
15 g 
Korzysci 
Mozliwosc korzystania z róznych silników i fabryk 
Problemy 
Problem z konkretyzacja i dostarczeniem fabryki 
Samochód jest włascicielem napedu (brak współdzielenia) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Lokalizator usług 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 17 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Lokalizator usług 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Łatwy dostep do lokalizatora i dostawców 
Problemy 
Ukrycie zaleznosci 
Ewentualne problemy w trakcie wykonywania programu 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Lokalizator usług 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Łatwy dostep do lokalizatora i dostawców 
Problemy 
Ukrycie zaleznosci 
Ewentualne problemy w trakcie wykonywania programu 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
Rozwiazywanie zaleznosci Delegacja konkretyzacji 
Delegacja — Lokalizator usług 
1 p u b l i c c l a s s Samochod 
2 f 
3 p r i v a t e I S i l n i k s i l n i k ; 
4 
5 p u b l i c Samochod ( ) 
6 f 
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 
8 g 
9 g 
Korzysci 
Mozliwosc korzystania z róznych silników 
Łatwy dostep do lokalizatora i dostawców 
Problemy 
Ukrycie zaleznosci 
Ewentualne problemy w trakcie wykonywania programu 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
Rozwiazywanie zaleznosci Odwrócone sterowanie 
Odwrócone sterowanie — IoC 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 19 / 50
Rozwiazywanie zaleznosci Odwrócone sterowanie 
Odwrócenie sterowania 
oddanie kontroli w „cudze rece” 
komponowanie obiektów 
pasywne API komponentu 
luzne połaczenia miedzy komponentami 
komunikacja przez interfejsy 
automatyczne spełnianie zaleznosci 
kontener odpowiedzialny za rozwiazywanie zaleznosci 
Composition Root Pattern 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 20 / 50
Rozwiazywanie zaleznosci Odwrócone sterowanie 
Wstrzykiwanie zaleznosci 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 21 / 50
Rozwiazywanie zaleznosci Odwrócone sterowanie 
Wstrzykiwanie zaleznosci 
Interface Injection (JEE, CORBA) 
Constructor Injection (Spring) 
Setter Injection (Spring, Java Beans) 
. . . 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 22 / 50
Rozwiazywanie zaleznosci Odwrócone sterowanie 
Wstrzykiwanie zaleznosci 
1 p u b l i c c l a s s Kl i e n t 
2 f 
3 p u b l i c Kl i e n t ( ) 
4 f 
5 var samochod = Kontener . Get<Samochod>() ; 
6 g 
7 g 
8 
9 p u b l i c c l a s s Samochod 
10 f 
11 p r i v a t e I S i l n i k s i l n i k ; 
12 
13 p u b l i c Samochod ( I S i l n i k s i l n i k ) 
14 f 
15 t h i s . s i l n i k = s i l n i k ; 
16 g 
17 g 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 23 / 50
Rozwiazywanie zaleznosci Framework 
Framework 
Zródła 
Podobienstwo funkcjonalne do COM 
Dlaczego nie istniejacy kontener DI? 
Uwaga! 
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. 
Dodatkowe punkty za aktywnosc. 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
Rozwiazywanie zaleznosci Framework 
Framework 
Zródła 
Podobienstwo funkcjonalne do COM 
Dlaczego nie istniejacy kontener DI? 
Uwaga! 
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. 
Dodatkowe punkty za aktywnosc. 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
Rozwiazywanie zaleznosci Framework 
Framework 
Zródła 
Podobienstwo funkcjonalne do COM 
Dlaczego nie istniejacy kontener DI? 
Uwaga! 
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. 
Dodatkowe punkty za aktywnosc. 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
Rozwiazywanie zaleznosci Framework 
Framework 
Zródła 
Podobienstwo funkcjonalne do COM 
Dlaczego nie istniejacy kontener DI? 
Uwaga! 
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. 
Dodatkowe punkty za aktywnosc. 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
Rozwiazywanie zaleznosci Framework 
Framework 
Zródła 
Podobienstwo funkcjonalne do COM 
Dlaczego nie istniejacy kontener DI? 
Uwaga! 
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. 
Dodatkowe punkty za aktywnosc. 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
Połaczenia binarne 
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 25 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Wprowadzenie 
Połaczenia 
Druty / obwody drukowane w układach elektronicznych 
Poczatki 
wywołania binarne zalezne od systemu 
poziom proceduralny 
implementacje jezyków programowania 
Brak wywołan proceduralnych poza procesami 
Komunikacja miedzyprocesowa (IPC) 
sockety (UNIX) 
pseudostandardy zalezne od systemu 
łatwe skalowanie na systemy rozproszone 
poziom bitów i bajtów a nie procedur 
Zdalne wywołania procedur 
Odwołania do obiektów 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
Połaczenia binarne Komunikacja lokalna 
Biblioteki 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 27 / 50
Połaczenia binarne Komunikacja lokalna 
Biblioteki 
Zbiór procedur / podprogramów / klas 
Operacje i dane 
Działanie z róznymi programami 
Modularnosc 
Powiazania przez linkera (konsolidatora) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 28 / 50
Połaczenia binarne Komunikacja lokalna 
Biblioteki statyczne 
Jedyne na poczatku 
Archiwum 
Kopiowanie kodu do pliku wykonywalnego 
Łaczenie po nazwie / symbolu 
Adresy wzgledne i symboliczne −! adresy bezwzgledne 
”smart linking” 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 29 / 50
Połaczenia binarne Komunikacja lokalna 
Biblioteki dynamiczne 
Indeks procedur 
Szybsze linkowanie — znajdowanie indeksu 
Wgrywanie w trakcie wykonania programu 
uruchomienie programu 
wywołanie procedury 
Loader czescia systemu operacyjnego 
Biblioteki współdzielone 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 30 / 50
Połaczenia binarne Komunikacja lokalna 
Pluginy 
Biblioteki dynamiczne 
Ten sam lub podobny interfejs 
Inna funkcjonalnosc 
Mozliwosc dynamicznej podmiany 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 31 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
IPC 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 32 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
Pliki 
Jednowymiarowa sekwencja bajtów 
Liczby, znaki, piksele, muzyka 
Jeden pisarz, wielu czytaczy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 33 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
Sygnały [*] 
Powiadomienia asynchroniczne 
Bezparametrowe 
Obsługa sygnałów 
pomijanie 
handler 
domyslny handler 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 34 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
Sygnały [*] 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 35 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
Łacza / Pipes 
Asynchroniczny protokół komunikacyjny 
Jednokierunkowa kolejka danych 
Ograniczony rozmiar - blokowanie 
Nienazwane / nazwane (kolejki FIFO) 
implementacja w systemie plików (nazwane) 
Bardzo popularne 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 36 / 50
Połaczenia binarne Komunikacja miedzyprocesowa 
Sockety 
Berkeley socket (BSD) 
Lokalne i zdalne 
Protokół TCP/IP 
Adresy, porty 
Nasłuchiwanie 
Połaczeniowe (TCP) i bezpołaczeniowe (UDP) 
Tryby: blokujacy i nieblokujacy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 37 / 50
Połaczenia binarne Komunikacja miedzymaszynowa 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 38 / 50
Połaczenia binarne Komunikacja miedzymaszynowa 
Remote Procedure Call 
Zakonczenia −! procedury szczatkowe (namiastki) 
Wrazenie lokalnego wywołania 
namiastka wywołujaca 
linearyzacja parametrów (na format sieciowy) 
przesłanie przez siec 
namistka odbierajaca 
delinearyzacja parametrów (na format lokalny) 
wywołanie rzeczywistej procedury 
Przezroczystosc - i zaleta i wada 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 39 / 50
Połaczenia binarne Komunikacja miedzymaszynowa 
Distributed Computing Environment [*] 
Pierwszy rozproszony system (poczatek lat 90-tych) 
RPC 
IDL 
Katalog usług 
Autentykacja 
UUID — Universally Unique Identifier 
Namiastkowe biblioteki dynamiczne 
Rozproszony system plików 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 40 / 50
Zasady dla paczek binarnych 
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 41 / 50
Zasady dla paczek binarnych 
RCC — Spójnosc paczek 
Release/Reuse Equivalence Principle 
Common Reuse Principle 
Common Closure Principle 
SOLID 
CCP = SRP + OCP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
Zasady dla paczek binarnych 
RCC — Spójnosc paczek 
Release/Reuse Equivalence Principle 
Common Reuse Principle 
Common Closure Principle 
SOLID 
CCP = SRP + OCP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
Zasady dla paczek binarnych 
RCC — Spójnosc paczek 
Release/Reuse Equivalence Principle 
Common Reuse Principle 
Common Closure Principle 
SOLID 
CCP = SRP + OCP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
Zasady dla paczek binarnych 
RCC — Spójnosc paczek 
Release/Reuse Equivalence Principle 
Common Reuse Principle 
Common Closure Principle 
SOLID 
CCP = SRP + OCP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
Zasady dla paczek binarnych 
RCC — Spójnosc paczek 
Release/Reuse Equivalence Principle 
Common Reuse Principle 
Common Closure Principle 
SOLID 
CCP = SRP + OCP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
Zasady dla paczek binarnych 
ASS — Zaleznosci miedzy paczkami 
Acyclic Dependencies Principle 
Stable Dependencies Principle 
Stable Abstractions Principle 
SOLID 
SDP + SAP = DIP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
Zasady dla paczek binarnych 
ASS — Zaleznosci miedzy paczkami 
Acyclic Dependencies Principle 
Stable Dependencies Principle 
Stable Abstractions Principle 
SOLID 
SDP + SAP = DIP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
Zasady dla paczek binarnych 
ASS — Zaleznosci miedzy paczkami 
Acyclic Dependencies Principle 
Stable Dependencies Principle 
Stable Abstractions Principle 
SOLID 
SDP + SAP = DIP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
Zasady dla paczek binarnych 
ASS — Zaleznosci miedzy paczkami 
Acyclic Dependencies Principle 
Stable Dependencies Principle 
Stable Abstractions Principle 
SOLID 
SDP + SAP = DIP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
Zasady dla paczek binarnych 
ASS — Zaleznosci miedzy paczkami 
Acyclic Dependencies Principle 
Stable Dependencies Principle 
Stable Abstractions Principle 
SOLID 
SDP + SAP = DIP dla paczek 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
Standardy 
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 44 / 50
Standardy 
Standardy 
CORBA 
COM / DCOM / COM+ / OLE / ActiveX 
.NET, WCF 
RMI, EJB / Spring 
XML-RPC, SOAP, REST 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 45 / 50
Standardy 
Problemy 
Róznorodnosc standardów 
Specyfikowanie interfejsów 
IDL — rózne 
Łaczenie interfejsów 
1 do 1 (CORBA, SOM) 
wiele do 1 (Java) 
wiele do wiele (COM) 
Nazwy (UUID, GUID, IID, CATID, CLSID) 
Polimorfizm 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 46 / 50
Podsumowanie 
Plan wykładu 
1 Rozwiazywanie zaleznosci 
Typowe rozwiazanie 
Delegacja konkretyzacji 
Odwrócone sterowanie 
Framework 
2 Połaczenia binarne 
Wprowadzenie 
Komunikacja lokalna 
Komunikacja miedzyprocesowa 
Komunikacja miedzymaszynowa 
3 Zasady dla paczek binarnych 
4 Standardy 
5 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 47 / 50
Podsumowanie 
Podsumowanie 
Szalenie istotne poprawne zarzadzanie zaleznosciami 
Komponenty przekraczaja granice procesów 
Potrzebna efektywna komunikacja 
miedzyprocesowa 
miedzymaszynowa 
Rózne rozwiazania — rózne standardy 
Konwencje zastosowan rozwiazan binarnych 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 48 / 50
Podsumowanie 
Do domu 
Opanowac IoC i DI 
Zaznajomic sie z przykładowym frameworkiem komponentowym 
Przypomniec sobie w praktyce połaczenia miedzy binarnymi 
elementami programu 
Przeczytac 2. rozdział z „Developer’s Guide to Microsoft Unity” 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 49 / 50
Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 50 / 50

More Related Content

More from Mikołaj Olszewski

The metadata driven e-laboratory web client
The metadata driven e-laboratory web clientThe metadata driven e-laboratory web client
The metadata driven e-laboratory web clientMikołaj Olszewski
 
Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Mikołaj Olszewski
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiMikołaj Olszewski
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiMikołaj Olszewski
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaMikołaj Olszewski
 
Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweMikołaj Olszewski
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaMikołaj Olszewski
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansMikołaj Olszewski
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenneMikołaj Olszewski
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweMikołaj Olszewski
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMikołaj Olszewski
 

More from Mikołaj Olszewski (20)

Architektura heksagonalna
Architektura heksagonalnaArchitektura heksagonalna
Architektura heksagonalna
 
The metadata driven e-laboratory web client
The metadata driven e-laboratory web clientThe metadata driven e-laboratory web client
The metadata driven e-laboratory web client
 
Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGi
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springa
 
Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronowe
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do Springa
 
Materiały fotorefrakcyjne
Materiały fotorefrakcyjneMateriały fotorefrakcyjne
Materiały fotorefrakcyjne
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java Beans
 
Lokalne sieci światłowodowe
Lokalne sieci światłowodoweLokalne sieci światłowodowe
Lokalne sieci światłowodowe
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenne
 
Swiatłowodowy czujnik prądu
Swiatłowodowy czujnik prąduSwiatłowodowy czujnik prądu
Swiatłowodowy czujnik prądu
 
Optyka ciekłych kryształów
Optyka ciekłych kryształówOptyka ciekłych kryształów
Optyka ciekłych kryształów
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikowe
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowych
 
Parallel quicksort cz. 2
Parallel quicksort cz. 2Parallel quicksort cz. 2
Parallel quicksort cz. 2
 
Parallel quicksort cz. 1
Parallel quicksort cz. 1Parallel quicksort cz. 1
Parallel quicksort cz. 1
 
Maszyna Turinga
Maszyna TuringaMaszyna Turinga
Maszyna Turinga
 
Planowanie działań cz. 2
Planowanie działań cz. 2Planowanie działań cz. 2
Planowanie działań cz. 2
 

Programowanie komponentowe: #4 Podstawy połączeń komponentów

  • 1. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 1 / 50
  • 2. Programowanie Komponentowe Wykład #4: Podstawy połaczen komponentów Mikołaj Olszewski Wydział Zastosowan Informatyki i Matematyki Szkoły Głównej Gospodarstwa Wiejskiego 28.10.2014 Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 2 / 50
  • 3. Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 3 / 50
  • 4. Rozwiazywanie zaleznosci Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 4 / 50
  • 5. Rozwiazywanie zaleznosci Rozwiazywanie zaleznosci Pomiedzy obiektami Pomiedzy komponentami Uwaga Wazny temat! Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 5 / 50
  • 6. Rozwiazywanie zaleznosci Rozwiazywanie zaleznosci Pomiedzy obiektami Pomiedzy komponentami Uwaga Wazny temat! Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 5 / 50
  • 7. Rozwiazywanie zaleznosci Problem −−−−! zawiera Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 6 / 50
  • 8. Rozwiazywanie zaleznosci Typowe rozwiazanie Typowe rozwiazanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 7 / 50
  • 9. Rozwiazywanie zaleznosci Typowe rozwiazanie Typowe rozwiazanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 8 / 50
  • 10. Rozwiazywanie zaleznosci Typowe rozwiazanie Typowe rozwiazanie 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e S i l n i k 1 6 s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 8 g 9 g Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 9 / 50
  • 11. Rozwiazywanie zaleznosci Typowe rozwiazanie Problemy? Kazdy samochód ma taki sam silnik (1.6) Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) Kazdy samochód/pojazd ma swój własny naped — nie moze byc współdzielony (np. holowanie) Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od konkretnej klasy (złamanie DIP) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
  • 12. Rozwiazywanie zaleznosci Typowe rozwiazanie Problemy? Kazdy samochód ma taki sam silnik (1.6) Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) Kazdy samochód/pojazd ma swój własny naped — nie moze byc współdzielony (np. holowanie) Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od konkretnej klasy (złamanie DIP) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
  • 13. Rozwiazywanie zaleznosci Typowe rozwiazanie Problemy? Kazdy samochód ma taki sam silnik (1.6) Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) Kazdy samochód/pojazd ma swój własny naped — nie moze byc współdzielony (np. holowanie) Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od konkretnej klasy (złamanie DIP) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
  • 14. Rozwiazywanie zaleznosci Typowe rozwiazanie Problemy? Kazdy samochód ma taki sam silnik (1.6) Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) Kazdy samochód/pojazd ma swój własny naped — nie moze byc współdzielony (np. holowanie) Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od konkretnej klasy (złamanie DIP) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
  • 15. Rozwiazywanie zaleznosci Typowe rozwiazanie Problemy? Kazdy samochód ma taki sam silnik (1.6) Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy) Kazdy samochód/pojazd ma swój własny naped — nie moze byc współdzielony (np. holowanie) Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od konkretnej klasy (złamanie DIP) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
  • 16. Rozwiazywanie zaleznosci Typowe rozwiazanie Rozluznienie powiazan Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 11 / 50
  • 17. Rozwiazywanie zaleznosci Typowe rozwiazanie Rozluznienie powiazan 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 8 g 9 g Problem Jak pozbyc sie tworzenia konkretnej implementacji (i stworzyc system pluginowy)? Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
  • 18. Rozwiazywanie zaleznosci Typowe rozwiazanie Rozluznienie powiazan 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ; 8 g 9 g Problem Jak pozbyc sie tworzenia konkretnej implementacji (i stworzyc system pluginowy)? Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
  • 19. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 13 / 50
  • 20. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 6 f 7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Problemy Uzaleznienie od konkretnej fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
  • 21. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 6 f 7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Problemy Uzaleznienie od konkretnej fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
  • 22. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a ) 6 f 7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Problemy Uzaleznienie od konkretnej fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
  • 23. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka abstrakcyjna Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 15 / 50
  • 24. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka abstrakcyjna 1 p u b l i c c l a s s Kl i e n t 2 f 3 p u b l i c Kl i e n t ( ) f 4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 5 var samochod = new Samochod ( f a b r y k a ) ; 6 g 7 g 8 p u b l i c c l a s s Samochod 9 f 10 p r i v a t e I S i l n i k s i l n i k ; 11 12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 14 g 15 g Korzysci Mozliwosc korzystania z róznych silników i fabryk Problemy Problem z konkretyzacja i dostarczeniem fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
  • 25. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka abstrakcyjna 1 p u b l i c c l a s s Kl i e n t 2 f 3 p u b l i c Kl i e n t ( ) f 4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 5 var samochod = new Samochod ( f a b r y k a ) ; 6 g 7 g 8 p u b l i c c l a s s Samochod 9 f 10 p r i v a t e I S i l n i k s i l n i k ; 11 12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 14 g 15 g Korzysci Mozliwosc korzystania z róznych silników i fabryk Problemy Problem z konkretyzacja i dostarczeniem fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
  • 26. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Fabryka abstrakcyjna 1 p u b l i c c l a s s Kl i e n t 2 f 3 p u b l i c Kl i e n t ( ) f 4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ; 5 var samochod = new Samochod ( f a b r y k a ) ; 6 g 7 g 8 p u b l i c c l a s s Samochod 9 f 10 p r i v a t e I S i l n i k s i l n i k ; 11 12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f 13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ; 14 g 15 g Korzysci Mozliwosc korzystania z róznych silników i fabryk Problemy Problem z konkretyzacja i dostarczeniem fabryki Samochód jest włascicielem napedu (brak współdzielenia) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
  • 27. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Lokalizator usług Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 17 / 50
  • 28. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Lokalizator usług 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Łatwy dostep do lokalizatora i dostawców Problemy Ukrycie zaleznosci Ewentualne problemy w trakcie wykonywania programu Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
  • 29. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Lokalizator usług 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Łatwy dostep do lokalizatora i dostawców Problemy Ukrycie zaleznosci Ewentualne problemy w trakcie wykonywania programu Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
  • 30. Rozwiazywanie zaleznosci Delegacja konkretyzacji Delegacja — Lokalizator usług 1 p u b l i c c l a s s Samochod 2 f 3 p r i v a t e I S i l n i k s i l n i k ; 4 5 p u b l i c Samochod ( ) 6 f 7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ; 8 g 9 g Korzysci Mozliwosc korzystania z róznych silników Łatwy dostep do lokalizatora i dostawców Problemy Ukrycie zaleznosci Ewentualne problemy w trakcie wykonywania programu Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
  • 31. Rozwiazywanie zaleznosci Odwrócone sterowanie Odwrócone sterowanie — IoC Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 19 / 50
  • 32. Rozwiazywanie zaleznosci Odwrócone sterowanie Odwrócenie sterowania oddanie kontroli w „cudze rece” komponowanie obiektów pasywne API komponentu luzne połaczenia miedzy komponentami komunikacja przez interfejsy automatyczne spełnianie zaleznosci kontener odpowiedzialny za rozwiazywanie zaleznosci Composition Root Pattern Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 20 / 50
  • 33. Rozwiazywanie zaleznosci Odwrócone sterowanie Wstrzykiwanie zaleznosci Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 21 / 50
  • 34. Rozwiazywanie zaleznosci Odwrócone sterowanie Wstrzykiwanie zaleznosci Interface Injection (JEE, CORBA) Constructor Injection (Spring) Setter Injection (Spring, Java Beans) . . . Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 22 / 50
  • 35. Rozwiazywanie zaleznosci Odwrócone sterowanie Wstrzykiwanie zaleznosci 1 p u b l i c c l a s s Kl i e n t 2 f 3 p u b l i c Kl i e n t ( ) 4 f 5 var samochod = Kontener . Get<Samochod>() ; 6 g 7 g 8 9 p u b l i c c l a s s Samochod 10 f 11 p r i v a t e I S i l n i k s i l n i k ; 12 13 p u b l i c Samochod ( I S i l n i k s i l n i k ) 14 f 15 t h i s . s i l n i k = s i l n i k ; 16 g 17 g Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 23 / 50
  • 36. Rozwiazywanie zaleznosci Framework Framework Zródła Podobienstwo funkcjonalne do COM Dlaczego nie istniejacy kontener DI? Uwaga! Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. Dodatkowe punkty za aktywnosc. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
  • 37. Rozwiazywanie zaleznosci Framework Framework Zródła Podobienstwo funkcjonalne do COM Dlaczego nie istniejacy kontener DI? Uwaga! Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. Dodatkowe punkty za aktywnosc. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
  • 38. Rozwiazywanie zaleznosci Framework Framework Zródła Podobienstwo funkcjonalne do COM Dlaczego nie istniejacy kontener DI? Uwaga! Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. Dodatkowe punkty za aktywnosc. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
  • 39. Rozwiazywanie zaleznosci Framework Framework Zródła Podobienstwo funkcjonalne do COM Dlaczego nie istniejacy kontener DI? Uwaga! Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. Dodatkowe punkty za aktywnosc. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
  • 40. Rozwiazywanie zaleznosci Framework Framework Zródła Podobienstwo funkcjonalne do COM Dlaczego nie istniejacy kontener DI? Uwaga! Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty. Dodatkowe punkty za aktywnosc. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
  • 41. Połaczenia binarne Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 25 / 50
  • 42. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 43. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 44. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 45. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 46. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 47. Połaczenia binarne Wprowadzenie Połaczenia Druty / obwody drukowane w układach elektronicznych Poczatki wywołania binarne zalezne od systemu poziom proceduralny implementacje jezyków programowania Brak wywołan proceduralnych poza procesami Komunikacja miedzyprocesowa (IPC) sockety (UNIX) pseudostandardy zalezne od systemu łatwe skalowanie na systemy rozproszone poziom bitów i bajtów a nie procedur Zdalne wywołania procedur Odwołania do obiektów Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
  • 48. Połaczenia binarne Komunikacja lokalna Biblioteki Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 27 / 50
  • 49. Połaczenia binarne Komunikacja lokalna Biblioteki Zbiór procedur / podprogramów / klas Operacje i dane Działanie z róznymi programami Modularnosc Powiazania przez linkera (konsolidatora) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 28 / 50
  • 50. Połaczenia binarne Komunikacja lokalna Biblioteki statyczne Jedyne na poczatku Archiwum Kopiowanie kodu do pliku wykonywalnego Łaczenie po nazwie / symbolu Adresy wzgledne i symboliczne −! adresy bezwzgledne ”smart linking” Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 29 / 50
  • 51. Połaczenia binarne Komunikacja lokalna Biblioteki dynamiczne Indeks procedur Szybsze linkowanie — znajdowanie indeksu Wgrywanie w trakcie wykonania programu uruchomienie programu wywołanie procedury Loader czescia systemu operacyjnego Biblioteki współdzielone Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 30 / 50
  • 52. Połaczenia binarne Komunikacja lokalna Pluginy Biblioteki dynamiczne Ten sam lub podobny interfejs Inna funkcjonalnosc Mozliwosc dynamicznej podmiany Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 31 / 50
  • 53. Połaczenia binarne Komunikacja miedzyprocesowa IPC Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 32 / 50
  • 54. Połaczenia binarne Komunikacja miedzyprocesowa Pliki Jednowymiarowa sekwencja bajtów Liczby, znaki, piksele, muzyka Jeden pisarz, wielu czytaczy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 33 / 50
  • 55. Połaczenia binarne Komunikacja miedzyprocesowa Sygnały [*] Powiadomienia asynchroniczne Bezparametrowe Obsługa sygnałów pomijanie handler domyslny handler Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 34 / 50
  • 56. Połaczenia binarne Komunikacja miedzyprocesowa Sygnały [*] Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 35 / 50
  • 57. Połaczenia binarne Komunikacja miedzyprocesowa Łacza / Pipes Asynchroniczny protokół komunikacyjny Jednokierunkowa kolejka danych Ograniczony rozmiar - blokowanie Nienazwane / nazwane (kolejki FIFO) implementacja w systemie plików (nazwane) Bardzo popularne Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 36 / 50
  • 58. Połaczenia binarne Komunikacja miedzyprocesowa Sockety Berkeley socket (BSD) Lokalne i zdalne Protokół TCP/IP Adresy, porty Nasłuchiwanie Połaczeniowe (TCP) i bezpołaczeniowe (UDP) Tryby: blokujacy i nieblokujacy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 37 / 50
  • 59. Połaczenia binarne Komunikacja miedzymaszynowa Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 38 / 50
  • 60. Połaczenia binarne Komunikacja miedzymaszynowa Remote Procedure Call Zakonczenia −! procedury szczatkowe (namiastki) Wrazenie lokalnego wywołania namiastka wywołujaca linearyzacja parametrów (na format sieciowy) przesłanie przez siec namistka odbierajaca delinearyzacja parametrów (na format lokalny) wywołanie rzeczywistej procedury Przezroczystosc - i zaleta i wada Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 39 / 50
  • 61. Połaczenia binarne Komunikacja miedzymaszynowa Distributed Computing Environment [*] Pierwszy rozproszony system (poczatek lat 90-tych) RPC IDL Katalog usług Autentykacja UUID — Universally Unique Identifier Namiastkowe biblioteki dynamiczne Rozproszony system plików Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 40 / 50
  • 62. Zasady dla paczek binarnych Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 41 / 50
  • 63. Zasady dla paczek binarnych RCC — Spójnosc paczek Release/Reuse Equivalence Principle Common Reuse Principle Common Closure Principle SOLID CCP = SRP + OCP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
  • 64. Zasady dla paczek binarnych RCC — Spójnosc paczek Release/Reuse Equivalence Principle Common Reuse Principle Common Closure Principle SOLID CCP = SRP + OCP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
  • 65. Zasady dla paczek binarnych RCC — Spójnosc paczek Release/Reuse Equivalence Principle Common Reuse Principle Common Closure Principle SOLID CCP = SRP + OCP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
  • 66. Zasady dla paczek binarnych RCC — Spójnosc paczek Release/Reuse Equivalence Principle Common Reuse Principle Common Closure Principle SOLID CCP = SRP + OCP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
  • 67. Zasady dla paczek binarnych RCC — Spójnosc paczek Release/Reuse Equivalence Principle Common Reuse Principle Common Closure Principle SOLID CCP = SRP + OCP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
  • 68. Zasady dla paczek binarnych ASS — Zaleznosci miedzy paczkami Acyclic Dependencies Principle Stable Dependencies Principle Stable Abstractions Principle SOLID SDP + SAP = DIP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
  • 69. Zasady dla paczek binarnych ASS — Zaleznosci miedzy paczkami Acyclic Dependencies Principle Stable Dependencies Principle Stable Abstractions Principle SOLID SDP + SAP = DIP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
  • 70. Zasady dla paczek binarnych ASS — Zaleznosci miedzy paczkami Acyclic Dependencies Principle Stable Dependencies Principle Stable Abstractions Principle SOLID SDP + SAP = DIP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
  • 71. Zasady dla paczek binarnych ASS — Zaleznosci miedzy paczkami Acyclic Dependencies Principle Stable Dependencies Principle Stable Abstractions Principle SOLID SDP + SAP = DIP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
  • 72. Zasady dla paczek binarnych ASS — Zaleznosci miedzy paczkami Acyclic Dependencies Principle Stable Dependencies Principle Stable Abstractions Principle SOLID SDP + SAP = DIP dla paczek Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
  • 73. Standardy Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 44 / 50
  • 74. Standardy Standardy CORBA COM / DCOM / COM+ / OLE / ActiveX .NET, WCF RMI, EJB / Spring XML-RPC, SOAP, REST Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 45 / 50
  • 75. Standardy Problemy Róznorodnosc standardów Specyfikowanie interfejsów IDL — rózne Łaczenie interfejsów 1 do 1 (CORBA, SOM) wiele do 1 (Java) wiele do wiele (COM) Nazwy (UUID, GUID, IID, CATID, CLSID) Polimorfizm Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 46 / 50
  • 76. Podsumowanie Plan wykładu 1 Rozwiazywanie zaleznosci Typowe rozwiazanie Delegacja konkretyzacji Odwrócone sterowanie Framework 2 Połaczenia binarne Wprowadzenie Komunikacja lokalna Komunikacja miedzyprocesowa Komunikacja miedzymaszynowa 3 Zasady dla paczek binarnych 4 Standardy 5 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 47 / 50
  • 77. Podsumowanie Podsumowanie Szalenie istotne poprawne zarzadzanie zaleznosciami Komponenty przekraczaja granice procesów Potrzebna efektywna komunikacja miedzyprocesowa miedzymaszynowa Rózne rozwiazania — rózne standardy Konwencje zastosowan rozwiazan binarnych Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 48 / 50
  • 78. Podsumowanie Do domu Opanowac IoC i DI Zaznajomic sie z przykładowym frameworkiem komponentowym Przypomniec sobie w praktyce połaczenia miedzy binarnymi elementami programu Przeczytac 2. rozdział z „Developer’s Guide to Microsoft Unity” Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 49 / 50
  • 79. Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 50 / 50