Sei sulla pagina 1di 30

[ASP.

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


Introduccin
Un problema que se presenta regularmente luego de terminado el desarrollo de un proyecto web esta
relacionado con la publicacin y puesta en marca en un ambiente productivo, la idea del articulo ser la de
marcar los pasos para la creacin y puesta en produccin de un servicio web, as como tambin una pgina
aspx, como veremos tratar un servicio o una pagina requieren los mismo pasos.
Se podra considerarse un servicio web (asmx) como una paginas aspx solo que sin una interfaz visual que se
desplegu al usuario, los servicio permitirn que otras aplicaciones recuperen informacin publicada por
medio de un protocolo conocido como es el http
En esta primera parte se analizaran:

Crea un proyecto asp.net

Agregar un web service al desarrollo web

Consumir web service

Actualizar configuracin servicio


El ejemplo en el cual se basara la demostracin consiste solo una lista de cursos que se obtiene de una base
de datos. Como la publicacin de un servicio es idntica a la de una pagina web aprovecharemos el articulo
para contemplar ambos escenarios.
Crear proyecto web
El primer paso ser la creacin del proyecto web

Es importante usar la opcin que sea un Web Application

La estructura del proyecto del ejemplo incluye una db en carpeta de datos

Al ejecutar la pagina que lista los cursos se visualizara en el browser el resultado

Como es un ejemplo simple solo se hizo uso de un gridview junto a la ayuda de Entity Framework para
resolver el acceso a datos
Por supuesto hasta ahora se hace uso del Visual Studio Developer Server, el cual es muy til cuando se esta
desarrollando, pero solo en esta etapa luego debe publicarse en el IIS

El Visual Studio creara por nosotros un server virtual en el puerto indicado en la configuracin
Crear Servicio web
El prximo paso involucra la creacin del servicio web, para ello agregaremos un nuevo tem al proyecto web
creado en el paso anterior

En el servicio se define un webmethod que liste los cursos


?
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class SchoolService : System.Web.Services.WebService
{
[WebMethod]
public List<CurseDTO> GetCurseList()
{
using (SchoolEntities context = new SchoolEntities())
{
return (from curse in context.Course
select new CurseDTO()
{
CurseId = curse.CourseID,
Title = curse.Title,
Department = curse.Department.Name
}).ToList();
}
}
}
public class CurseDTO
{
public int CurseId {get; set;}
public string Title { get; set; }
public string Department {get; set;}
}
Si queremos ver la pantalla de inicio del servicio para validar que este correcto, solo ser cuestin de
navegarlo en el browser

Y hasta se puede invocar desde all mismo

Consumir servicio web


Para consumir un servicio desde una aplicacin cliente se agrega una referencia que creara el proxy, el cual
no es mas que cdigo para facilitar la invocacin al servicio

En este caso como el servicio esta en la misma solucin se descubre de forma directa, sino ser necesario
definir la url donde se publico el servicio

Si bien a simple vista pareciera que la referencia al servicio no hizo mucho

Si se habilita la opcin superior de la barra del solution explorer se podr descubrir mucho

La referencia al servicio crea cdigo por nosotros, adems de definir una seccin en el app.config, en el cual
se podr cambiar la url sin necesidad de recompilar luego de hacer la implementacin definitiva del servicio
en el IIS

Consumir el servicio desde cdigo solo implica crear la instancia del proxy para luego hacer uso del mtodo
definido
?
using School.UI.SchoolSvc;
.
.
CurseDTO[] curseList;

using (SchoolServiceSoapClient svc = new SchoolServiceSoapClient())


{
curseList = svc.GetCurseList();
}
dgvCourse.DataSource = curseList;
Con esto alcanza para invocar al servicio que hostea el server virtual que crea el VS y cargar el grid con la
misma lista que al principio mostramos en la pagina web
Algo que seguramente habrn notado en el cdigo seguro se relaciona con la respuesta del web method,
como puede ser que devuelve un array de entidades cuando el cdigo del servicio deja bien claro que era una
lista, bien eso se debe a como se configura la referencia, pero puede cambiarse si hace falta.

Y se define el tipo de dato para que sea una lista

Al recompilar el proyecto el cdigo que genera la referencia al servicio tambin devuelve una lista.

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

Introduccin
Aunque actualmente seguro se cuanta con Win 7, o alguna versin Win 2008 en un servidor, no va a faltar la
ocasin que ante alguna prueba simple solo se disponga de Windows XP para montar el server web, quizs
para algn 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 opcin 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 estarn bajo el default en el puerto 80
Este artculo es la continuacin de
[ASP.NET] Crear y Publicar - Web Service (1/3)
Definicin 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

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

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

Se define un nombre que identifique el contenido

Se define la carpeta donde se alojara el deploy del desarrollo

Si se requiere se puede cambiar las opciones de acceso al sitio, se marcaria la opcin 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

La finalizacin dejara 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

Alternativa creacin sitio (sin Wizard)


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

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

el siguiente paso ser acceder a las propiedades

La opcin Create ser la encargada de convertir esa simple carpeta en un directorio virtual que pueda alijar
el desarrollo

Ahora si la carpeta ha cambiado y esta lista para aceptar la publicacin

Publicar desarrollo
La publicacin se podra ver como en dos partes, la primera consiste en obtener la compilacin del proyecto
web, para esta tarea se dispone la la opcin de Publish del Visual Studio

Se presentara un cuando como el siguiente

donde se debera ingresar una carpeta local de la pc donde se ubicara la publicacin


Se puede observar el log de la tarea para validar que no se produce ningn error

El resultado ser la publicacin en la carpeta

Esto debera copiarse y pegarse en la carpeta definida en el IIS

Desde el IIS se observara el cambio

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

y el servicio tambin

Configuracin
Seguramente se deba realizar en algn momento el cambio de configuracin en el sitio

Si algo no funciona seguro seria bueno validar que la extensin este definida

O validar los tiempos de timeout del sitio

Si estamos en desarrollo poder depurar seria de ayuda

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

El usuario utilizado para impersonar el sitio es el definido en la opcin de annimos, si es necesario acceder a
una carpeta de red o ejecutar alguna aplicacin con determinados privilegios ser necesario validar que ese
usuario pueda hacerlo

Validar si la aplicacin desarrollada cuenta con alguna pagina por defecto

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 opcin de Browse marcada
Validar la versin del framework es muy importante

si de casualidad se instalo primero el framework de .net y luego se habilito el IIS quizs 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)

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


