JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Componentes duales para Windows y la Web

¿Cómo puedo construir un componente o una biblioteca de clases que me sirva indistintamente para Windows Forms y para ASP.NET si debo usar características específicas de cada entorno?

Expresado con otras palabras: ¿Cómo puedo saber si mi componente está siendo usado desde una aplicación de Windows Forms o de ASP.NET?

Respuesta: verifica el valor de HttpContext.Current.

Si es null (Nothing en VB) es que estás en un entorno no-web, y estarás bajo ASP.NET en caso contrario.

Es un truco sencillo pero que a alguno puede que le resulte útil si se lo había planteado para algún componente propio.

José Manuel Alarcón
Banner

Comentarios (3) -

Un "componente" de esas características, *no debería* depender de ese tipo de *hacks*

Responder

Bueno, no es ningún *hack*, es una forma bastante directa y lógica de determinarlo. Un *hack* sería, por ejemplo, determinar el nombre del proceso en el que se está ejecutando el componente y ver si se corresponde con el de IIS (cosa que pueda cambiar según el SO y servidor utilizado). Esto sí me parece propenso a errores y de hecho tengo constancia de que por ahí se usa :-)

En cuanto a lo de UerInteractive no sé a qué te refieres, Espinete, pero no sé si te refieres a la propiedad DesignMode que tienen todos los controles ASP.NET (clases que heredan de System.Web.UI.Control). Ésta sirve para determinar si se está usando el control sobre una superficie de diseño (generalmente Visual Studio) de modo que puedas pintar su contenido por defecto y este tipo de cosas, pero no tiene que ver con lo que comentaba en el post.

¡Gracias por las aportaciones!

Saludos

JM.

Responder

Oye, muy interesante lo de Environment-UserInteractive. He de confesar que no lo conocía :-)

De todos modos no creo que nos sirva exactamente para lo que yo proponía porque en la Web siempre dará false, pero en aplicaciones Windows sin interfaz, como por ejemplo en un servicio, también devolvería lo mismo y no podemos asumir que es Web, claro.

De todos modos es una aportación muy interesante. Gracias.

Saludos

JM.

Responder

Agregar comentario