Etiqueta: ASP.NET MVC

Introducción: SignalR en ASP.NET MVC

En la entrada anterior vimos de forma general cómo podemos realizar aplicaciones real-time en ASP.NET MVC. En este post nos vamos a centrar en el primero de esos puntos: SignalR.

Como ya vimos, SignalR nos permite gestionar todas aquellas funcionalidades en las cuales tenemos una interacción en dos vías (conexión bidireccional) entre el servidor y sus clientes.

ASP.NET SignalR es una librería para los desarrolladores de aplicaciones ASP.NET que simplifica el proceso de agregar funcionalidad basada en interacción web en tiempo real. Cuando hablamos de interacción web en tiempo real hacemos referencia a la capacidad de poder enviar contenido desde el servidor a determinadas aplicaciones clientes que lo tendrán disponible de forma inmediata, en vez de que el servidor tenga que esperar que el cliente le solicite nueva información. Esto permite lograr un esquema de conexión bidireccional completo.

Si nuestra aplicación ASP.NET tiene alguna interacción donde necesitamos tener comunicación bidireccional, y para ello utilizamos alguna técnica alternativa (como por ejemplo long polling), quiere decir que podemos usar SignalR en la misma.

 

Vamos a ver algunas cuestiones de teoría asociada a esta interacción en tiempo real entre cliente y servidor. Básicamente existen varias técnicas para poder lograr este comportamiento, algunas mejores en su planteamiento y otras que tienen una mayor compatibilidad: Seguir leyendo «Introducción: SignalR en ASP.NET MVC»

Aplicaciones real-time en ASP.NET MVC

Hay que reconocer que a día de hoy las aplicaciones web’s que usamos evolucionan constantemente, siendo uno de los aspectos más destacados la interacción con el usuario y el dinamismo en tiempo real del contenido. Esto implica que como desarrolladores debamos estar atentos a esas situaciones, para hacer que nuestras aplicaciones cumplan con estas nuevas características que los usuarios empiezan a ver como estándares.

Lo que vamos a ver en este post es la introducción a dos herramientas que nos ayudan a lograr este cometido en nuestras aplicaciones ASP.NET MVC, cada una con su propósito.

Seguir leyendo «Aplicaciones real-time en ASP.NET MVC»

Transformaciones sobre web.config: una forma de tener organizados los distintos ambientes

En el desarrollo de aplicaciones ASP.NET MVC puede haber un punto algo conflictivo si no lo tratamos con el debido cuidado: el archivo Web.config y las variantes del mismo en relación a los distintos ambientes de ejecución. Son muchos los casos donde se puede apreciar que hay problemas o confusiones asociadas a los cambios que uno debe tener sobre este archivo dependiendo del ambiente en el cual ejecutemos la aplicación.

Aquí es donde entran en juego las transformaciones sobre el Web.config, las cuales son un conjunto de reglas que podemos ir definiendo sobre el mismo. Mediante esas reglas podremos definir qué cambios se deben aplicar para cada ambiente.

Cuando hablamos de ambiente hacemos referencia al propósito del sitio donde se ejecute la aplicación, siendo los más clásicos:

  • Local: nuestra PC, ambiente de desarrollo al 100%
  • Testing: un sitio expuesto (interna o externamente) para hacer pruebas generales
  • Producción: sitio real de ejecución de nuestra aplicación

Dependiendo del proyecto podrán existir algunos más o menos (al menos tendremos el entorno local y el de producción). Para este post vamos a tomar esta configuración como la referencia.

Asumiendo que ya tenemos los perfiles de publicación necesarios para cada ambiente que no sea local, vamos a cada uno de los mismos (ubicados en Properties > PublishProfiles) y haciendo click derecho seleccionamos la opción que nos generará el archivo derivado Web.config para cada ambiente, donde se aplicarán las transformaciones particulares:

TransformacionConfig - AgregarConfig

Seguir leyendo «Transformaciones sobre web.config: una forma de tener organizados los distintos ambientes»

Internacionalización: la serie

Buenas a todos! Como ya hemos visto varios posts asociados a internacionalización les dejo el listado de los mismos con una breve introducción:

Internacionalización en ASP.NET MVC

Explicación inicial de cómo configurar nuestra aplicación ASP.NET MVC para que soporte la internacionalización de la misma a partir de la cultura del cliente.

 

Internacionalizar entradas de usuario en ASP.NET MVC

Luego de tener internacionalizada nuestra aplicación ASP.NET MVC, el siguiente punto será lo que debamos considerar para aceptar entradas de usuario dependiendo de la cultura del usuario, además de almacenar esa información de forma estándar y mostrársela nuevamente al usuario según su cultura.

 

Cómo cambiar la cultura manualmente en ASP.NET MVC?

