Pregunta

Soy bastante nuevo en c # y estoy tratando de escribir una aplicación web de n niveles. Para asegurarme de poner la lógica y el código en el lugar correcto, solo tengo una pregunta sobre dónde colocar mi código.

Tengo tres secciones principales:

  1. Código de acceso a datos: dentro de una carpeta llamada " BusinessLogic " dentro de mi carpeta App_Code.

  2. Código de lógica de negocios: dentro de una carpeta llamada " DataAccess " dentro de mi carpeta App_Code.

  3. La capa de presentación: todas las interfaces de usuario

Si, por ejemplo, necesito escribir un SqlDataReader para recuperar registros de mi base de datos, ¿dónde escribiría físicamente el código? ¿En el BLL o el DAL?

IE Desde la capa de presentación, llamo al código BLL.

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

Aquí es donde empiezo a confundirme. En la capa lógica de la capa empresarial a la que estoy llamando, escribo aquí el código SqlDataReader o creo un paso más y escribo el código SQlDataReader en el Nivel de acceso a datos.

IE En el BLL, ¿debo agregar un método que llame al DAL? E.G

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

y luego en mi DAL tengo un método para realizar el SqlDataReader real E.G

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

He estado tratando de aprender de los tutoriales en el sitio web asp.net, sin embargo, para el DAL en el tutorial ellos usan conjuntos de datos. Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Mi enfoque típico es lo que llamo en broma el método de nivel 2.5.

En este método, utilizo el siguiente enfoque:

                Presentation Layer

                Businesss Object Layer / Data Serialization

                Database Service Layer

Cada objeto de negocio en la capa empresarial tiene un constructor que acepta un IDataReader. Luego se lee este lector para completar el objeto.

El nivel de la base de datos envuelve todas las solicitudes de acceso a la base de datos y devuelve a los lectores.

Si bien esto no es tan puro como a algunas personas les gustaría, la alternativa es crear clases de contenedor para calcular los datos entre niveles, y prefiero usar un IDataReader.

Además, al usar un IDataReader y no un SqlDataReader, todavía estoy acoplado con mi DAL y puedo implementar cualquier forma de persistencia, no solo SQLServer.

Otros consejos

Esto me suena como un caso clásico de ingeniería excesiva.

No discutiré el hecho de que se requiere un poco de ingeniería excesiva durante la fase de aprendizaje, pero creo que si en algún punto genera más confusión, debe retroceder y reconsiderar su enfoque.

Intente aprender un poco más sobre ASP.NET y no se preocupe tanto por la semántica. Si mantienes una mente abierta y permites que tu código sea refactorizado, es probable que puedas dar la respuesta a tu pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top