Ostatnio widziałem sporo ofert pracy dla programistów, które brzmią mniej więcej tak: „Musi mieć doświadczenie w architekturze N-Tier” lub „Musi być w stanie tworzyć aplikacje N-Tier”.
To prowadzi mnie do pytania, czym jest architektura N-Tier? Jak zdobywa się doświadczenie?
architecture
n-tier-architecture
multi-tier
Joshua Carmody
źródło
źródło
Odpowiedzi:
Wikipedia :
Dyskusyjne jest to, co liczy się jako „poziomy”, ale moim zdaniem musi ono przynajmniej przekroczyć granicę procesu. Albo nazywa się to warstwami. Ale nie musi znajdować się na fizycznie różnych maszynach. Chociaż nie jest to zalecane, to może obsługiwać logiczną Poziom i bazy danych na tym samym polu.
Edycja : Jedną z implikacji jest to, że warstwa prezentacji i warstwa logiki (czasem nazywana warstwą logiki biznesowej) musi przekraczać granice komputera „w poprzek”, czasem przez zawodną, powolną i / lub niepewną sieć. Różni się to bardzo od prostej aplikacji komputerowej, w której dane znajdują się na tym samym komputerze co pliki lub aplikacji sieci Web, w której można bezpośrednio trafić do bazy danych.
W przypadku programowania wielopoziomowego musisz spakować dane w jakiejś formie przenośnej zwanej „zestawem danych” i przelecieć je nad drutem. Klasa DataSet .NET lub protokół Web Services, taki jak SOAP, to tylko kilka takich prób latania obiektów nad drutem.
źródło
Opiera się na tym, jak oddzielić warstwę prezentacji od podstawowej logiki biznesowej i dostępu do danych ( Wikipedia )
źródło
To modne hasło, które odnosi się do takich rzeczy jak normalna architektura sieciowa z np. JavaScript - ASP.Net - Middleware - warstwa bazy danych. Każda z tych rzeczy jest „poziomem”.
źródło
Pobrane ze strony Microsoft .
źródło
Jeśli rozumiem pytanie, wydaje mi się, że pytający naprawdę pyta „OK, więc 3-poziom jest dobrze zrozumiany, ale wydaje się, że istnieje mieszanka szumu, zamieszania i niepewności wokół tego, co 4-poziom lub uogólnienia, architektury N-warstwy oznaczają. Więc ... jaka jest definicja N-warstwy, która jest szeroko rozumiana i uzgodniona? "
To właściwie dość głębokie pytanie. Aby wyjaśnić dlaczego, muszę pójść trochę głębiej. Zrób ze mną.
Klasyczna architektura trójwarstwowa: baza danych, „logika biznesowa” i prezentacja to dobry sposób na wyjaśnienie, w jaki sposób przestrzegać zasady rozdzielenia problemów. Innymi słowy, jeśli chcę zmienić sposób, w jaki „firma” chce obsługiwać klientów, nie powinienem być zmuszony do przeglądania całego systemu, aby dowiedzieć się, jak to zrobić, aw szczególności nie należy rozpraszać decyzji biznesowych chcąc nie chcąc przez kod.
Ten model służył dobrze przez dziesięciolecia i jest klasycznym modelem „klient-serwer”. Szybkie przejście do ofert w chmurze, w których przeglądarki internetowe są interfejsem użytkownika dla szerokiego i fizycznie rozproszonego zestawu użytkowników, a zwykle trzeba dodać usługi dystrybucji treści, które nie są częścią klasycznej architektury 3-warstwowej (i które muszą być zarządzane samodzielnie).
Koncepcja uogólnia, jeśli chodzi o usługi, mikrousługi, sposób dystrybucji danych i obliczeń itd. To, czy coś jest „warstwą”, w dużej mierze sprowadza się do tego, czy warstwa ta zapewnia interfejs i model wdrażania dla usług znajdujących się za (lub poniżej) warstwą. Sieć dystrybucji treści byłaby więc warstwą, ale usługa uwierzytelniania nie.
Teraz idź i przeczytaj inne opisy przykładów architektury warstwy N z myślą o tej koncepcji, a zaczniesz rozumieć problem. Inne perspektywy obejmują podejścia oparte na dostawcy (np. NGINX), równoważenie obciążenia z uwzględnieniem zawartości, izolowanie danych i usługi bezpieczeństwa (np. IBM Datapower), z których wszystkie mogą, ale nie muszą, stanowić wartość dodaną dla danej architektury, wdrożenia i przypadków użycia.
źródło
Rozumiem, że N-Tier oddziela logikę biznesową, dostęp klienta i dane od siebie za pomocą oddzielnych fizycznych maszyn. Teoria jest taka, że jedną z nich można aktualizować niezależnie od innych.
źródło
Aplikacje danych warstwy N to aplikacje danych podzielone na wiele warstw. Nazywane również „aplikacjami rozproszonymi” i „aplikacjami wielowarstwowymi”, aplikacje n-warstwowe oddzielają przetwarzanie na odrębne warstwy, które są dystrybuowane między klientem a serwerem. Podczas opracowywania aplikacji uzyskujących dostęp do danych należy wyraźnie rozdzielić poszczególne warstwy tworzące aplikację.
I tak dalej w http://msdn.microsoft.com/en-us/library/bb384398.aspx
źródło
Podczas konstruowania zwykłego MCV (architektura 3-warstwowa) można zdecydować się na wdrożenie MCV z interfejsami dwupokładowymi, tak że w rzeczywistości można zastąpić określoną warstwę bez konieczności modyfikowania nawet jednego wiersza kodu.
Często widzimy korzyści z tego , na przykład w scenariuszach, w których chcesz mieć możliwość korzystania z więcej niż jednej bazy danych (w którym to przypadku masz podwójny interfejs między warstwą kontrolną a warstwami danych).
Po umieszczeniu go w warstwie widoku (prezentacji), możesz (poczekaj !!) zamienić interfejs USER na inną maszynę, tym samym zautomatyzować PRAWDZIWE wprowadzanie (!!!) - i dzięki temu możesz przeprowadzić żmudne testy użyteczności tysięcy razy bez konieczności dotykania i ponownego dotykania przez użytkownika tych samych elementów w kółko.
Niektórzy opisują taką architekturę 3-warstwową z 1 lub 2 podwójnymi interfejsami jako architekturę 4-warstwową lub 5-warstwową , co domyślnie implikuje podwójne interfejsy.
Inne przypadki obejmują (ale nie wyłącznie) fakt, że ty - w przypadku częściowo lub całkowicie zreplikowanych systemów baz danych - praktycznie byłbyś w stanie uznać jedną z baz danych za „master”, a tym samym miałbyś poziom składający się z master i inny składający się z niewolniczej bazy danych.
Przykład mobilny
Dlatego też wielopoziomowy - lub N-poziomowy - rzeczywiście ma kilka interpretacji, podczas gdy na pewno trzymałbym się 3-poziomowych + dodatkowych poziomów składających się z cienkich dysków interfejsu wklęsłych między nimi, aby umożliwić wspomniane zamiany poziomów, i pod względem testowanie (szczególnie używane na urządzeniach mobilnych), możesz teraz uruchamiać testy użytkownika na prawdziwym oprogramowaniu, symulując stukanie użytkowników w sposób, którego logika sterowania nie może odróżnić od rzeczywistego stukania użytkownika. Jest to prawie nadrzędne w symulacji rzeczywistych testów użytkowników , ponieważ można zarejestrować wszystkie dane wejściowe od użytkowników OTA, a następnie ponownie użyć tych samych danych wejściowych podczas testów regresji.
źródło
Kiedy mówimy o poziomach, zwykle mówimy o procesach fizycznych (o różnej przestrzeni pamięci).
Dlatego w przypadku, gdy warstwy aplikacji zostaną wdrożone w różnych procesach, te różne procesy będą miały różne poziomy.
Dlatego ogólna nazwa to n-tier.
źródło
from https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier
Architektura N-warstwowa dzieli opony aplikacyjne głównie na opony logiczne i fizyczne, a ich podziały na części.
Warstwy są sposobem na rozdzielenie obowiązków i zarządzanie zależnościami. Każda warstwa ma określoną odpowiedzialność. Wyższa warstwa może korzystać z usług na niższej warstwie, ale nie na odwrót.
Poziomy są fizycznie oddzielone, działające na osobnych maszynach. Warstwa może wywoływać bezpośrednio do innej warstwy lub korzystać z asynchronicznego przesyłania komunikatów (kolejki komunikatów). Chociaż każda warstwa może być hostowana na osobnym poziomie, nie jest to wymagane. Kilka warstw może być hostowanych na tym samym poziomie. Fizyczne oddzielenie warstw poprawia skalowalność i odporność, ale także opóźnia dodatkową komunikację sieciową.
Tradycyjna aplikacja trójwarstwowa ma warstwę prezentacji, warstwę środkową i warstwę bazy danych. Środkowy poziom jest opcjonalny. Bardziej złożone aplikacje mogą mieć więcej niż trzy poziomy. Powyższy schemat pokazuje aplikację z dwiema środkowymi warstwami, obejmującymi różne obszary funkcjonalności.
Aplikacja warstwy N może mieć architekturę zamkniętą lub otwartą:
Architektura warstw zamkniętych ogranicza zależności między warstwami. Może to jednak powodować niepotrzebny ruch sieciowy, jeśli jedna warstwa po prostu przekaże żądania do następnej warstwy.
źródło
Aplikacja N-tier to aplikacja, która obejmuje więcej niż trzy komponenty. Jakie są te elementy?
Wszystkie aplikacje społecznościowe, takie jak Instagram, Facebook, usługi na dużą skalę, takie jak Uber, Airbnb, masowe gry online dla wielu graczy, takie jak Pokemon Go, aplikacje z fantazyjnymi funkcjami są aplikacjami n-tier.
źródło
Martin Fowler wyraźnie demonstruje:
Nakładanie warstw jest jedną z najczęstszych technik stosowanych przez projektantów oprogramowania w celu rozbicia skomplikowanego systemu oprogramowania. Widać to w architekturach maszyn, w których warstwy schodzą z języka programowania z wywołaniami systemu operacyjnego do sterowników urządzeń i zestawów instrukcji procesora oraz do bramek logicznych wewnątrz układów. Sieć ma FTP z warstwami na TCP, który jest na IP, który jest na Ethernet.
Myśląc o systemie w kategoriach warstw, wyobrażasz sobie główne podsystemy w oprogramowaniu ułożone w jakiejś formie warstwowego ciasta, gdzie każda warstwa spoczywa na dolnej warstwie. W tym schemacie wyższa warstwa korzysta z różnych usług zdefiniowanych przez niższą warstwę, ale niższa warstwa nie jest świadoma wyższej warstwy. Ponadto każda warstwa zwykle ukrywa swoje dolne warstwy przed warstwami powyżej, więc warstwa 4 korzysta z usług warstwy 3, która korzysta z usług warstwy 2, ale warstwa 4 nie zna warstwy 2. (Nie wszystkie architektury warstw są nieprzezroczyste , ale większość jest - a raczej większość jest w większości nieprzezroczysta).
Podział systemu na warstwy ma wiele ważnych zalet.
• Możesz zrozumieć pojedynczą warstwę jako spójną całość, nie wiedząc wiele o innych warstwach. Możesz zrozumieć, jak zbudować usługę FTP na TCP, nie znając szczegółów działania Ethernetu.
• Możesz zastąpić warstwy alternatywnymi implementacjami tych samych podstawowych usług. Usługa FTP może działać bez zmian przez Ethernet, PPP lub cokolwiek, z czego korzysta firma kablowa.
• Minimalizujesz zależności między warstwami. Jeśli firma kablowa zmieni swój fizyczny system transmisji, pod warunkiem, że sprawi, że IP będzie działać, nie musimy zmieniać naszej usługi FTP.
• Warstwy stanowią dobre miejsce do standaryzacji. TCP i IP są standardami, ponieważ określają sposób działania ich warstw.
• Po zbudowaniu warstwy można jej używać do wielu usług wyższego poziomu. Dlatego TCP / IP jest używany przez FTP, telnet, SSH i HTTP. W przeciwnym razie wszystkie te protokoły wyższego poziomu musiałyby pisać własne protokoły niższego poziomu. Z biblioteki Kyle Geoffrey Passarelli
Warstwowanie jest ważną techniką, ale ma swoje wady.
• Warstwy dobrze uwzględniają niektóre, ale nie wszystkie, rzeczy. W rezultacie czasami pojawiają się zmiany kaskadowe. Klasycznym przykładem tego w warstwowej aplikacji korporacyjnej jest dodanie pola, które musi być wyświetlane w interfejsie użytkownika, musi znajdować się w bazie danych, a zatem musi być dodane do każdej warstwy pomiędzy nimi.
• Dodatkowe warstwy mogą zaszkodzić wydajności. Na każdej warstwie rzeczy zwykle trzeba przekształcić z jednej reprezentacji do drugiej. Jednak hermetyzacja podstawowej funkcji często zapewnia przyrost wydajności, który z nadwyżką kompensuje. Warstwa kontrolująca transakcje może zostać zoptymalizowana, a następnie przyspieszy wszystko. Ale najtrudniejsza część architektury warstwowej decyduje, jakie warstwy mieć i jaka powinna być odpowiedzialność każdej warstwy.
źródło