myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Wie kann ich das Drei-Schichten-Modell auf meine Applikation anwenden?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich das Drei-Schichten-Modell auf meine Applikation anwenden?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 107


Frokuss ist offline

Wie kann ich das Drei-Schichten-Modell auf meine Applikation anwenden?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Moin Leute, hatte vor ein paar Tagen mal was geschrieben und das ganze ist dann auf das 3-Schichten-Modell hinausgelaufen - aber die Grundfrage war in dem Thread halt eine andere, weshalb ich einen neuen Thread aufmachen... Falls das doof ist - könnt ihr den ja hier einfach schließen und im anderen Thread antworten. Und zwar dieser:  Vererbung gleicher Methoden

Also:
Nehmen wir an, ich möchte eine Netzwerkanwendung schreiben - von mir aus sowas wie WhatsApp, die mit nem Trayicon unten in der Leiste ist und mehrere verschiedene Fenster aufrufen kann... Wie bekomme ich das Schichten-Modell dadrunter?

Ich meine, das Schichten-Modell besagt doch, das quasi alles von der UI aus los geht O.o Aber bei einer Netzwerkanwendung brauche ich doch auch irgendwie einen Impuls von außen - sprich z.B. die Nachricht von einem Kontakt.

Sprich, habe ich dann nicht einen Thread offen, der quasi meine Datenzugriffsschicht representiert? Und diese triggert dann doch meine UI? Das wäre dann doch ein bruch, oder?

Und dann hätte ich da noch eine weitere Frage... Wie genau trenne ich die Logik von der UI-Schicht? Reicht es aus, wenn ich meine UI-Klasse in partialklassen trenne? Oder erstelle ich dafür eine seperate Klasse für jedes Fenster... oder erstelle ich eine große Logik-Klasse die Fenster-Übergreifend ist und hoffe, dass ich Synergieeffekte habe?

Und noch eine letzte Frage :-D
Folgend eine Event-Methode die zwei Wörterbücher durchläuft und bei denen die Breite anpasst. Dabei handelt es sich um direkte "Kinder-Knoten". Was hiervon wäre nun UI-Schicht und was genau wäre Logikschicht?

C#-Code:
        public Dictionary<string, Liste> objChildsL = new Dictionary<string, Liste>();//"Panel"
        public OrderedDictionary objChildsLE = new OrderedDictionary();//Test für ListenElemente (Label)

        private void Evt_Resize(object sender, EventArgs evt){
            foreach(KeyValuePair<string, Liste> l in objChildsL){
                l.Value.Width = Width - Styles.ListElementEinruecken;
            }

            foreach(KeyValuePair<string, ListenElement> kvp in objChildsLE){
                kvp.Value.Width = Width - Styles.ListElementEinruecken;
            }
        }

Liebe Grüße Frokuss

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Frokuss am 29.04.2019 18:06.

29.04.2019 18:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.790
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Frokuss:
Ich meine, das Schichten-Modell besagt doch, das quasi alles von der UI aus los geht O.o

Nein, eine UI ist keine Pflicht in einem Mehrschichtenmodell, kann aber Bestandteil dessen sein.

Zitat von Frokuss:
Sprich, habe ich dann nicht einen Thread offen, der quasi meine Datenzugriffsschicht representiert?

Ein Thread ist ein Runtimefeature, was kein Bestandteil in einer Architektur ist.
Eine Architektur deckt aber keine implizieten Implementierungsfeatures wie Threads ab.

Zitat von Frokuss:
Und diese triggert dann doch meine UI?

Im Prinzip hört Deine UI auf ein Event, das die die darunterliegende Schicht zur Verfügung stellt.
Das ist kein Bruch; die darunterliegende Schicht kennt schließlich den Eventkonsument nicht technologisch.

Zitat von Frokuss:
Reicht es aus, wenn ich meine UI-Klasse in partialklassen trenne?

Nein. Partial ist ein Sprachfeature, was ebenfalls nicht Teil einer Architektur ist.

Eine Trennung findet im Prinzip physikalisch statt; in .NET i.d.R. basierend auf Namespaces - kann aber auch ganz in getrennten Projekten sein.
Kommt individuell drauf an.

Zitat von Frokuss:
d was genau wäre Logikschicht?

Darstellung => UI
29.04.2019 18:31 Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 107

Themenstarter Thema begonnen von Frokuss

Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Okay... also wäre das Code-Ausschnitt in der UI einzuordnen - da es was mit der Darstellung zu tun hat. Danke. Dann hoffe ich, dass ich das mal so langsam auf die Kette bekomme :-D

Lieben Gruß Frokuss
29.04.2019 19:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.790
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Stell Dir einfach immer wieder die Frage: wäre es ein sehr großer Aufwand, wenn mein Chef nun statt X einfach Y haben will?
Das klappt super in der Modularisierung von Storage (Datenbank, Dateien...) und auch in der UI.

Wenn Du die Modularisierung gut gemacht hast, dann hast Du so wenig wie möglich Aufwand, weil Du von MySQL auf MSSQL wechseln musst - oder Deine Logik sowohl von einer Konsolenanwendung, einer Webanwendung oder einer Desktop-Anwendung angesprochen werden kann.

Bei der Datenbank bekommt man dank ADO.NET zumindest in der .NET Welt schon viel geschenkt; man muss es nur korrekt anwenden.
29.04.2019 22:18 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.07.2019 04:48