Programowanie Komponentowe Wprowadzenie

Transkrypt

Programowanie Komponentowe Wprowadzenie
Programowanie Komponentowe
Wprowadzenie
dr inż. Ireneusz Szcześniak
jesień 2016 roku
Definicja
Programowanie komponentowe nie ma ścisłej definicji i jest różnie
rozumiane.
Przez lata miało różne specyfikacje i implementacje: CORBA,
Microsoft COM, Microsoft .NET, Apache Axis, Java RMI, SOAP,
czy ogólnie rozumiane usługi sieciowe (ang. web services).
Programowanie komponentowe było próbą rozwiązania problemów
programowania obiektowego, wynikających ze świadczenia usług.
Obecnie można uznać, że programowanie komponentowe jest
programowaniem obiektowym z dodatkami, żeby spełniało
nowoczesne wymagania.
slajd 2
Motywacja
Potrzeba dostarczenia złożonych obiektów współdzielonych i
zdalnych.
Wielozadaniowy system operacyjny wymaga zaawansowanego
zarządzania obiektami, żeby dostarczyć współdzielone usługi.
Aplikacje webowe, usługi sieciowe czy rozproszone obliczenia
wymagają dostępu do zdalnych obiektów.
slajd 3
Komponent
Nie ma ścisłej definicji. Różnie nazywany: komponentem, usługą,
serwletem czy obiektem zdalnym.
Ogólnie chodzi o to, aby komponent:
• świadczył lokalne i zdalne usługi,
• był spójny (zarządzanie obiektami składowymi),
• był przenośny (niezależny od platformy),
• był niezawodny (czyli dobrze testowany),
• gotowy do szybkiego wdrożenia i ponownego użycia.
slajd 4
Główne mechanizmy
Główne mechanizmy programowania komponentowego:
• programowanie obiektowe,
• zaawansowane zarządzanie obiektami,
• rejestry obiektów czy usług,
• zdalne obiekty czy usługi,
• wielowątkowość,
• testowanie,
• serializacja.
Obecnie wszystko to można zrobić w C++, Javie czy Pythonie.
Mechanizmy te mogą być wbudowane w język, jak na przykład
obiekty zdalne w Javie, albo częścią biblioteki, jak w Pythonie.
slajd 5
Zaawansowane zarządzanie obiektami
Najważniejsze to:
• dziedziczenie, polimorfizm,
• dynamiczne typowanie,
• adaptacja, kompozycja,
• liczniki obiektów,
• posiadanie obiektu na wyłączność,
• przechodność posiadania obiektu,
• obiekty współdzielone,
• singletony, fabryki obiektów,
• zaawansowane niszczenie obiektów,
• dostęp do obiektu: do odczytu albo na wyłączność.
slajd 6
Obiekty zdalne: komunikacja przez Internet
• JavaScript Object Notation (JSON) po HTTP
• Common Object Request Broker Architecture (CORBA)
• Rejestr obiektów, jak na przykład w Java RMI
• Różne protokoły specyficzne dla biblioteki
• Niskopoziomowo to tylko TCP/IP, ale to jest ukryte.
slajd 7
Wymagania przedmiotu
Wymagana jest:
• umiejętność programowania obiektowego,
• umiejętność obługi Linuxa,
• znajomość podstaw sieci komputerowych.
slajd 8
Materiał
Na wykładzie i laboratorium:
• zarządzanie obiektami,
• wielowątkowość,
• lokalna komunikacja między obiektami,
• rejestry, dostęp zdalny,
• może serializacja i testowanie.
Zaliczenie z przedmiotu: aktywność na laboratorium, dwa
sprawdziany z laboratorium i z wykładu.
slajd 9
Java, Python, czy C++?
• Java jest rozwinięta i popularna.
• Java ma własnościową licencję i jest własnością korporacji.
• Java RMI (Remote Method Invocation) nie jest rozwijana.
• Python jest wolny (free), darmowy, bez uwikłań prawnych.
• Python jest aktywnie rozwijany i przyszłościowy.
• W C++ można zrobić wszystko, ale większym nakładem pracy.
• C++ najbardziej wydajny.
slajd 10
CORBA raczej nie dla nas
• Common Object Request Broker Architecture (CORBA)
• Komunikacja wszystkiego z wszystkim po wszystkim
• Zbiór specyfkacji, protokołów i implementacji
• Wymagane rozbudowane narzędzia, wiedza, doświadczenie
• Dla większości potrzeb jest armatą na wróble.
Wykorzystywana w dużych projektach, na przykład przez CERN.
slajd 11
Dziękuję za uwagę.

Podobne dokumenty