domingo, 28 de octubre de 2012

[Visual Studio] Unir proyectos

 

Introducción


En algunas ocasiones se escribe código en proyectos separados, ya sea para probar algún concepto, se trabajo en equipos diferentes y cada uno creo su ambiente, etc

pero en todos estos casos al final se requiere unir bajo una única solución todo lo confeccionado, existen diferentes formas de lograrlo pero creo que lo que explicare es la mas simple.

Usaremos un ejemplo sencillo para demostrar como unir proyectos, además de evaluar que consideraciones hay que tener en el proceso.

Se han creado dos aplicaciones del tipo Windows Application, pero tengan en cuenta que esto mismo aplica a cualquier otro tipo de proyecto.

Por un lado tendremos un proyecto con un único form definido como MDI Container, este será la base al cual se agregara lo proveniente de otros desarrollos

image

Por el otro lado se desarrolla un forma simple que accede a una db local usando dataset tipado

image

La idea es mover el Form1, el dataset tipado y la base de datos de WinApp2 a WinApp1

 

Mover archivos entre proyecto


Lo primero que hay que conocer serán los archivos ha mover entre proyectos, esto parece ser una tarea simple pero por lo general un ítem puede estar compuesto por otros ítems que los complementan

Por ejemplo un formulario se compone de 3 archivos, el .cs (seria el formulario en si mismo), el .Designer.cs (donde se definen los controles que se agregan en tiempo diseño) y un .resx (define los textos he imágenes según la cultura). Lo mismo sucede con el dataset tipado, compuesto por el .xsd, .Designer.cs, .xsc y .xss

En proyecto escritos con C# visualizar estos archivos es simple ya que el Solución Explorer brinda la posibilidad directa de expandir los archivos relacionados

image

Pero esto no sucede en VB.NET, por defecto el Solution Explorer no los muestra

image

para poder ver los archivos relacionados a un ítem hay que habilitarlo usando la opción “Show All Items”

image

Ahora que sabemos que archivos se requieren mover de un proyecto a otro haremos uso del Windows Explorer, se podrá acceder a la carpeta de forma directa usando

SNAGHTML15b51af

Se deberán seleccionar todos los archivos implicados para cada ítem

SNAGHTML15d877e

y se moverán a la carpeta del proyecto destino, el cual ya tenia el form principal

SNAGHTML15f17f9

 

Incluir archivo al proyecto


Una vez que tenemos los archivos ubicados en la estructura de carpeta del proyecto destino volvemos al Visual Studio para incluir estos archivos, para poder lograrlo será necesario volver los archivos visibles usando la opción “Show All Items”

image

como se observa en la imagen los archivos que se han copiado a la carpeta están visibles pero con un icono de color blanco, lo que indica que están fuera del proyecto, en realidad están en la carpeta (dentro de la estructura) pero no incluidos al proyecto

Para incluirlos solo bastara usar la opción “Include In Project”

image

lo cual no solo agregara el .cs sino también los archivos relacionados, solo será cuestión de aplicar esto al resto de los archivos para concluir con la integración

 

Algunas consideraciones


Luego de incluir los archivos puede que la tarea no termine allí, sino que hay que adecuar el código

Normalmente cuando se desarrolla bajo un proyecto se definen namespaces, el formulario que se ha incluido sigue conservando el nombre que se uso en el proyecto anterior

image

es por eso que será necesario revisar el código de los ítems incluidos para adaptarlos de forma correcta al nuevo proyecto, y en algunos casos no alcanzara con ir al código del form, sino también se deberá cambiar dentro del Designer.cs o sus archivos relacionados

SNAGHTML1aedbc6

Con respecto a los dataset puede que sea necesario ejecutar la opción que vuelve a regenerar el código en base a la metadata

image

esto adecua el código generado para que se adapte de forma automática al nuevo namespace

 

Conclusión


Los pasos para unir proyecto no son difíciles de aplicar, solo es cuestión de conocer las opciones y que archivos mover de un proyecto a otro.

Si bien aquí solo tratamos algunos tipos de archivos la misma técnica se puede aplicar a cualquier otro que se este utilizando.

domingo, 21 de octubre de 2012

[ASP.NET] Web Service - Publicar en IIS Windows 7 (3/3)

 

Introducción


El uso de Win 7 o Windows Server implica contar con una versión de IIS mas robusta a la hora de exponer servicios para ser consumidos. Con Win 7 o Win 2008 contamos con IIS 7 el cual permite crear sitios web en un puerto especifico que definamos, esto no era posible de lograr en Win Xp

Este artículo es la continuación de:

[ASP.NET] Crear y Publicar - Web Service (1/3)

