Symfony Flex - Nowe, efektywne podejście do budowania aplikacji w SymfonyKrzysztof Wędrowicz
Symfony 4 wprowadza nowy domyślny sposób budowania aplikacji - Symfony Flex. System będzie mocno zintegrowany z composerem, a także zaoszczędzi czas pracy dzięki zautomatyzowaniu powtarzalnych zadań, takich jak wprowadzanie konfiguracji. Dodatkowo ułatwi wybór nowych bibliotek do konkretnych potrzeb dzięki udostępnieniu dwóch repozytoriów zawierających najlepsze z perspektywy twórców bundle dla danego celu. Począwszy od wersji 3.3 Symfony zezwala na użytkowanie Symfony Flex w wersji beta. Zbadamy jego działanie “pod maską” by w pełni wykorzystać potencjał tego narzędzia. Prezentacja była częścią prelekcji na PHPers Summit 2017.
Testy wydajnościowe to nie tylko JMeter. Podobnie jak w przypadku testów automatycznych, liczba frameworków do badania wydajności stale rośnie. Poza wprowadzeniem w tematykę testów wydajnościowych, w trakcie prezentacji przyjrzymy się ich implementacji we frameworku k6. Opowiemy również dlaczego w The Software House postawiliśmy na jego wybór i jak dzięki prostym skryptom testowym zoptymalizowaliśmy kilka naszych projektów.
Trudne jest zarządzanie własną infrastrukturą. Trochę prościej jest użyć chmury, jednak wciąż czeka nas sporo konfiguracji. A co, gdyby wszystkie potrzebne usługi skonfigurowały się “same”, a nam pozostało tylko doglądanie całości? AWS Elastic Beanstalk umożliwia zautomatyzowane skonfigurowanie środowiska w chmurze AWS pod konkretne aplikacje. Można dzięki niemu wygodnie uruchomić Dockerowe kontenery i właśnie tym zajmiemy się na prezentacji. Opowiemy pokrótce jak działa Beanstalk i przeprowadzimy deployment przykładowego programu). I to wszystko bez zastanawiania się nad infrastrukturalnymi szczegółami.
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
Bank? System sterowania farmą paneli fotowoltaicznych? A może największy w Polsce punkt wymiany ruchu internetowego? Co wspólnego mają te systemy?Podczas tej prezentacji chciałbym podzielić się z Wami moim przemyśleniami oraz doświadczeniem, które zdobyłem podczas rozwijania i utrzymywania aplikacji od których wymaga się, aby były niezawodne.
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...Future Processing
Prezentacja z VI edycji Quality Excites.
Jednym z największych problemów, z jakim borykają się zespoły testowe, jest konfiguracja środowisk i danych testowych oraz zarządzanie testami automatycznymi w tych środowiskach. Z pomocą może przyjść Docker — narzędzie do „wirtualizacji” aplikacji oraz testów. Dzięki zastosowaniu Dockera możliwe jest nie tylko łatwiejsze budowanie środowisk lokalnych w codziennej pracy testerów, lecz także dokładniejsze konfigurowanie środowisk do testów regresyjnych oraz wykonywanie testów automatycznych w Continuous Integration.
Adrian w swojej prezentacji podał kilka podstawowych założeń Dockera, a następnie pokazał przykładowe rozwiązanie dla testów regresyjnych jednej aplikacji. Rozszerzył także ten temat na wiele zdockeryzowanych aplikacji i śledzenie konfiguracji środowiska, na którym uruchamiane są testy regresyjne przed wydaniem wersji.
Symfony Flex - Nowe, efektywne podejście do budowania aplikacji w SymfonyKrzysztof Wędrowicz
Symfony 4 wprowadza nowy domyślny sposób budowania aplikacji - Symfony Flex. System będzie mocno zintegrowany z composerem, a także zaoszczędzi czas pracy dzięki zautomatyzowaniu powtarzalnych zadań, takich jak wprowadzanie konfiguracji. Dodatkowo ułatwi wybór nowych bibliotek do konkretnych potrzeb dzięki udostępnieniu dwóch repozytoriów zawierających najlepsze z perspektywy twórców bundle dla danego celu. Począwszy od wersji 3.3 Symfony zezwala na użytkowanie Symfony Flex w wersji beta. Zbadamy jego działanie “pod maską” by w pełni wykorzystać potencjał tego narzędzia. Prezentacja była częścią prelekcji na PHPers Summit 2017.
Testy wydajnościowe to nie tylko JMeter. Podobnie jak w przypadku testów automatycznych, liczba frameworków do badania wydajności stale rośnie. Poza wprowadzeniem w tematykę testów wydajnościowych, w trakcie prezentacji przyjrzymy się ich implementacji we frameworku k6. Opowiemy również dlaczego w The Software House postawiliśmy na jego wybór i jak dzięki prostym skryptom testowym zoptymalizowaliśmy kilka naszych projektów.
Trudne jest zarządzanie własną infrastrukturą. Trochę prościej jest użyć chmury, jednak wciąż czeka nas sporo konfiguracji. A co, gdyby wszystkie potrzebne usługi skonfigurowały się “same”, a nam pozostało tylko doglądanie całości? AWS Elastic Beanstalk umożliwia zautomatyzowane skonfigurowanie środowiska w chmurze AWS pod konkretne aplikacje. Można dzięki niemu wygodnie uruchomić Dockerowe kontenery i właśnie tym zajmiemy się na prezentacji. Opowiemy pokrótce jak działa Beanstalk i przeprowadzimy deployment przykładowego programu). I to wszystko bez zastanawiania się nad infrastrukturalnymi szczegółami.
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
Bank? System sterowania farmą paneli fotowoltaicznych? A może największy w Polsce punkt wymiany ruchu internetowego? Co wspólnego mają te systemy?Podczas tej prezentacji chciałbym podzielić się z Wami moim przemyśleniami oraz doświadczeniem, które zdobyłem podczas rozwijania i utrzymywania aplikacji od których wymaga się, aby były niezawodne.
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...Future Processing
Prezentacja z VI edycji Quality Excites.
Jednym z największych problemów, z jakim borykają się zespoły testowe, jest konfiguracja środowisk i danych testowych oraz zarządzanie testami automatycznymi w tych środowiskach. Z pomocą może przyjść Docker — narzędzie do „wirtualizacji” aplikacji oraz testów. Dzięki zastosowaniu Dockera możliwe jest nie tylko łatwiejsze budowanie środowisk lokalnych w codziennej pracy testerów, lecz także dokładniejsze konfigurowanie środowisk do testów regresyjnych oraz wykonywanie testów automatycznych w Continuous Integration.
Adrian w swojej prezentacji podał kilka podstawowych założeń Dockera, a następnie pokazał przykładowe rozwiązanie dla testów regresyjnych jednej aplikacji. Rozszerzył także ten temat na wiele zdockeryzowanych aplikacji i śledzenie konfiguracji środowiska, na którym uruchamiane są testy regresyjne przed wydaniem wersji.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Prezentacja, która powstała na potrzeby akcji 3 webinarów o podstawach automatyzacji w Selenium Webdriver.
Podczas ostatniego webinaru dowiesz się, jak napisać swój pierwszy, podstawowy test automatyczny z wykorzystaniem Selenium WebDriver. W dalszej części stworzymy mały framework testowy i rozbudujmy test o bardziej zaawansowane funkcje.
Prezentacja dostępna jest na kolejnym slajdzie po wyświetlanym nagraniu.
Kivy to biblioteka pythonowa do tworzenia wieloplatformowych aplikacji GUI.
Samples: https://github.com/daftcode/pywaw_kivy_na_androidzie/blob/master/README.md
In presentation the idea of automatically generated web interface for remote laboratory is presented. The concept is based on suitably prepared set of metadata, that is used to generate web client. In presented solution each remote experiment, sends metadata concerning user interface just before experiment session is started.
Main advantages of this solution include: easier deployment and decreased development costs. This concept can be applied for various e-learning areas. The working example of such interface is shown and discussed.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Prezentacja, która powstała na potrzeby akcji 3 webinarów o podstawach automatyzacji w Selenium Webdriver.
Podczas ostatniego webinaru dowiesz się, jak napisać swój pierwszy, podstawowy test automatyczny z wykorzystaniem Selenium WebDriver. W dalszej części stworzymy mały framework testowy i rozbudujmy test o bardziej zaawansowane funkcje.
Prezentacja dostępna jest na kolejnym slajdzie po wyświetlanym nagraniu.
Kivy to biblioteka pythonowa do tworzenia wieloplatformowych aplikacji GUI.
Samples: https://github.com/daftcode/pywaw_kivy_na_androidzie/blob/master/README.md
In presentation the idea of automatically generated web interface for remote laboratory is presented. The concept is based on suitably prepared set of metadata, that is used to generate web client. In presented solution each remote experiment, sends metadata concerning user interface just before experiment session is started.
Main advantages of this solution include: easier deployment and decreased development costs. This concept can be applied for various e-learning areas. The working example of such interface is shown and discussed.
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
- oprogramowanie dedykowane vs. produkty Open Source gotowe do użycia – w którym momencie te drugie przestają być wystarczające,
- jaką wartością jest indywidualne podejście do zagadnienia i gdzie każdy z udziałowców projektu otrzymuje największe korzyści,
- po co komu framework, skoro można wszystko samemu napisać najlepiej?
- Symfony2, jego historia, możliwości i usytuowanie na rynku,
- przykłady z życia codziennego, jak PHP i Symfony2 zwinnie daje radę w przeróżnych dziedzinach software developmentu.
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
Autor: Michał Żyliński
Ja mówię, wy ziewacie – mam szczerą nadzieję, że nie skończy się to typową prezentacją sponsora. Postaram się pokazać gdzie w środku Microsoft spotkać można open source, przedstawić z grubsza aktualne projekty dotyczące bezpośrednio lub pośrednio PHP oraz zachęcić do (spontanicznych) pytań i dyskusji. Taka okazja nie zdarza się w końcu zbyt często!
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieWydawnictwo Helion
Poznaj możliwości szkieletu Springi usprawnij proces tworzenia aplikacji J2EE
Spring to szkielet wytwarzania aplikacji (framework), dzięki któremu proces budowania oprogramowania w języku Java dla platformy J2EE staje się znacznie prostszy i efektywniejszy. Spring oferuje usługi, które można z powodzeniem używać w wielu środowiskach -- od apletów po autonomiczne aplikacje klienckie, od aplikacji internetowych pracujących w prostych kontenerach serwletów po złożone systemy korporacyjne pracujące pod kontrolą rozbudowanych serwerów aplikacji J2EE. Spring pozwala na korzystanie z możliwości programowania aspektowego, znacznie sprawniejszą obsługę relacyjnych baz danych, błyskawiczne budowanie graficznych interfejsów użytkownika oraz integrację z innymi szkieletami takimi, jak Struts czy JSF.
Książka "Spring Framework. Profesjonalne tworzenie oprogramowania w Javie" odkryje przed Tobą wszystkie tajniki stosowania Springa w procesie wytwarzania systemów informatycznych dla platformy J2EE. Dowiesz się, jak efektywnie korzystać z najważniejszych składników szkieletu Spring i poznasz ich rolę w budowaniu aplikacji. Nauczysz się nie tylko tego, co można zrealizować za pomocą poszczególnych usług, ale także tego, w jaki sposób zrobić to najlepiej. W kolejnych ćwiczeniach przeanalizujesz proces tworzenie kompletnej aplikacji w oparciu o Spring.
W książce poruszono m.in. tematy:
* Struktura szkieletu Spring
* Tworzenie komponentów i definiowanie zależności pomiędzy nimi
* Testowanie aplikacji i testy jednostkowe
* Programowanie aspektowe w Spring
* Połączenia z relacyjnymi bazami danych za pomocą JDBC
* Zarządzanie transakcjami
* Korzystanie z mechanizmu Hibernate
* Zabezpieczanie aplikacji
* Stosowanie szkieletu Web MVC
Przekonaj się, jak Spring może zmienić Twoją pracęnad tworzeniem aplikacji J2EE.
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
Azure oferuje wiele platform na których możesz uruchomić swoją aplikację. Każda ma swoje zalety i wady. Zrobiłem przegląd tych platform dla Ciebie. W prezentacji wyrażam swoją prywatną opinię.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Aplikacje biznesowe dotyczą danych -- niezależnie od tego, czy są to dane o produkcie, szczegóły dotyczące kart kredytowych użytkowników czy preferowanego koloru kupowanych samochodów. Wraz ze wzrostem znaczenia informacji wzrosła także złożoność dostępu do nich. Programiści Javy mogą wybierać teraz spośród różnego rodzaju interfejsów API i technologii -- EJB, JDO, JDBC, SQL, RDBMS, OODBMS i innych. Do tej pory byli oni zdani na siebie przy podejmowaniu decyzji o tym, który model najlepiej pasuje do ich aplikacji i jak w najlepszy sposób korzystać z wybranego API.
Książka "Java. Aplikacje bazodanowe. Najlepsze rozwiązania" przychodzi z pomocą programistom. Teraz nie muszą już oni przeszukiwać kilku książek na temat różnych API, aby zdecydować o odpowiedniej metodzie. Ten obszerny przewodnik omawia podstawy wszystkich wiodących interfejsów API (Enterprise JavaBeans, Java Data Objects, JDBC, a także innych, mniej znanych opcji), objaśnia metodologię i komponenty projektowe wykorzystujące wspomniane interfejsy oraz prezentuje rozwiązania najbardziej dostosowane do różnych typów aplikacji.
Książka omawia także zagadnienia dotyczące projektowania baz danych, począwszy od architektury tabel, skończywszy na normalizacji. Autor przedstawia najlepsze rozwiązania rozmaitych problemów. Nauczysz się w jaki sposób przeprowadzać różne rodzaje normalizacji, a także dowiesz się, kiedy warto przeprowadzić denormalizację. Uzyskasz także szczegółowe instrukcje dotyczące optymalizacji zapytań SQL w celu najlepszego wykorzystania struktury bazy danych. Zaprezentowano także praktyczne zastosowania omawianych technik dostarczając informacje, które Czytelnik może zastosować natychmiast we własnych projektach aplikacji biznesowych.
Similar to Programowanie Komponentowe: #6 Wersjonowanie (20)
This document describes sequential and parallel quicksort algorithms. Sequential quicksort has average complexity of O(n log n) but worst case of O(n^2). Parallel quicksort partitions the array, sorts subarrays in parallel threads, and waits for threads to complete to improve performance over sequential quicksort. It uses a queue to store threads if processors are busy and chooses split keys through various methods like first element or median. New threads are only created if the subarray size is above a minimum to reduce overhead.
2. Programowanie Komponentowe
Wykład #6: Wersjonowanie
Mikołaj Olszewski
Wydział Zastosowan Informatyki i Matematyki
Szkoły Głównej Gospodarstwa Wiejskiego
18.11.2014
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 2 / 32
3. Plan wykładu
1 Wersjonowanie asemblacji
Numer wersji
Modele wdrazania
Silne nazwy
Polityka kompatybilnosci
2 Wersjonowanie w VisualStudio
3 Wersjonowanie CLR
4 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 3 / 32
4. Wprowadzenie
Konieczne w systemie komponentowym
Współgranie odpowiednich wersji
Model współdzielenia
prywatne
współdzielone
DLL Hell
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 4 / 32
5. Wersjonowanie asemblacji
Plan wykładu
1 Wersjonowanie asemblacji
Numer wersji
Modele wdrazania
Silne nazwy
Polityka kompatybilnosci
2 Wersjonowanie w VisualStudio
3 Wersjonowanie CLR
4 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 5 / 32
7. Wersjonowanie asemblacji Numer wersji
Numer wersji
[assembly: AssemblyVersion("1.2.3.4")]
Ustawienia projektu
AssemblyInfo.cs
Referencja uwzglednia
numer wersji
1 . a s s embl y e x t e rn
MyAssembly
2 f
3 . v e r 1 : 2 : 3 : 4
4 g
Zapewnienie
kompatybilnosci podczas
uruchamiania
silne nazwy
przyjazne nazwy
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 7 / 32
8. Wersjonowanie asemblacji Numer wersji
Elementy numeru wersji
1 . 2 . 3 . 4
" " " "
major minor build revision
Dowolna semantyka
Konwencja
revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni
podmienialne
build — rekompilacja zródeł (np. na inna platforme)
minor — znaczace zmiany z intencja zachowania kompatybilnosci
major — duze zmiany, mozliwy brak kompatybilnosci
Semantyczne wersjonowanie
Konieczne w projekcie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
9. Wersjonowanie asemblacji Numer wersji
Elementy numeru wersji
1 . 2 . 3 . 4
" " " "
major minor build revision
Dowolna semantyka
Konwencja
revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni
podmienialne
build — rekompilacja zródeł (np. na inna platforme)
minor — znaczace zmiany z intencja zachowania kompatybilnosci
major — duze zmiany, mozliwy brak kompatybilnosci
Semantyczne wersjonowanie
Konieczne w projekcie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
10. Wersjonowanie asemblacji Numer wersji
Numerowanie wersji
Domyslnie: 1.0.0.0
Samodzielne
Czesciowo automatyczne
1.2.*
build — liczba dni od 1.1.2000
revision — liczba sekund od północy / 2
przykład: 1.2.1642.18000
1.2.3.*
[assembly: AssemblyInformationalVersion("1.2.3.4")]
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 9 / 32
11. Wersjonowanie asemblacji Numer wersji
Programowe pobieranie wersji
1 Assembly a s s embl y = Assembly . Ge tEx e cut ingAs s embl y ( ) ;
2 Ve r s i o n v e r s i o n = a s s embl y . GetName ( ) . Ve r s i o n ;
3 Trace . Wr i t eLi n e ( ”Nr w e r s j i to ” + v e r s i o n ) ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 10 / 32
12. Wersjonowanie asemblacji Modele wdrazania
Modele wdrazania asemblacji
Asemblacje prywatne
lokalna kopia na potrzeby aplikacji
kopiowanie do katalogu
zazwyczaj podczas instalacji
nowy egzemplarz nadpisuje stary
zazwyczaj wsteczna kompatybilnosc
Asemblacje współdzielone
uzywane przez wiele aplikacji
Global Assembly Cache
wsparcie dla wielu wersji
nie jest konieczne zachowanie wstecznej kompatybilnosci
uproszczenie zarzadzania wersjami
Nie mieszac!
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
13. Wersjonowanie asemblacji Modele wdrazania
Modele wdrazania asemblacji
Asemblacje prywatne
lokalna kopia na potrzeby aplikacji
kopiowanie do katalogu
zazwyczaj podczas instalacji
nowy egzemplarz nadpisuje stary
zazwyczaj wsteczna kompatybilnosc
Asemblacje współdzielone
uzywane przez wiele aplikacji
Global Assembly Cache
wsparcie dla wielu wersji
nie jest konieczne zachowanie wstecznej kompatybilnosci
uproszczenie zarzadzania wersjami
Nie mieszac!
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
14. Wersjonowanie asemblacji Modele wdrazania
Assembly resolver
Przekazywanie dokładnej nazwy i numeru wersji
Poszukiwanie kompatybilnej asemblacji
1 przeszukiwanie GAC (po silnej nazwie)
2 przeszukiwanie folderu aplikacji (ew. innego)
3 rzucanie wyjatku
odwrotnie bez silnej nazwy
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 12 / 32
16. Wersjonowanie asemblacji Silne nazwy
Silne nazwy asemblacji
GAC zawiera komponenty od róznych dostawców
Potrzeba jednoznacznej identyfikacji komponentu
GUID
COM
mozliwosc kopiowania
brak autentykacji i zapewnienia integracji
Silna nazwa — identyfikacja twórcy i zawartosci
para kluczy szyfrujacych: publiczny i prywatny
podpis asemblacji (zaszyfrowany hash)
podpis i klucz publiczny dołaczone do asemblacji
ograniczanie dostepu do kluczy
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 14 / 32
17. Wersjonowanie asemblacji Silne nazwy
Przechowywanie w GAC
C:nWINDOWSnassemblynGAC MSILnMySharedAssembly
n1.2.3.4 745901a54f88909bnMySharedAssembly.dll
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 15 / 32
18. Wersjonowanie asemblacji Silne nazwy
Referencje po silnej nazwie
1 . a s s embl y e x t e rn MyServerAssembly
2 f
3 . p u b l i c k e y t o k e n = (22 90 49 07 87 53 81 9B )
4 . v e r 1 : 2 : 3 : 4
5 g
Znajdowanie asemblacji
1 Wyszukiwanie po przyjaznej nazwie
2 Zczytanie klucza publicznego i porównanie tokenów
3 Odszyfrowanie podpisu i porównanie hasha
Polityka łaczenia silnych i przyjaznych nazw
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 16 / 32
19. Wersjonowanie asemblacji Silne nazwy
Podpisywanie asemblacji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 17 / 32
21. Wersjonowanie asemblacji Silne nazwy
Bezpieczne przechowywanie kluczy prywatnych
Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem”
Jak budowac bez klucza prywatnego?
Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje?
Rozwiazanie
delay signing
klucz publiczny — tak, podpis — nie
mozliwosc instalowania w GAC i odwołania
nie mozna uruchamiac
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
22. Wersjonowanie asemblacji Silne nazwy
Bezpieczne przechowywanie kluczy prywatnych
Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem”
Jak budowac bez klucza prywatnego?
Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje?
Rozwiazanie
delay signing
klucz publiczny — tak, podpis — nie
mozliwosc instalowania w GAC i odwołania
nie mozna uruchamiac
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
23. Wersjonowanie asemblacji Silne nazwy
Reguły kompatybilnosci
nazwy prywatne współdzielone
przyjazne wstecznie komp. niemozliwe
silne po nr wersji po nr wersji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 20 / 32
24. Wersjonowanie asemblacji Polityka kompatybilnosci
Własna polityka kompatybilnosci
Nadpisywanie domyslnej polityki .NET
Polityka dla pojedynczej aplikacji
Polityka globalna (dla wszystkich aplikacji)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 21 / 32
25. Wersjonowanie asemblacji Polityka kompatybilnosci
Polityka kompatybilnosci dla aplikacji
<application name>.config
1 <? xml v e r s i o n=” 1 . 0 ” ?>
2 <c o n f i g u r a t i o n>
3 <runt ime>
4 <a s s emb l yBi n d i n g xmlns=” urn: schemas−mi c r o s o f t−com:asm . v1 ”>
5 <dependentAssembly>
6 <a s s emb l y I d e n t i t y name=”MyCl a s sLi b r a r y ”
7 publicKeyToken=” 229049078753819 b” />
8 <p u b l i s h e r P o l i c y a p p l y=” y e s ”/>
9 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 2 . 0 . 0 . 0 ” newVers ion=” 2 . 1 . 0 . 0 ”
/>
10 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 1 . 1 . 0 . 0 −1 . 3 . 0 . 0 ” newVers ion=”
2 . 1 . 0 . 0 ” />
11 <codeBase v e r s i o n=” 3 . 2 . 1 . 0 ” h r e f=” f i l e : /// c : ntempnSomeApp”
/>
12 </ dependentAssembly>
13 </ a s s emb l yBi n d i n g>
14 </ runt ime>
15 </ c o n f i g u r a t i o n>
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 22 / 32
26. Wersjonowanie w VisualStudio
Plan wykładu
1 Wersjonowanie asemblacji
Numer wersji
Modele wdrazania
Silne nazwy
Polityka kompatybilnosci
2 Wersjonowanie w VisualStudio
3 Wersjonowanie CLR
4 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 23 / 32
27. Wersjonowanie w VisualStudio
Praca z VisualStudio
Miejsce przechowywania
Prywatne kopie asemblacji
Copy Local7! False
Referencja do wersji
Domyslne podazanie za wersja
Specific version7! True
Wersja pliku
SolutionInfo.cs
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 24 / 32
28. Wersjonowanie CLR
Plan wykładu
1 Wersjonowanie asemblacji
Numer wersji
Modele wdrazania
Silne nazwy
Polityka kompatybilnosci
2 Wersjonowanie w VisualStudio
3 Wersjonowanie CLR
4 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 25 / 32
29. Wersjonowanie CLR
Wersje CLR
Scisła zgodnosc wersji ze srodowiskiem .NET
silne nazwy
Polityka wersjonowania .NET
okreslenie kompatybilnosci miedzy wersjami
duza uwaga do wstecznej kompatybilnosci
Wiele asemblacji o tej samej wersji
Unifikacja wersji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 26 / 32
30. Wersjonowanie CLR
Okreslanie wersji CLR
Domyslnie najnowsza na maszynie
taka, która potrafi obsłuzyc VisualStudio
Wszystkie nowe wersje sa kompatybilne wstecznie
Czesciowa kompatybilnosc w przód
zachowanie wersji metadanych
Samodzielne definiowanie kompatybilnosci
supportedRuntime
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 27 / 32
32. Podsumowanie
Plan wykładu
1 Wersjonowanie asemblacji
Numer wersji
Modele wdrazania
Silne nazwy
Polityka kompatybilnosci
2 Wersjonowanie w VisualStudio
3 Wersjonowanie CLR
4 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 29 / 32
33. Podsumowanie
Podsumowanie
Potezny mechanizm wersjonowania i zapewniania zgodnosci
Rózne metody zarzadzania wersjami
Wsparcie w narzedziach (VisualStudio i polecenia)
Mozliwe własne polityki kompatybilnosci
Polityka kompatybilnosci CLR
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 30 / 32
34. Podsumowanie
Do domu
Przeczytac rozdział 5. „Programming .NET Components”
Przyswoic modele wdrozen i polityki kompatybilnosci
Przypomniec/zapoznac sie z tworzeniem GUI w WPF
Stworzyc panel kontrolny w WPF
Zapoznac sie z jednym z dedykowanych kontenerów DI
Ninject
Unity
AutoFac
. . .
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 31 / 32