komponentowe i rozproszone n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Komponentowe i rozproszone PowerPoint Presentation
Download Presentation
Komponentowe i rozproszone

Loading in 2 Seconds...

play fullscreen
1 / 24

Komponentowe i rozproszone - PowerPoint PPT Presentation


  • 82 Views
  • Uploaded on

Komponentowe i rozproszone. Komponenty i zależności. Moduł. Obecne rozwiązania pozwalają łatwo dzielić kod na moduły Nie utrudnia to kompilacji , łatwo zmienić rozmieszczenie klas itd . Serwery CI pozwalają wykrywać niespójności pomiędzy modułami

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Komponentowe i rozproszone' - nigel-phelps


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
komponentowe i rozproszone

Komponentowe i rozproszone

Komponentyizależności

slide2
Moduł
  • Obecnerozwiązaniapozwalająłatwodzielićkodnamoduły
  • Nieutrudnia to kompilacji, łatwozmienićrozmieszczenieklasitd.
  • Serwery CI pozwalająwykrywaćniespójnościpomiędzymodułami
  • Nie ma dużejróżnicyczydostarczamy program w postaci 1 plikuwykonywalnegoczygrupyplików. Na potrzebyinstalacjimożnascalićkilka assemblies w jednonp (exe+dll-ki -> exe)
  • Na poziomiekoduitakdążymy do rozluźnieniazależnościmiędzyklasami, użycieróżnych assemblies jest właściwie “bezbolesne”
  • Rozwiązaniatypukontenery DI pozwalająnarozluźnieniezależnościmiędzyklasami
komponent
Komponent
  • Co jeżelichcemydostarczaćposzczególnemodułyoddzielnie?
  • Jaktestowaćkomponent, którymożebyćużywany w kilkusystemach/aplikacjach?
  • Co jeżelikażdyużytkownikchcemiećswojezmiany ?
  • Co jeżelizmianazaindukowanaprzezjeden system wymuszatestowaniekoduzewszystkimi?
  • Czyliprzykażdejzmianietrzebatestowaćwszystkichużytkowników/ ???
komponenty vs modu y
Komponenty vs. moduły
  • Komponent
    • Jest dostarczanyniezależnie
    • ma indywidualnycyklżycia/testowaniaitd
  • Poszczególniużytkownicymogąużywaćswoichwersji.
  • Mogąsię “przesiąść” nanowsząwersję w wybranym, dogodnymmomencie (jakrobiąwłasnezmiany)
  • Możnawersjonowaćkomponentynapoziomiebinarnym
slide5
.Net
  • CLI pozwalanawykorzystywaniekodunapisanego w dowolnymjęzykuwspierającym .NET
  • Zarządzalnebiblioteki w połączeniu z refleksjąpozwalająnałatweużyciekodunapoziomiebinarnym (CL)
  • Wersjonowaniepozwalanajednoczesneużycieróżnychwersjitejsamekjbiblioteki
  • Na poziomiesystemowymmożnarejestrowaćbiblioteki w GAC
net vs java
.Netvs Java
  • ….
  • JNBridge
  • IKVM
  • WebServices ?
uwaga
Uwaga

Komponent ≠ Serwis

net podzespo y assemblies
.NET Podzespoły(assemblies)
  • Logiczny zbiór jednego lub więcej EXE, DLL
  • Wydzielone pliki z zasobami
  • Manifest
  • Definiowanie podzespołu:
    • AL.EXE (ILDASM.EXE)
    • IDE
net manifest
.NET Manifest
  • Definiuje obiekty wchodzące w skłąd podzespołu
  • Może określać kulturę (język, formaty, itd)
  • Może zawierać klucze publiczne
  • Może zawierać prywatne atrybuty (ignorowane przez CLR)
  • Może określać wymagany/pożądany CLR
net wdra anie podzespo w
.NET wdrażanie podzespołów
  • Podzespołymogąbyćwspółdzielneimogąwspółdzielićpliki
  • Najprostszapostać to pliki w jednymkatalogu(niewymaganeżadnewpisy do rejestru)
    • Brakew. konfliktów
    • Pot. multiplikacjabibliotek
  • Współdzieleniezasobów:
    • GlobalAssemblyCache (GACUTIL.EXE, AssemblyCacheViewer)
    • Wamagasilnychnazw: Nazwa+fragmentkluczapublicznegoSN.exe -> plik.snk -> projekt
net wersjonowanie
.NET Wersjonowanie
  • AlternatywadlapiekłaDLLi
  • „Docelowyplik jest nowszyniżkopiowany. Czykontynuować ?” (9()% - TAK)
  • Manifest zawierainformację o wersji
    • Głównyidrugorzędnynumerwersji
    • Numerkompilacji
    • Numerkorekty
  • Manifest zawierawersjęinformacyjną
  • CLR próbujeznaleźćwersjepodzespołówwymaganelubdopuszczaneprzezklienta