[ASP.NET] Web Service - Publicar en IIS Windows XP (2/3)

En esta oportunidad a diferencia de las anteriores usaremos un proyecto creado en VS 2010, básicamente es el mismo proyecto que fue convertido de versión para poder usar .net 4

 

Publicar Web Project VS 2010


Para cambiar un poco la situación de los contextos anteriores se usara el Visual Studio 2010, crear una aplicación web que exponga ya sea paginas o servicio requiere aplicar los mismos pasos expuestos en los artículos anteriores, toda la explicación anteriormente brindada es totalmente valida ya sea se use VS 2008 o 2010

VS 2010 brinda mas opciones al momento de publicar, se accede mediante un click del botón derecho del mouse

SNAGHTML30fe510

Al comparar la pantalla de publicación con la utilizada en los artículos anteriores se notaran mas completa

SNAGHTML3485763

Algo que rápidamente nos llama la atención es la creación perfiles de publicación, utilizado para definir un determinado set de opciones, en este caso hare uso de la publicación a una carpeta del disco local, y grabare el profile para poder reutilizarlo las veces que hagan falta

SNAGHTML34a9b36

El resultado será el mismo que se obtuvo en los artículos anteriores, paginas, servicios y dlls listos para ubicarlos en el IIS

SNAGHTML34e2c4e

 

Acceso a la opciones de publicación


La publicación tiene mas opciones de las esperadas, se puede acceder de forma rápida, si se habilita la toolbar

SNAGHTML34fc11e

se habilitara la opción

image

para acceder de forma rápida al profile de publicación.

Si se presto atención a la pantalla “Publish Web” se habrá notado una leyenda donde se hace mención a opciones avanzadas de publicación, se accede a esta por medio de las propiedades del proyecto web

SNAGHTML3536c79 

 

Creación Sitio IIS 7


Al igual que sucedía con IIS 5 de Win Xp al acceder al administrador se cuenta con un sitio creado por defecto residente en el puerto 80

SNAGHTML3ba0b39

pero como diferencia ahora si se podrán crear sitio web que estén en el puerto que uno desea, el primer paso por supuesto será crear el sitio

SNAGHTML7691d5

Solo es cuestión de definir un nombre para el sitio, la ruta física donde se realizara el deploy y el puerto

SNAGHTMLcabdf5

recordemos que el Default Web Site es quien utiliza el puerto 80, por eso en este caso he usado el 8080, pero puede ser cualquier otro que uno decida usar

Seleccionando el sitio creado se podría acceder a opciones básicas y avanzadas

SNAGHTML1446628

SNAGHTML1456d97

Con estos simples pasos se ha creado un sitio, solo resta copiar los archivos publicados del paso anterior

 

Application Pool


Es importante notar como de forma automática al crear el sitio se define un Application Pool con el nombre del sitio

SNAGHTML147be65

este puede cambiarse por uno existente, pero es buena idea que cada sitio tenga su propio App Pool

En este se podrá configurar la versión del framework de .net que será usada, el usuario con el cual se ejecuta el sitio, si se dispone de una pc con arquitectura de 64 bits podrá habilitarse o no la compatibilidad con 32bit

Existe opciones básicas

SNAGHTMLd15055

Para configurar principalmente la versión del framework utilizado

SNAGHTMLcf988b

y opciones avanzadas

SNAGHTMLd3519c

en donde además de poder cambiar la versión del framework se puede definir el identity, el usuario que definan será con el cual se ejecuten los procesos, si quiere lanzar un .exe, una aplicación, acceder a una carpeta que esta por fuera del sitio, o a una shared folder, deben asegurarse que ese usuario tenga permiso

Igualmente el identity del App Pool no es el único lugar donde definir el usuario, se puede recurrir a la configuración del sitio, el web.config

<system.web>
    
    <identity impersonate="true" userName="dominio\nombreusuario" password="password"/>
.
.
</system.web>

Deploy del desarrollo


Al copiar el contenido del código a la carpeta del sitio se podrá acceder al contenido, así como visualizarlo en el explorador

image

si en los pasos anteriores no modificaron ninguna opción puede que obtengan el siguiente mensaje de error

image

especialmente si usas una base de datos que se encuentra en el App_Data, la cual se adjunta de forma dinámica al servicio de sql server, para solucionarlo solo será necesario cambiar el usuario definido en el App Pool

SNAGHTML1acd4a5

Se podría cambiar a NetworkService

image

Ahora si al acceder a la pagina podremos ver que resuelve correctamente

SNAGHTML1afda9e

Una vez publicado el sitio se podría modificar de forma visual la configuración con la ayuda del IDE del IIS, por ejemplo, opciones como ser el connection string

