Frage

Ich bin ziemlich neu in c # und ich versuche, eine n-tiered Web-Anwendung zu schreiben. Um sicher zu gehen, dass ich die Logik und der Code an der richtigen Stelle habe ich nur noch eine Frage, wo meinen Code zu setzen.

Ich habe drei Hauptteil:

  1. Data Access Code -. In einem Ordner mit dem Namen "Businesslogic" in meinem Ordner App_Code

  2. Business-Logik-Code -. In einem Ordner mit dem Namen "Data Access" in meinem Ordner App_Code

  3. Die Präsentationsschicht - Alle UI

Wenn zum Beispiel ich brauche einen SqlDataReader zu schreiben Datensätze aus der Datenbank abgerufen werden, wo, wo würde ich den Code physisch schreiben? In der BLL oder die DAL?

IE Von der Präsentationsschicht ich den BLL-Code aufrufen.

ContentBLL content = new ContentBLL();
//some code to call the BLL layer...

Dies ist, wo ich verwirrt zu erhalten beginnen. In der Business-Schicht-Logik-Schicht, die ich rufe schreibe ich den SqlDataReader Code hier oder erstelle ich einen weiteren Schritt und schreiben Sie den SQLDataReader Code in der Datenzugriffsebene.

IE Im BLL soll ich hinzufügen, eine Methode, die die DAL genannt? Z

public static ContentBLL GetPageContent(intID)
{
return ContentDAL.GetItem(ID)
}

und dann in meinem DAL Ich habe eine Methode, um die tatsächlichen SqlDataReader auszuführen Z

public static ContentBLL GetItem(int id)
{
//return the SqlDataReader code...
}

Ich habe versucht, aus den Tutorials auf der asp.net Website jedoch für die DAL im Tutorial sie stattdessen Datensätze lernen verwenden. Jede Hilfe wäre sehr geschätzt.

War es hilfreich?

Lösung

Meine typische Vorgehensweise ist es, was ich scherzhaft das 2,5-Tier-Methode aufrufen.

Bei dieser Methode verwende ich den folgenden Ansatz:

                Presentation Layer

                Businesss Object Layer / Data Serialization

                Database Service Layer

Jedes Business-Objekt in der Business-Schicht hat einen Konstruktor, der eine IDataReader akzeptiert. Dieser Leser wird dann lesen Sie das Objekt zu füllen.

Die Datenbankebene wird wickelt alle DB-Zugriffsanforderungen und gibt Lesern.

Dies ist zwar nicht so rein wie einige Leute möchten, die alternativen stumm Containerklassen machen die Daten zwischen den Ebenen zu ordnen, und ich lieber nur eine IDataReader verwenden.

Zusätzlich wird durch eine IDataReader verwenden und nicht ein SqlDataReader, ich meine DAL noch lose gekoppelt mit und jede Form von persistance umsetzen kann, nicht nur SQLServer.

Andere Tipps

Das klingt für mich wie ein klassischer Fall von Over-Engineering.

ich argumentieren pflegt die Tatsache, dass ein wenig Over-Engineering während der Lernphase erforderlich ist, aber ich denke, an jedem Punkt, wenn es mehr Verwirrung erzeugt Sie einen Schritt zurück müssen und Ihren Ansatz überdenken.

Versuchen Sie, ein wenig mehr über ASP.NET zu lernen und werden nicht so über die Semantik gestresst. Wenn Sie einen offenen Geist für Refactoring Code halten und ermöglichen, werden Sie wahrscheinlich in der Lage sein, sich die Antwort auf Ihre Frage zu geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top