Odpowiedzi:
Warstwy logiczne są jedynie sposobem na uporządkowanie kodu. Typowe warstwy to Prezentacja, Biznes i Dane - tak samo jak tradycyjny model trójwarstwowy. Ale kiedy mówimy o warstwach, mówimy tylko o logicznej organizacji kodu. W żaden sposób nie sugeruje się, że warstwy te mogą działać na różnych komputerach lub w różnych procesach na jednym komputerze, a nawet w jednym procesie na jednym komputerze. Wszystko, co robimy, to omawianie sposobu organizacji kodu w zbiór warstw zdefiniowanych przez określoną funkcję.
Warstwy fizyczne dotyczą jednak tylko tego, gdzie działa kod. W szczególności warstwy to miejsca, w których warstwy są rozmieszczane i w których działają warstwy. Innymi słowy, warstwy są fizycznym rozmieszczeniem warstw.
Źródło: Rockford Lhotka, czy wszystkie aplikacje powinny być n-tier?
Przeczytaj post Scotta Hanselmana na ten temat: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx
Pamiętaj jednak, że w „Scott World” (który, mam nadzieję, jest także w twoim świecie :)) „Tier” jest jednostką wdrożeniową, podczas gdy „Layer” to logiczne rozdzielenie odpowiedzialności w kodzie. Możesz powiedzieć, że masz system „3-warstwowy”, ale korzystaj z niego na jednym laptopie. Możesz powiedzieć, że masz system „3-warstwowy”, ale tylko strony ASP.NET komunikują się z bazą danych. Przyjaciele mają siłę.
Warstwy odnoszą się do logicznej separacji kodu. Warstwy logiczne pomagają lepiej organizować kod. Na przykład aplikacja może mieć następujące warstwy.
1) Warstwa prezentacji lub warstwa interfejsu użytkownika 2) Warstwa biznesowa lub warstwa logiki biznesowej 3) Warstwa dostępu do danych lub warstwa danych
Powyżej trzy warstwy znajdują się we własnych projektach, mogą być 3 projekty lub nawet więcej. Kiedy kompilujemy projekty, otrzymujemy odpowiednią bibliotekę DLL warstwy. Mamy teraz 3 biblioteki DLL.
W zależności od sposobu wdrażania naszej aplikacji możemy mieć od 1 do 3 poziomów. Ponieważ mamy teraz 3 biblioteki DLL, jeśli wdrażamy wszystkie biblioteki DLL na tym samym komputerze, mamy tylko 1 warstwę fizyczną, ale 3 warstwy logiczne.
Jeśli zdecydujemy się wdrożyć każdą bibliotekę DLL na osobnej maszynie, mamy 3 warstwy i 3 warstwy.
Tak więc warstwy są separacją logiczną, a warstwy są separacją fizyczną. Możemy również powiedzieć, że warstwy to fizyczne rozmieszczenie warstw.
Dlaczego zawsze próbujesz używać złożonych słów?
Warstwa = częścią kodu , jeśli aplikacja jest ciasto, to jest kawałek.
Tier = fizyczną maszynę , serwer.
Warstwa obsługuje co najmniej jedną warstwę.
Przykład warstw:
Poziom:
Twój kod jest hostowany na serwerze = Twój kod jest hostowany na poziomie.
Twój kod jest hostowany na 2 serwerach = Twój kod jest hostowany na 2 poziomach.
Na przykład jedna maszyna hostująca samą witrynę sieci Web (warstwa prezentacji), inna maszyna lepiej zabezpiecza hosting bardziej wrażliwego na bezpieczeństwo kodu (prawdziwy kod biznesowy - warstwa biznesowa, warstwa dostępu do bazy danych itp.).
Istnieje tak wiele korzyści z wdrożenia architektury warstwowej. Jest to trudne i prawidłowe wdrożenie aplikacji warstwowej wymaga czasu. Jeśli masz jakieś, zobacz ten post od Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx
W prostym języku angielskim, Tier
odnosi się do „każdego w szeregu rzędów lub poziomów konstrukcji umieszczonych jeden nad drugim”, podczas gdy Layer
odnosi się do „arkusza, ilości lub grubości materiału, zwykle jednego z kilku, pokrywającego powierzchnię lub korpus „.
Warstwa to jednostka fizyczna , w której działa kod / proces. Np .: klient, serwer aplikacji, serwer bazy danych;
Warstwa jest logiczną jednostką , jak zorganizować kod. Np .: prezentacja (widok), kontroler, modele, repozytorium, dostęp do danych.
Warstwy reprezentują fizyczne oddzielenie prezentacji, biznesu, usług i funkcjonalności danych twojego projektu na osobnych komputerach i systemach.
Warstwy to logiczne grupy komponentów oprogramowania, które tworzą aplikację lub usługę. Pomagają rozróżniać różne rodzaje zadań wykonywanych przez komponenty, ułatwiając tworzenie projektu, który obsługuje ponowne użycie komponentów. Każda warstwa logiczna zawiera wiele dyskretnych typów komponentów pogrupowanych w podwarstwy, przy czym każda podwarstwa wykonuje określony typ zadania.
Dwuwarstwowy wzorzec reprezentuje klienta i serwer.
W tym scenariuszu klient i serwer mogą istnieć na tym samym komputerze lub mogą znajdować się na dwóch różnych komputerach. Poniższy rysunek ilustruje typowy scenariusz aplikacji sieci Web, w którym klient wchodzi w interakcję z serwerem sieci Web zlokalizowanym w warstwie klienta. Ta warstwa zawiera logikę warstwy prezentacji i wszelką wymaganą logikę warstwy biznesowej. Aplikacja sieci Web komunikuje się z oddzielnym komputerem obsługującym warstwę bazy danych, która zawiera logikę warstwy danych.
Zalety warstw i poziomów:
Nakładanie warstw pomaga zmaksymalizować łatwość konserwacji kodu, zoptymalizować sposób działania aplikacji, gdy jest wdrażana na różne sposoby, oraz zapewnia wyraźne rozgraniczenie między lokalizacjami, w których należy podjąć określone decyzje dotyczące technologii lub projektu.
Umieszczenie warstw na osobnych warstwach fizycznych może poprawić wydajność, rozkładając obciążenie na wiele serwerów. Może także pomóc w bezpieczeństwie, segregując bardziej wrażliwe komponenty i warstwy w różnych sieciach lub w Internecie w porównaniu z intranetem.
Aplikacja 1-poziomowa może być aplikacją 3-warstwową.
Tak, moi drodzy przyjaciele, powiedzieli poprawnie. Warstwa jest logiczną partycją aplikacji, podczas gdy warstwa jest fizyczną partycją systemu, a partycja warstwy zależy od partycji warstwy. Podobnie jak aplikacja wykonywana na jednym komputerze, ale podąża za architekturą trójwarstwową, więc możemy powiedzieć, że architektura warstwowa może istnieć w architekturze warstwowej. W prostym znaczeniu architektura 3-warstwowa może zostać zaimplementowana na pojedynczej maszynie, wtedy możemy powiedzieć, że jest to architektura 1-poziomowa. Jeśli zaimplementujemy każdą warstwę na osobnym komputerze, wówczas będzie się nazywać architektura 3-poziomowa. Warstwa może również działać na kilku poziomach. W komponencie związanym z architekturą warstwową łatwo się ze sobą komunikuje.
Podobnie jak podamy poniżej podaną architekturę
Klient może wchodzić w interakcje z „warstwą prezentacji”, ale ze względów bezpieczeństwa uzyskuje dostęp do publicznego komponentu pod warstwą (takiego jak komponent publiczny warstwy logiki biznesowej) do „warstwy logiki biznesowej”.
P * dlaczego używamy architektury warstwowej? ponieważ jeśli zaimplementujemy architekturę warstw, zwiększymy wydajność naszych aplikacji
==> bezpieczeństwo
==> łatwość zarządzania
==> skalowalność
inne potrzeby, takie jak po opracowaniu aplikacji, musimy zmienić dbms lub logikę biznesową itp., to jest konieczne dla wszystkich.
P * dlaczego używamy architektury poziomów?
ponieważ fizyczna implementacja każdej warstwy daje lepszą wydajność, bez architektury warstwowej nie możemy wdrożyć architektury warstwowej. oddzielna maszyna do implementacji osobnej warstwy, a osobna warstwa to implementacja jednej lub więcej warstw, dlatego z niej korzystamy.
używa do celów odporności na uszkodzenia. ==> łatwy w utrzymaniu.
Prosty przykład
Podobnie jak bank otwarty w komorze, w których kategoriach pracownik:
wszystkie są powiązanymi komponentami systemu.
Jeśli idziemy do banku na pożyczkę, najpierw bramkarz z uśmiechem otwiera drzwi, a następnie zbliżamy się do osoby, która wprowadza się w cały schemat pożyczki, a następnie idziemy do kabiny menedżera i przekazujemy pożyczkę. Potem w końcu idziemy do kasy wziąć pożyczkę. Są to warstwy architektury banku.
Co z poziomem? Oddział banku jest otwarty w mieście, potem w innym mieście, potem w innym, ale jakie jest podstawowe wymaganie każdego oddziału
dokładnie ta sama koncepcja warstwy i warstwy.
Warstwy są logicznym rozdziałem related-functionality[code]
w aplikacji, komunikacja między warstwami jest jawna i luźno powiązana. [Logika prezentacji, logika aplikacji, logika dostępu do danych]
Poziomy to fizyczne oddzielenie layers
[hostowanych na poszczególnych serwerach] na pojedynczym komputerze (procesie).
Jak pokazano na schemacie:
1-Tier & 3-Layers « App Logic with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer « Browser View[php], App Logic[jsp], DataStorage
Zalety n- poziomu :
lepsza
skalowalność bezpieczeństwa : wraz z rozwojem organizacji Możesz skalować DB-Tier za pomocą klastrowania DB bez dotykania innych poziomów.
Utrzymywalność : Projektant stron internetowych może zmienić kod widoku, bez dotykania innych warstw na innych poziomach.
Łatwa aktualizacja lub ulepszenie [Np .: Możesz dodać dodatkowy kod aplikacji, uaktualnić miejsce do przechowywania, a nawet dodać wiele warstw prezentacji dla oddzielnych urządzeń, takich jak telefon, tablet, komputer]
Podoba mi się poniższy opis z Microsoft Application Architecture Guide 2
Warstwy opisują logiczne grupowanie funkcjonalności i komponentów w aplikacji; natomiast warstwy opisują fizyczny rozkład funkcjonalności i komponentów na oddzielnych serwerach, komputerach, sieciach lub zdalnych lokalizacjach. Chociaż obie warstwy i warstwy używają tego samego zestawu nazw (prezentacja, biznes, usługi i dane), pamiętaj, że tylko warstwy oznaczają fizyczną separację.
Używam warstw do opisu architekta lub stosu technologii w komponencie moich rozwiązań. Korzystam z warstw, aby logicznie pogrupować te komponenty, zwykle w przypadku komunikacji sieciowej lub międzyprocesowej.
Technicznie poziom może być rodzajem minimalnego środowiska wymaganego do uruchomienia kodu.
Np. Hipotetycznie może działać aplikacja 3-poziomowa
1 maszyna fizyczna z 3 maszynami wirtualnymi bez systemu operacyjnego.
(To była aplikacja 3-warstwowa)
1 maszyna fizyczna z 3 maszynami wirtualnymi z 3 różnymi / tymi samymi systemami operacyjnymi
(To była aplikacja warstwy 3 (OS))
1 maszyna fizyczna z 1 maszyną wirtualną z 1 systemem operacyjnym, ale 3 serwerami aplikacji
(To była aplikacja warstwy 3 (AppServer))
1 maszyna fizyczna z 1 maszyną wirtualną z 1 systemem operacyjnym z 1 serwerem aplikacji, ale 3 DBMS
(To była aplikacja warstwy 3 (DBMS))
1 maszyna fizyczna z 1 maszyną wirtualną z 1 systemem operacyjnym z 1 serwerami aplikacji i 1 DBMS, ale 3 skoroszytami programu Excel.
(To była aplikacja warstwy 3 (AppServer))
Skoroszyt programu Excel to minimalne wymagane środowisko do uruchomienia kodu VBA.
Te 3 skoroszyty mogą znajdować się na jednym fizycznym komputerze lub wielu.
Zauważyłem, że w praktyce ludzie mają na myśli „Poziom systemu operacyjnego”, kiedy mówią „Poziom” w kontekście opisu aplikacji.
To znaczy, jeśli aplikacja działa na 3 osobnych systemach operacyjnych, to jest to aplikacja trójwarstwowa.
Byłby to pedantycznie poprawny sposób opisywania aplikacji
Aplikacja „z 1 na 3 poziomy, działająca na 2 poziomach”.
:)
Warstwy to tylko rodzaje kodu w odniesieniu do funkcjonalnego podziału obowiązków w aplikacji (np. Prezentacja, dane, bezpieczeństwo itp.)
Kiedy mówisz o prezentacji, usłudze, danych, warstwie sieci, mówisz o warstwach. Kiedy „wdrażasz je osobno”, mówisz o poziomach.
Warstwy to przede wszystkim wdrożenie. Weź to w ten sposób: Mamy aplikację, która ma frontend utworzony w Angular, ma backend jako MongoDB i warstwę środkową, która współdziała między frontendem a backendem. Kiedy więc ta aplikacja frontendowa, aplikacja bazy danych i warstwa środkowa zostaną wdrożone oddzielnie, mówimy, że jest to aplikacja 3-poziomowa.
Korzyści: jeśli będziemy musieli skalować nasz backend w przyszłości, musimy tylko skalować backend samodzielnie i nie ma potrzeby skalowania frontendu.