Introduccin
El uso de Win 7 o Windows Server implica contar con una versin 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
En esta oportunidad a diferencia de las anteriores usaremos un proyecto creado en VS 2010, bsicamente es
el mismo proyecto que fue convertido de versin para poder usar .net 4
Publicar Web Project VS 2010
Para cambiar un poco la situacin de los contextos anteriores se usara el Visual Studio 2010, crear una
aplicacin web que exponga ya sea paginas o servicio requiere aplicar los mismos pasos expuestos en los

artculos anteriores, toda la explicacin 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 botn derecho del
mouse

Al comparar la pantalla de publicacin con la utilizada en los artculos anteriores se notaran mas completa

Algo que rpidamente nos llama la atencin es la creacin perfiles de publicacin, utilizado para definir un
determinado set de opciones, en este caso hare uso de la publicacin a una carpeta del disco local, y grabare
el profile para poder reutilizarlo las veces que hagan falta

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

Acceso a la opciones de publicacin


La publicacin tiene mas opciones de las esperadas, se puede acceder de forma rpida, si se habilita la
toolbar

se habilitara la opcin

para acceder de forma rpida al profile de publicacin.


Si se presto atencin a la pantalla Publish Web se habr notado una leyenda donde se hace mencin a
opciones avanzadas de publicacin, se accede a esta por medio de las propiedades del proyecto web

C
reacin Sitio IIS 7
Al igual que suceda con IIS 5 de Win Xp al acceder al administrador se cuenta con un sitio creado por
defecto residente en el puerto 80

pero como diferencia ahora si se podrn crear sitio web que estn en el puerto que uno desea, el primer paso
por supuesto ser crear el sitio

Solo es cuestin de definir un nombre para el sitio, la ruta fsica donde se realizara el deploy y el puerto

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 podra acceder a opciones bsicas y avanzadas

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 automtica al crear el sitio se define un Application Pool con el nombre
del sitio

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

En este se podr configurar la versin 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 bsicas

Para configurar principalmente la versin del framework utilizado

y opciones avanzadas

en donde adems de poder cambiar la versin 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 aplicacin, 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
configuracin 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 cdigo a la carpeta del sitio se podr acceder al contenido, as como visualizarlo en
el explorador

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

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

Se podra cambiar a NetworkService

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

Una vez publicado el sitio se podra modificar de forma visual la configuracin con la ayuda del IDE del IIS,
por ejemplo, opciones como ser el connection string

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

Potrebbero piacerti anche