net global assembly cache
.Net: Global Assembly Cache
  • Rejestracja/derejestracja
    • gacutil [options] [assemblyName | assemblyPath | assemblyListFile]
  • Assembly musibyćpodpisane
zale no ci
Zależności
  • Rodzajezależności:
    • (Afferent) - ktozależy
    • (Efferent) – odkogozależy

efferent

classY{ … }

class X{ … Y field; }

afferent

podzia na komponenty
Podziałnakomponenty
  • REP: The Reuse/Release Equivalency Principle: The granule of reuse is the granule of release. Only components that are released through a tracking system can be effectively reused. This granule is the package.
  • CRP: Common Reuse Principle:The classes in a package are reused together. if you reuse one of the classes in a package, you reuse them all.
  • CCP: Common Closure Principle:The classes in a package should be closed together against the same kinds of changes. a change that affects a package affects all the classes in that package.

Robert C. Martin

komponent1
Komponent

REP: Grupowaniedlareużycia

CCP: Grupowaniedlapotrzebutrzymania

Zbędnereleasy

Kompo-nent

Zmianyrozproszonemiędzykomponentami

Niewygodne (re)użycie

CRP: podziałdlauniknięciazbędnychreleasów

Granicepodziałudeterminujączęstośćreleasów, wygodędevelopmentuikorzystania z komponentu

zale no ci mi dzy modu ami
Zależnościmiędzymodułami
  • Acyclic Dependencies Principle: the dependency structure between packages must be a directed acyclic graph (dag). that is, there must be no cycles in the dependency structure.
  • Stable Dependancies Principle:the dependencies between packages in a design should be in the direction of the stability of the packages. A package should only depend upon packages that are more stable that it is.
  • Stable Abstractions Principle: packages that are maximally stable should be maximally abstract. instable packages should be concrete. The abstraction of a package should be in proportion to its stability.

Robert C. Martin

miara zale no ci
Miarazależności
  • CA (X) = liczbafunkcji/klas/modułów, którezależąod (odwołująsie do) X
  • CE (X) = liczbafunkcji/klas/modułów do którychodwołujesię X
  • N = liczbatypów
  • NA = liczbatypówabstrakcyjnych
  • Niestabilność: I =CE / (CA+ CE)
  • Abstakcyjność: A=NA/N
stabilno
Stabilność

Modułystabilne (trudne do zmiany) niepowinnyzależećodniestabilnych (łatwych do zmiany)

  • Co jest łatwe do zmiany? Klasyfinalne, do którychniewielekodusięodwołuje.
  • Co jest trudne do zmiany? Klasyfinalne, do którychodwołujesiędużokodu, klasybazowe, interfejsy.
  • Co zmieniasięczęsto: klasykonkretne, implementacjelogikibiznesowej
  • Co zmieniasięrzadko: abstrakcje – interfejsy, klasyabstrakcyjne
optymalna sytuacja
Optymalnasytuacja

A

1

Strefabrakuużyteczności:

klasyabstakcyjne, z którychniktniekorzysta

Klasyczystoabstrakcyjne o dużejstabilności

1 I

Strefabólu:

klasykonkretne, b. częstoużywane w kodzie

Klasykonkretne o małejstabilności

Miara pot. problemów: D = |A+I-1|

wiecej nt komponent w
Wiecej nt. komponentów
  • Robert C. Martin - Clean Design, Components Principles.wmv
rozszerzalna architektura z ms
Rozszerzalna architektura z MS
  • KonteneryIoC/DI
    • Wieledostępnychrozwiązań
    • Decoupling, testowanie, scentralizowanarejestracja,
  • MEF
    • Wprowadzony w .Net 4.0
    • Discovery, obsługametadanych, opóźnionakreacja
mef podstawowe poj cia
MEF – Podstawowe pojęcia
  • Export
    • Export dlatypu/funkcji/pól
    • Wymuszonytyp: Export(typeof(Ixxx))
    • Nazwanykontrakt: Export("name",typeof(Ixxx))
    • Export nie jest dziedziczony – możnaużyćInheritedExport
  • Import
    • Dlatypuokreślonego w kodzie
    • Import określonegotypu/kontraktu
mef zalecane praktyki
MEF – Zalecane praktyki
  • Imort/EksportInterfejsówzamiastkonkretnychtypow
  • Stałejakonazwykontraktow
  • stale/ikontrakty w oddzielnych assembly