Aunque nuestra aplicación sea capaz de adaptarse a la cultura del cliente, puede haber casos donde queremos darle la posibilidad al usuario de que la cambie según su preferencia. En este post vemos cómo hacer ello de forma sencilla sin perder ni sobre-escribir la funcionalidad ya existente en ASP.NET MVC.

 

Satellite Assemblies en internacionalización ASP.NET MVC

En este post hacemos un breve repaso al concepto de Satellite Assemblies, y cómo las mismas nos dan diversas ventajas en nuestras aplicaciones ASP.NET MVC internacionalizadas.

 

Como siempre, si les parece que hay algún punto sobre el cual profundizar o explicar algo en detalle me lo comentan y lo tengo en cuenta para armar un post asociado. Y ya que estamos seguimos haciendo crecer esta serie.

Gracias por leer!

Satellite Assemblies en internacionalización ASP.NET MVC

Como vimos en el post de internacionalización, uno de los puntos importantes sobre el cual trabajamos en las aplicaciones con soporte a varias culturas es el archivo de recursos. En los ejemplos sobre los cuales trabajamos el contenido de esos archivos era realmente mínimo, pero pensemos en aplicaciones realmente complejas y extensas con soporte para varios idiomas. En las mismas los archivos de recursos además de texto, pueden tener iconos, imágenes e incluso audios asociados a cada cultura en particular.

Sin duda estamos hablando de un contenido que realmente puede llegar a tener un gran tamaño, lo cual podría llegar a afectar el rendimiento de nuestra aplicación ya que todo ese contenido estaría en el mismo assembly en memoria, conviviendo todas las culturas juntas.

Ante esta situación surge un concepto importante: Satellite Assemblies

Un satellite assembly es una libraría compilada que contiene todos los recursos localizables que mencionábamos con anterioridad. El uso de las mismas se da en los casos de aplicaciones con múltiples culturas, en las cuales se crea un satellite assembly por cada cultura a la que le estemos dando soporte.

Estos assemblies no contienen código, por lo tanto no pueden considerarse como ejecutables, sino que estarán asociadas a un assembly principal (de allí el nombre de satélite).

Seguir leyendo «Satellite Assemblies en internacionalización ASP.NET MVC»

[VS Code] Configurando Autocomplete/OmniSharp en Ubuntu

Una de las nuevas líneas de trabajo que Microsoft está llevando adelante de forma constante y con mucha fuerza es el Open Source. Y afortunadamente ASP.NET MVC no es una excepción, así que de a pocos vayamos adentrándonos en este mundo.

Con lo explicado por @sebis en su entrada «ASP.NET Core en Linux» tenemos el detalle de toda la información necesaria para poder configurar el entorno de desarrollo y ejecutar nuestras aplicaciones ASP.NET MVC en Linux, particularmente para Ubuntu/Debian. Ahora bien, resuelto esto debemos pasar al siguiente punto: tener un IDE de desarrollo asociado para trabajar de forma correcta. Y una de las soluciones es VS Code, la herramienta multi-plataforma de Microsoft, pensada para este propósito.

Ni bien abramos por primera vez un proyecto de ASP.NET Core, lo que veremos es lo siguiente:

Omnisharp - ExtensionCSharp
Instalación de la extensión de C#

Como podemos apreciar, el soporte a C# no es algo nativo sino que deberemos instalar, dando la pauta de que no es algo atado a un lenguaje, sino un IDE general de desarrollo. Una vez finalizada la instalación (demorará unos minutos sin notificaciones, por lo que no seamos impacientes) veremos el siguiente resultado:

Omnisharp - ExtensionCSharpInstalada

Seguir leyendo «[VS Code] Configurando Autocomplete/OmniSharp en Ubuntu»

ActionLink y RedirectToAction para áreas en ASP.NET MVC

En las últimas entradas de este blog estuvimos viendo distintos puntos asociados a los helpers en ASP.NET MVC. Uno de los puntos importantes que vimos en «Helpers en ASP.NET MVC, reutilizando código en nuestras vistas» es el poder quitar código repetitivo o simplificar ciertas operaciones.

Allí recordé el comentario que había dejado @maxilovera en la entrada «Áreas en ASP.NET MVC – Una forma de organizar nuestras aplicaciones«:

Solamente hay que acordarse del parámetro de @area en los links para no volverse loco con las redirecciones. Aquí podría armarse un helper para facilitar la codificación

Este comentario venía a raíz de que para el Html Helper ActionLink como para las redirecciones (método RedirectToAction en los controladores) usando áreas, debíamos acordarnos de establecer como un atributo diferenciado el área a usar:

Area - ActionLink
Ejemplo de uso de áreas en el armado de un link
Area - RedirectToAction
Ejemplo de uso de áreas en la redirección

