• a

  •  

    marzo 2009
    L M X J V S D
    « feb   sep »
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
  • Nube de Categoria

ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (3ra. parte)

Perdon por la demora, pero ahora seguiremos con este tutorial en su 3ra. parte.

Dare un resumen, aqui haremos que las 3 capas se comuniquen via una entidad definida. Esta entidad es la que “viajara” a traves de nuestras distintas capas llevando o trayendo informacion.

Para esta tercera parte, esta comunacion sera una simulacion a una consulta en una base de datos. La comunicacion “real” sera para que en la proxima entrega, solo cambiaremos el codigo de esta funcion sin tocar el resto del proyecto.

Agregaremos a nuestra capa de Datos una nueva clase que denominaremos BaseDatos.cls

3capas041

Luego, crearemos una funcion denominada daConsultaCliente. El “da” lo agrego por el ingles DataAccess y es para mantener una correlacion con la capa de negocios que veremos mas adelante.

3capas043

Antes de continuar, una FE DE ERRATAS: en la entrega anterior, les hice hacer una referencia a la libreria System.Data.SqlClient en la Capa de Datos. Como por defecto ya esta la referencia System.Data, esto provoca problemas de ambiguedad. Como muestra la figura a continuacion:

3capas042

Asi que la referencia System.Data.SqlClient (indicada de la 2da. Parte) eliminenla con el boton derecho (Remove Reference)

Ahora entrego el codigo de la funcion daConsultaCliente.

Codigo VB.NET

Imports System.Data.SqlClient
Imports CapaEntidades

Public Class BaseDatos

Public Function daConsultaCliente(ByVal NroCta As Integer) As CapaEntidades.cliente
Dim miCliente As New CapaEntidades.cliente

miCliente.nro_cuenta = 1
miCliente.rut = 999
miCliente.dv = “k”
miCliente.nombre_cliente = “juan”
miCliente.apellido_cliente = “perez”

Return miCliente

End Function

End Class

Aqui se hacen los IMPORTS a las librerias de SQLCLIENT y de la CAPAENTIDADES. La funcion devuelve un objeto del tipo “cliente” que es nuestra ENTIDAD.

Luego, le asigno valores a discrecion para este ejemplo. Y finalmente retorno mi variable de tipo “cliente”.

Ahora nos vamos a la Capa de Negocios donde agregaremos una nueva clase que se llamara ReglasNegocio.cls

3capas043

Luego crearemos una funcion que ejecute daConsultaCliente en la Capa de Datos. Esta se llamara blConsultaCliente. El “bl” es por BussinessLogic , ¿ya? :)

Esta funcion, recibira el parametro enviado por la Capa Cliente (la pagina web en este caso) y solicitara la consulta a la Capa de Datos recibiendo un objeto del tipo “cliente”. El cual sera devuelto a la Capa Cliente.

3capas044

Codigo VB.NET

Imports CapaEntidades
Imports CapaDatos

Public Class ReglasNegocio

Public Function blConsultaCliente(ByVal NroCta As Integer) As CapaEntidades.cliente
Dim miCliente As New CapaEntidades.cliente
Dim miBase As New BaseDatos

miCliente = miBase.daConsultaCliente(NroCta)

Return miCliente
End Function

End Class

Finalmente, en nuestra pagina web haremos un llamado a la Capa de Negocios para que traiga los datos solicitados.

Para esto, programaremos el evento Page_Load, para hacer de manera simple.

Crearemos una objeto del tipo Capa de Negocios para poder solicitar los datos. Una vez hecha la solicitud, recibiremos un objeto del tipo “cliente” que es nuestra entidad, la cual sera desplegada en pantalla.

3capas047

Codigo VB.NET

Imports CapaEntidades
Imports CapaNegocios

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim RegNeg As New ReglasNegocio
Dim miCliente As New cliente

miCliente = RegNeg.blConsultaCliente(1)

Response.Write(“rut :” & miCliente.rut & “-” & miCliente.dv & “
“)
Response.Write(“nombre :” & miCliente.nombre_cliente & “
“)
Response.Write(“apellido :” & miCliente.apellido_cliente & “
“)

End Sub

End Class

Si se preguntan por el numero 1 que indico a la funcion, por el momento es solo para completar codigo (mas adelante lo ocuparemos como corresponde). Finalmente, el resultado debe ser el siguiente:

