2012-12-09 18 views
5

Czytałem wiele artykułów mówić o 3 szczeblami architekturę w C#, ale widzę, że:Jak wdrożyć 3 szczeblami architekturę w C#

  • Prawie używać Bussiness Logic Layer (BLL) jako mapowanie obiektowo odpowiedniej tabeli w bazie danych . Ten obiekt BLL ma kilka takich metod:

    + GetData(): zwróć to;

    + Update(this);

    + Insert(this);

    + Delete(this);

  • Ten obiekt BLL wywołuje odpowiedni DAL (warstwa dostępu do danych), aby wykonać odpowiednią tabelę bazy danych.

  • Myślę, że dzięki powyższym metodom możemy uzyskać rekord i zaktualizować go. Ale jeśli mamy wiele rekordów i chcemy umieścić je w zbiorze danych, jak możemy zaktualizować wszystkie rekordy? Czy musimy użyć pętli dla wszystkich rekordów, aby to zrobić?
  • Ponadto w bazie danych, istnieje wiele tabel ze sobą powiązane, tak jak możemy umieścić je w zbiorze danych, upewnij stosunki i dodawać, usuwać rekordy jak przy użyciu BindingSource z Combobox i DataGridView? Jak możemy oddzielić kod w tej sytuacji?

Odpowiedz

3

Istnieją 2 fajne projektu o trzech architektur warstw w języku C#.

3-tier architecture in C# i Three Layer Architecture in C# .NET. Oba projekty są niesamowite dla Ciebie.

enter image description here

enter image description here

+1

Dziękuję bardzo. Czytałem 2 przykłady, mogę zrozumieć nieco podstawową architekturę 3 warstw działa. Ale udostępniają jedynie prosty przykład obiektu (użytkownika) .Jeśli użyjemy "DataSet" do wyświetlenia wszystkich rekordów, w jaki sposób możemy zaktualizować wszystkie zmienione rekordy w "DataSet", zapętlić wszystkie rekordy, czyż nie ?. A jeśli mamy wiele obiektów powiązanych ze sobą, to jest najlepszy sposób, aby wyświetlić dane i zaktualizować je razem! Czy możesz podać mi bardziej złożone przykłady! –

+1

Oba wspomniane artykuły pozwalają, aby warstwa logiki biznesowej była zależna (podobnie jak odniesienie do) warstwy dal. To nie jest droga. Twój model biznesowy (aka model domeny) powinien stanowić centrum twojej aplikacji, reszta ma odniesienia do niego. Dobrą nazwą jest model cebuli. Google to, jest tego warte! – Maarten

+2

Architektura cebuli - http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ – Maarten

11

Powyższy opis bardzo prostą architekturą modelu 3-warstwowej.

  1. DAL (warstwa dostępu do danych) współdziała bezpośrednio z bazą danych, więc cała operacja SQL jest wykonywana tylko w ramach DAL.
  2. BLL (Business Logic Layer) działa jak mediator między DAL a oponą prezentacji.
  3. Brak bezpośredniej komunikacji między DAL a warstwą prezentacji.
  4. Chociaż nie ma fizycznej obecności warstwy Entity, ale Entity enkapsuluje wszystkie informacje/dane i przekazuje je z jednej warstwy do drugiej.
  5. Tak więc cała nazwa obiektu bazy danych i schemat bazy danych są ograniczone wewnątrz DAL, co daje dodatkową warstwę zabezpieczeń aplikacji.
  6. Jak Reguły biznesowe/logiki są zdefiniowane wewnątrz BLL, każda zmiana logiki biznesowej nie wpłynie DAL i warstwy prezentacji

enter image description here

Ten schemat opisuje rzeczywistą realizację 3-warstwowej Model.

  1. Usługa dostępu do danych i serwer bazy danych mogą być hostowane na jednym serwerze.
  2. Głównie SQL Server 2000/2005/2008 lub Oracle mogą być przechowywane na serwerze Windows 2000/2003.
  3. Serwer biznesowy udostępnia całą operację za pomocą usługi Web Service/Remoting/WCF.
  4. Wysoce skonfigurowany serwer z systemem Windows 2000/2003 może być używany do hostowania usługi biznesowej, w przeciwnym razie można do tego celu użyć również Microsoft BizTalk Server.
  5. Poziom prezentacji lub klient wywołuje usługę narażoną na serwerze Business Server za pomocą serwera proxy za pośrednictwem potoku http: //.
  6. Klientem może być dowolny samodzielny komputer z zainstalowaną aplikacją w przypadku aplikacji komputerowej (aplikacja Win-Form lub konsola) lub z przeglądarką do uruchamiania aplikacji sieci Web.
  7. Dane/informacje są enkapsulowane przez encje i przenoszone z jednej lokalizacji do drugiej przez sieć, a następnie cały protokół sieciowy.
+0

Dziękuję bardzo! Zrozumiałem więcej o architekturze 3 warstw i 3 warstwach. Przykład: mamy tabelę przechowującą informacje o użytkowniku, więc każdy użytkownik zmapował obiekt. Jeśli chcemy pokazać wszystkich użytkowników w widoku datagridview i zaktualizować wszystkich użytkowników, którzy zmienili informacje, czy musimy enkapsulować każdą jednostkę odpowiadającą każdemu z wierszy (przy użyciu pętli) w celu aktualizacji? Który jest najlepszy sposób. Podziękować. Przykro mi z powodu mojego złego angielskiego –

+0

Największym problemem "złej warstwy", jaki widziałem przez lata, jest logika biznesowa w warstwie interfejsu użytkownika. Dobra zasada brzmi: "gdybym miał dwie warstwy prezentacji, czy musiałbym duplikować kod, który piszę?" Jeśli tak, przenieś go do warstwy biznesowej. – granadaCoder