2012-03-29 34 views
17

Creé mi primer servicio WCF y lo probé en mi computadora, y funciona.¿Cómo puedo generar el archivo .svc?

Los archivos presentes son una interfaz, una implementación de esa interfaz y un archivo app.config.

Ahora que es hora de alojar esto en un servidor real con IIS, me dijeron que IIS busca un archivo .svc cuando recibe llamadas entrantes.

Esto es lo que encontré: servicios

WCF alojados en IIS se representan como archivos de contenido (archivos especiales .SVC) dentro de la aplicación de IIS. Este modelo es similar a la forma en que se representan las páginas ASMX dentro de una aplicación IIS como archivos .asmx. Un archivo .svc contiene una directiva de procesamiento específica de WCF (@ServiceHost) que permite a la infraestructura de alojamiento WCF activar los servicios alojados en respuesta a los mensajes entrantes.

¿Alguien puede por favor indicarme cómo puedo crear este archivo para poder alojarlo?

Gracias!

+2

http://msdn.microsoft.com/en-us/library/ms733766.aspx – Reniuz

+0

Así service.svc es básicamente otra forma de declarar puntos finales? ¿Para qué sirve app.config? – TheGateKeeper

+1

@TheGateKeeper: casi define un punto final, pero no realmente. Debe recordar que una configuración de IIS está impulsada por la solicitud, por lo que si proporciona el archivo .svc, simplemente le informa a IIS que esa es la ubicación en la que desea el servicio. Se comportaría de manera diferente si se tratara de un servicio TCP o una solución hospedada por el servicio de Windows. Recuerde que está compartiendo solicitudes de páginas web con su servicio. - Por cierto, seguimiento del comentario de Reniuz: http://msdn.microsoft.com/en-us/library/aa751792.aspx –

Respuesta

18

Lo que debe tener en cuenta es que IIS es, antes que nada, un servidor web y, en segundo lugar, un host WCF.

El trabajo del servidor web es representar los datos en función de una solicitud entrante. La mayoría de estos datos son contenido (la ruta de solicitud se correlacionó directamente con un archivo en el servidor) pero en el caso de un servicio WCF, IIS necesita saber a dónde ir desde aquí (por lo tanto, el archivo SVC y las "directivas" a IIS su servicio).

Todo el archivo SVC está haciendo está diciendo que al /x/y/z.svc Tengo un servicio de WCF que es capaz de una gran cantidadmás que simples páginas del lado del servidor y los archivos de contenido. Así que, por favor, agréguela, haga que esté disponible y permita que se procesen mis conexiones entrantes.

Si se tratara de un servicio WCF alojado en su propio puerto dedicado, esta sería una historia diferente porque ya no está conteniendo solicitudes adicionales para /Styles/base.css además de /MyService/GetSomeObject/.

+0

Gracias hombre muy bien explicado. – TheGateKeeper

+0

Hola, ¿me pueden ayudar con una última parte? Más en http://msdn.microsoft.com/en-us/library/ms733766.aspx, en el paso 8, le pide que cree la interfaz en la clase service.cs. Tengo mi interfaz como parte de un .dll, ¿todavía tengo que hacer esta parte? – TheGateKeeper

+0

Referenciarlo usando el espacio de nombres 'My.Custom.Assembly.IService' –

10

IIS Alojado .svc archivo consta de la directiva y el atributo @ServiceHost, Servicio.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %> 

El valor del atributo de servicioes el nombre del tipo CLR de la implementación del servicio. El uso de esta directiva es básicamente equivalente a crear un servidor de servicio utilizando el siguiente código en su programa de consola de alojamiento web.

new ServiceHost(typeof(MyNamespace.MyServiceImplementationTypeName)); 

y si su propia aplicación alojada está utilizando la configuración de WCF como 'punto final', 'unión', etc en el app.config , también se puede poner esto en web.config. El servicio alojado en IIS utiliza los mismos elementos de configuración y sintaxis que los servicios WCF alojados fuera de IIS. (Excepto algo así como que no puede controlar la dirección base/punto final en el servicio alojado en IIS.) Y coloque su archivo .dll precompilado en el directorio \ bin de la aplicación de su sitio IIS.

Y la dirección del servicio alojado en IIS será la dirección del archivo .svc. (http://localhost/Application1/MyService.svc).

Por favor, consulte la siguiente msdn - Deploying an IIS-Hosted WCF Service.

http://msdn.microsoft.com/en-us/library/aa751792.aspx

+0

Gracias amigo, agradable. – TheGateKeeper

Cuestiones relacionadas