C# y .NET

kraneok

Hola gente, estoy comenzando una aplicación en C# con la plataforma .NET y me gustaría saber como se dividen las capas de la aplicación, me explico.

Por una parte tenemos los archivos Form que contienen los controles y los eventos de estos mismo, entonces lo que yo quiero conocer es si se utiliza algún patrón de diseño específico para dividir las capas al añadir funcionalidades al sistema.

Es decir, mi idea sería utilizar MVC ya que trabajare con fuente de datos que pueden ser archivos y base de datos, entonces, los Form los utilizaría solo para captar los eventos de los controles y sus valores para enviarlos al Controlador de cada uno de estos Form que serían las vistas, y si es necesario, desde el controlador utilizaría los Modelos también creados por mi.

¿ Es erróneo ?, ¿ lleva implícito .NET la programación de la lógica de negocio en los forms ?, ¿ hago mal en utilizar un form solo para captar eventos y valores de controles ?.

He estado mirando en San Peters Google y no me queda nada claro como debería afrontar el problema.

Un saludo y gracias.

Baltar

Intentaré resumirlo de forma sencilla.
El modelo que escojas es indiferente.

De cualquier forma, efectivamente independientemente de que hagas una aplicación web o de escritorio siempre tienes dos partes:
-Cliente: Forms (para apps de Escritorio), aspx (para Webs), asmx (para Servicios Web), html,...
-CodeBehind (o lo que ejecutará la parte servidor): .cs/.vb (en tu caso será .cs)

Normalmente toda página cliente que hagas tendrá asociada su .cs
Luego aparte puedes ubicar más módulos de código fuente en carpetas AppCode (o como quieras, siempre que respetes los namespace para hacer referencia a las clases que crees desde cualquier otro lado)

A partir de ahí cada artista hace su lienzo.

Yo te recomendaría que te te dividieras la solución en los siguientes subproyectos:

-Cliente
-Capa de Acceso a Datos (para la BBDD) --> Visual Studio creo que te ofrece a partir del 2010 una forma rápida de configurar el acceso a tu BBDD generándote la clase para que puedas consultar, modificar, borrar, etc.
-Framework y Auxiliar (para si vas a realizar las mismas operaciones varias veces o por si vas a meter funciones auxiliares)

Buena suerte! :)

1 respuesta
kraneok

#2 Quizás no he dicho que la aplicación es Desktop.
¿ Variará en algo supongo no ?

Vale ya entendí, entonces, lo suyo sería dejar la capa Cliente( Form ) para lanzar funcionalidades del sistema gracias a los eventos recibidos, el intermediario( lo llamaremos controlador ), realiza la lógica de negocio y si necesita trabajar con fuentes de datos, utilizará una tercera capa ( modelo ) programada para tal fin, posteriormente todo lo que se genere, el intermediario( controlador ), lo devolverá al Cliente( Form ), en forma legible.

Mira que ya llevo tiempo trabajando con CodeIgniter que implementa MVC, pero pasar a C# es complicado y por si fuese poco, en Java, que si llevo ya varios años programando en el y prácticamente igual que C# lo hago así, pero claro el tema de Namespace me vuelve un poco loco.

1 1 respuesta
Baltar

#3 Todo es ponerse ;) Además el compilador del Visual te chiva las cosas bastante bien.

Para la BBDD recuerda siempre XD :

r2d2rigo

WinForms? No prefieres WPF?

1 respuesta
kraneok

#5 En que mejora WPF.
Otra pregunta mas, por ejemplo, tengo en un form una serie de campos textfield, donde debería validar si están llenos o vacíos?, ¿ en el propio form ?, ¿ en el facade cuando lo proces ?, ¿ quién debería mostrar el diálogo de error ?.

Un saludo.

1 respuesta
r2d2rigo

#6 pues principalmente porque puedes usar MVVM en lugar de MVC y te vas a sacar de encima mucho jaleo, sobre todo en la validacion de datos.

1 respuesta
16 días después
kraneok

#7 Hola una preguntilla.

Estoy peleando con una impresora de ticket, y estoy utilizando POS( Microsoft Point of Service) para imprimirlos. La cuestión es que no me detecta la impresora, que ya está instalada.

He leído que se debe instalar un driver aparte llamado OPOS.

¿ Sabes algo de esto ?

Un saludo

Usuarios habituales

  • kraneok
  • r2d2rigo
  • Baltar