Esto puede ser propicio a olvidarnos de declarar ese atributo, además de que es algo repetitivo a realizar constantemente. Así que veamos cómo mejorar la situación con lo aprendido en los post’s anteriores.

Lo primero que vamos a definir es que para esta solución utilizaremos los Html Helpers, extendiendo lo ya definido en el namespace Html. Para ello crearemos el helper de la siguiente forma:

HelperAreas - HelperActionLink
Helper extendiendo ActionLink para áreas

Seguir leyendo «ActionLink y RedirectToAction para áreas en ASP.NET MVC»

Crear Razor Helpers en ASP.NET MVC

Siguiendo lo visto en el post inicial sobre reutilización en nuestras vistas ASP.NET MVC y en el de Html Helpers en esta entrada veremos los Razor Helpers, la alternativa que nos permite realizarlo directamente desde nuestra vistas.

Lo primero que vamos a ver es la sintaxis del mismo. Al ser código Razor, el mismo deberá estar ubicado en una vista. La declaración es muy similar a una función, salvo que inicia con la palabra clave @helper, seguida del nombre del mismo y los parámetros que recibe. A la vez que su ámbito se define con corchetes. Luego el contenido es como si estuviéramos escribiendo una vista en Razor de forma normal.

Siguiendo con el ejemplo del post anterior vamos a ver cómo quedaría el helper en cuestión para renderizar una lista de elementos HTML con esta alternativa:

RazorHelpers - HelperEnVista
Sintaxis de un Helper Razor

Como se puede apreciar, es muy sencilla la escritura del mismo. Y el uso también lo es, veámoslo en la siguiente imagen:

Seguir leyendo «Crear Razor Helpers en ASP.NET MVC»

Crear Html Helpers en ASP.NET MVC

Si hay algo que en general podemos estar conformes (y de mi parte muy conforme) con ASP.NET MVC es la capacidad de extensión que nos brinda en distintos puntos. Siguiendo con lo que iniciamos en el post «Helpers en ASP.NET MVC, reutilizando código en nuestras vistas«, hoy vamos a veres cómo crear nuestros propios Html Helpers en C# para facilitar la escritura de nuestras vistas, evitando tener que repetir código en las mismas.

Lo primero que vamos a comentar es que por defecto tenemos muchos helpers a disposición, son todos aquellos que usamos bajo el namespace Html. Algunos ejemplos de uso son los que podemos ver a continuación, sacados de una de las vistas asociadas a la autenticación en el template inicial de ASP.NET MVC:

Helpers - Ejemplos
ASP.NET MVC Helpers

Algunos de los más comunes y usados son (por nombrar solo algunos):

  • BeginForm()
  • EndForm()
  • Label()
  • ActionLink()
  • TextArea()
  • TextBox()
  • CheckBox()
  • RadioButton()
  • ListBox()
  • DropDownList()
  • Hidden()
  • Password()
  • Display()

Para mayores detalles pueden ver todos los disponibles y cómo usarlos en la documentación oficial.

Básicamente el objetivo de un helper es generar código HTML de forma simple y parametrizada, evitando repetir código (lo cual siempre es un objetivo fundamental), además de permitirnos que nuestras aplicaciones queden mucho más ordenadas, prolijas y mantenibles.

Ahora bien, veamos qué debemos hacer para crear nuestros propios helpers.

Seguir leyendo «Crear Html Helpers en ASP.NET MVC»

Helpers en ASP.NET MVC, reutilizando código en nuestras vistas

Como generalmente suele suceder cuando estamos desarrollando nuestra aplicación, un objetivo primordial es la reutilización de la mayor cantidad posible de código, logrando de esta forma que nuestras aplicaciones queden ordenadas, prolijas y mucho más mantenibles. Además de simplificar el trabajo que realizamos al momento de escribir nuestro código.

Cuando hablamos de vistas, hay distintas alternativas que tenemos disponibles, entre ellas los helpers. Un helper es una herramienta de extensión de ASP.NET MVC que nos permite crear código HTML de forma personalizada y parametrizada. Sus principales objetivos son:

  • Reutilizar comportamientos comunes que se repiten a lo largo de las vistas.
  • Facilitar la escritura de nuestras vistas, permitiendo que determinadas porciones de código queden definidas en un solo lugar.

Si bien son similares los puntos planteados anteriormente, con el primero hacemos incapié en cuestiones donde hay una mayor cantidad de lógica asociada a variantes de visualización. Con el segundo, a aquellos aspectos donde siempre escribimos el mismo HTML pero con pequeñas variantes.

Ahora bien, cómo hacemos nuestros helpers? Aquí tenemos dos alternativas disponibles, complementarias entre si:

  • Html Helpers
  • Razor Helpers

Veamos una descripción mínima, luego haremos un post detallado para cada una.

Seguir leyendo «Helpers en ASP.NET MVC, reutilizando código en nuestras vistas»