3capas046

Bueno, eso seria la (tan esperada) 3ra Parte, es una simulacion pero sirve para entender como se usan las Entidades en las 3 Capas.

En la 4ta. entrega, veremos como modificar la capa de datos para que haga una consulta a una base de datos SQL Server.

Links:
ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (1ra. parte)

ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (2da. parte)

ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (4ta. parte)

TYDW.-

26 comentarios

  1. Cuando cargue el proyecto que tenia guardado de las entragas anteriores no se cargo nada. Es decir cargue el archivo 3Capas.sln que esta en la carpeta 3capas y abre pero no aparecen las demas carpetas, asi debe pasar o tengo que hacer todo lo anterior para cargar el proyecto?

  2. es extraño eso que te ocurrio

    pero si no te cargan los proyectos, los puedes agregar a mano.

    revisa el proyecto y me avisas como te fue.

    atte.

  3. Cuando lo guarde otra vez me guardo un proyecto con nombre Web3Capas.sln, ese si abre todo completo pero me lo guardo en la ruta: \Mis documentos\Visual Studio 2005\Projects\Web3Capas.
    Si es ese el nombre del proyecto que debe cargarlo todo?

  4. Puxa esta bacan pero me sale un erro al executar

    dice:

    nose puede iniciar la depuracioon en el servidor web.
    el servidor no admite la depuracion de aplicaciones del servidor ATL O ASP.NET.

    q debo hacer

  5. [...] ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (3ra. parte) [...]

  6. esta intersante aunque es un ejemplo uy pobre pero bueno ya he hcho capas en windows form algo complejas asi que las pasare a asp net solo que no sabia como armas las capas pero muy bien gracias

  7. Hola, que buen material, espero que tu valioso tiempo te de la oportunidad de darnos la 4ta parte pronto

    un saludo

    desde Mexico

  8. que tal me parece muyinteresate, por que fechas nos podrias dar la 4ta parte ?

    felicidades y gracias

  9. primero que todo muchas gracias… muy buena explicacion, Espero pronto sea la 4ta entrega y si es en C# seria monumental :D . muchas gracias.

  10. Perfecto..!!!

    Para cuando la siguiente entrega..???

  11. Hola Sr, estoy siguiendo tu tutorial y la verdad que estas en 10 puntos, estoy impaciente por los nuevos capitulos

    Gracias por tu tiempo

  12. Por casualidad tienes algun tutorial o manual de Csharp con Visual Estudio(2005) ya que estoy recien en el tema de Csharp y no entiendo mucho, aunque tengo mas que claro que este lenguaje es copia de Java, lo cual lo encuentro que tiene una ensalada de parametros, funciones etc, y necesito entenderlo pero no solamente como concepto, sino a modo de utilizacion de aplicaciones (visual with Csharp)

    Se le agradeceria bastante su ayuda

  13. ESTOY EMBALADO SIGUIENDO EL TUTORIAL
    QUE ADEMAS ESTA MU WENO
    AUN ESPERANDO LA 4A ENTREGA

    SALUDOS

  14. Hola, revisando tu post, observo que desde la vista estas haciendo referencia a la capa de entidades, lo cual no esta bien… te recomendaria que implementes un abstract factory… y de esta forma se trabaja con 3 capas bien separadas unas de otras…

  15. que tal cuando la 4ta parte???

  16. Y la 4ta parte me urge mucha :(

  17. Saludos, muchas gracias por el ejemplo publicado, es de mucha ayuda, para cuando estará la cuarta entrega???

  18. Hola, excelente el tutorial, segui todos los pasos pero al compilar y correr la aplicacion me arroja el siguiente error:

    Unable to start debugging on the web server. The web server is not configured correctly. see help for common configuration errors…

  19. Saludos TDWY:

    En tu ejemplo usas la entidad “cliente”

    namespace CapaEntidades
    {
    public class cliente
    {
    nro_cuenta
    rut
    dv
    nombre_cliente
    apellido_cliente
    }
    }
    probablemente tenga esa forma claro con los modificares respectivos, su tipo de dato y sus contructores…

    Voy formulando el escenario para luego hacer plantear mi duda; quiero listar un conjuto de clientes, pero solo los campos:
    nro_cuenta
    nombre_cliente
    apellido_cliente

    La primera opcion seria usar la entidad cliente con todos sus campos y conseguir el conjunto de datos, como solo se desea motrar 3 campos pues en la UI filtramos en el GridView o en destino que se imprimen los datos.

    La segunda opcion; es sololamente conseguir los datos de esos 3 campos, para lo cual tendriamos que prescindir de la entidad original y contruir una entidad reducida. Esto por simple logica de que no requiero mas que 3 campos de la entidad original y lo segundo podria ser por temas de performance.

    El caso es que si se considera la primera opcion, en casos donde hay mas tablas relacionadas las entidades estan relacionas con otras y para mostrar un par de datos tendriamos que traer todo el paquete.

    En el caso de la segunda opcion es tomarse el trabajo de construir versiones reducidas (algunas veces quitando la relacion con otras entidades) y ademas construir sus DAL y BLL de cada version.

    Que solucion tomarian? y si tienen otras opciones cuales serian?. Gracias por leer y mas aun si pueden comentar algo al respecto.

    P.D.: estoy enterado de herramientas como el ADO.Net Entity framework, en que puedes armar consultas con la misma entidad, lo que no se es como funciona internamente. Es decir internamente trae todos los datos y solo me enseña los que quiero mostrar?.

    Saludos.

  20. [...] ASP NET: Como crear una Aplicacion de 3 Capas con Entidades (3ra. parte) [...]

  21. Cuando voy al code behind del Default.aspx y hago
    Imports CapaNegocios me dice que no contiene ningún miembro publico o que no se encuentra.
    Y en la capa Negocios, en la clase ReglasNegocio dice bien clarito: Public Class ReglasNegocio.
    Actualice, grabe los cambios, pero no sé que puede pasar. Revisé las referencias de la 2da parte donde especificaste las dependencias y no veo donde puede estar el problema.
    Tendrás idea por qué no puedo ver desde la pagina la CapaNegocios?

    Muy bueno lo que te mandaste aca.
    Saludos y gracias!

  22. Ya solucioné el problema, fui a las propiedades de la CapaNegocios, resulta que al principio la había guardado con el nombre por defecto y se ve que al renombrar no se habían cambiado todas las propiedades.

    Gracias igualmente!!
    Saludos!

  23. Hola estoy siguiendo los pasos pa’ crear la Solucion 3 capas ASP:NET, pero me quedado atascado(trabado) en el momento de crear el esquema XSDClientes.xsd. Lo creo, pero no logro meter los elementos, pq no puedo ver hallar Vista Esquema, donde estaria la barra de herramientas Esquema, para agregar los elementos a el esquema de forma visual, no se si me he hecho entender. Yo estoy utilizando VStudio 2008.
    Un saludo desde España.

    • Hola

      En el VS 2008 no viene el Diseñador de Esquemas XSD como venia en el 2005. MI consejo es que veas el codigo generado por la compilacion de la entidad y lo uses “a mano”. Ya que finalmente la idea es usar ese codigo generado. Revisalo y replicalo en tu proyecto, dejo el codigo generado:

      Public Class Clientes
      ‘Campos de la entidad
      Private nro_cuentaField As Integer
      Private rutField As Integer
      Private dvField As String
      Private nombre_clienteField As String
      Private apellido_clienteField As String

      ‘Propiedades de la entidad
      Public Property nro_cuenta() As Integer
      Get
      Return nro_cuentaField
      End Get
      Set(ByVal value As Integer)
      nro_cuentaField = value
      End Set
      End Property
      Public Property rut() As String
      Get
      Return rutField
      End Get
      Set(ByVal value As String)
      rutField = value
      End Set
      End Property
      Public Property dv() As String
      Get
      Return dvField
      End Get
      Set(ByVal value As String)
      dvField = value
      End Set
      End Property
      Public Property nombre_cliente() As String
      Get
      Return nombre_clienteField
      End Get
      Set(ByVal value As String
      nombre_clienteField = value
      End Set
      End Property
      Public Property apellido_cliente() As String
      Get
      Return apellido_clienteField
      End Get
      Set(ByVal value As String
      apellido_clienteField = value
      End Set
      End Property
      End Class

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.