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ę.