SNAGHTML1d78c60

SNAGHTML1d64237

cambiar el valor desde el IIS impacta directo en el web.config del sitio

Código


Se ha usado Visual Studio 2010 y Sql Server Express 2008 R2

[C#]
 

sábado, 6 de octubre de 2012

[ASP.NET] Web Service - Publicar en IIS Windows XP (2/3)

 

Introducción


Aunque actualmente seguro se cuanta con Win 7, o alguna versión Win 2008 en un servidor, no va a faltar la ocasión que ante alguna prueba simple solo se disponga de Windows XP para montar el server web, quizás para algún uso de red local resulta simple

Se da por hecho que el IIS esta instalado en Windows, lo cual se realiza desde “Add and Remove Programs” en la opción especial “Add and Remove Windows Components”

Algo que debe aclararse antes de empezar es que el IIS de Windows XP no se pueden crear sitios web a los cuales se le asignen un puerto, esto si se puede en Win 7 o alguna las versiones de Win Server

En el IIS de Win Xp solo se pueden crear directorios virtuales que estarán bajo el default en el puerto 80

Este artículo es la continuación de

[ASP.NET] Crear y Publicar - Web Service (1/3)

 

Definición del sitio web mediante Wizard


El primer paso como es de esperar será acceder al IIS, para lo cual se deberá ir al panel del control

SNAGHTML3fac085

Se accede el IIS, sonde podemos ver el sitio por defecto configurado en el puerto 80

image

Para crear el sitio que alojara el servicio solo es necesario acceder al Wizard que nos guiara

image

image

Se define un nombre que identifique el contenido

image

Se define la carpeta donde se alojara el deploy del desarrollo

image

Si se requiere se puede cambiar las opciones de acceso al sitio, se marcaria la opción “Browse” si se requiere permitir listas los archivos si es que no se define ninguna pagina en concreto, se marcaria “Write” en caso de permitir subir archivos al sitio por medio de http

image

image

La finalización dejaría el sitio como hijo del sitio Default, es importante validar que este el icono de la caja gris, lo cual indica que se creo correctamente

image

 

Alternativa creación sitio (sin Wizard)


La alternativa arranca con la creación de la carpeta del sitio que se quiere crear, pero en esta oportunidad debe realizarse dentro del wwwroot

image

Esto permite que al actualiza el IIS se observara la carpeta recientemente creada, esta claro que mientras este solo la carpeta con el icono simple no podrá alojarse un desarrollo que cuente con un web.config y dll independiente, porque como carpeta el root sigue siendo el default

image

el siguiente paso será acceder a las propiedades

image

La opción “Create” será la encargada de convertir esa simple carpeta en un directorio virtual que pueda alijar el desarrollo

image

image

Ahora si la carpeta ha cambiado y esta lista para aceptar la publicación

image

 

Publicar desarrollo


La publicación se podría ver como en dos partes, la primera consiste en obtener la compilación del proyecto web, para esta tarea se dispone la la opción de “Publish” del Visual Studio

image

Se presentara un cuando como el siguiente

image

donde se debería ingresar una carpeta local de la pc donde se ubicara la publicación

Se puede observar el log de la tarea para validar que no se produce ningún error

image

El resultado será la publicación en la carpeta

SNAGHTML4311aa7

Esto debería copiarse y pegarse en la carpeta definida en el IIS

image

Desde el IIS se observara el cambio

SNAGHTML433d10a

Y si se accede desde el browser se podra ver la pagina web

image

y el servicio también

image

 

Configuración


Seguramente se deba realizar en algún momento el cambio de configuración en el sitio

image

Si algo no funciona seguro seria bueno validar que la extensión este definida

image

O validar los tiempos de timeout del sitio

image

Si estamos en desarrollo poder depurar seria de ayuda

image

Pero creo que verificar la seguridad es un punto clave para el funcionamiento

image

El usuario utilizado para impersonar el sitio es el definido en la opción de anónimos, si es necesario acceder a una carpeta de red o ejecutar alguna aplicación con determinados privilegios será necesario validar que ese usuario pueda hacerlo

image

Validar si la aplicación desarrollada cuenta con alguna pagina por defecto  

image

sino se cuenta con una pagina dentro de la lista de default y tampoco se define una, al acceder al sitio este fallara porque no podrá encontrar que pagina cargar,  salvo que se tenga la opción de “Browse” marcada

Validar la versión del framework es muy importante

image

si de casualidad se instalo primero el framework de .net y luego se habilito el IIS quizás haga falta ejecutar el comando

aspnet_regiis –i

para así asociar los componente de .net con el IIS

ASP.NET IIS Registration Tool (Aspnet_regiis.exe)