2010-12-21 17 views
5

Estoy integrando un producto de otro proveedor con nuestros procesos existentes.¿Se puede consumir un servicio WCF como si fuera un servicio web ASP.NET?

Este producto interactúa con nuestro sistema a través de un servicio web ASP.NET. Al igual que en, necesito escribir un servicio web ASP.NET que tenga los nombres y parámetros de métodos particulares que el proveedor haya especificado.

Bastante simple, pero queremos migrar la mayor cantidad de material posible a WCF. No he usado WCF mucho todavía, pero como lo veo, es el reemplazo de ASP.NET Web Services (y otras cosas).

Al ver cómo no puedo modificar el producto del proveedor, la única forma en que podría escribir este nuevo servicio web utilizando WCF es si un servicio WCF puede consumirse como si fuera un servicio web ASP.NET (es decir, hasta el producto del proveedor está preocupado, está consumiendo un servicio web ASP.NET).

¿Se pueden consumir WCF Services de esta manera?

Respuesta

5

sí, los servicios web son servicios web. En general, WCF es más flexible y más potente que ASP.NET, pero puede obtener el mensaje en línea dentro y fuera de un servicio WCF para que se vea exactamente igual a los mensajes de un servicio ASMX. Pero, WCF también es diferente por defecto.

La migración debe ser casi mecánica. Reemplazar el archivo .asmx que contiene lo siguiente:

<%@ WebService 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Class="CommunicationService" %> 

... con un archivo que contiene este .svc:

<%@ ServiceHost 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Service="CommunicationService" %> 

... y ya está casi terminado.

Pero, la configuración predeterminada para un servicio web WCF es diferente a la de un servicio web ASP.NET. En particular, los espacios de nombres XML de los mensajes entrantes y salientes pueden ser diferentes. No todo el mundo especifica espacios de nombres XML distintos para su servicio y mensajes, pero para aquellos que lo hacen, la migración será un problema. La diferencia de comportamiento (WCF-vs-ASPNET) hará que las aplicaciones que lograron llamar a un servicio ASMX no funcionen con un servicio WCF "convertido".

This article analiza el problema con cierto detalle y describe una buena solución: use un ServiceHost personalizado.

El código de host del servicio en el artículo anterior está incompleto, ya que funciona para corregir solo el esquema de solicitud; es posible que también deba hacer algo similar para el esquema de respuesta.

Buena suerte.

0

Además de las otras respuestas y que apuntan a su preocupación de migración, todavía puede abrir para mantener sus antiguos servicios web funcionando como lo está ahora, pero señale estos servicios web (existentes) al servicio de host WCF. Así que tanto el servicio web nuevo como el antiguo funcionan a la perfección.

Cuestiones relacionadas