2010-11-25 15 views
11

Estoy tratando de encontrar algunos buenos tutoriales que me muestren crear un servicio basado en SOAP simple utilizando WCF y desplegarlo. He estado buscando en Google durante las últimas 2 horas y parece que no puedo encontrar ningún recurso bueno. ¿Alguien puede ayudarme?WCF para construir el servicio basado en SOAP

Respuesta

10

En cuanto a los recursos: está el MSDN WCF Developer Center que tiene de todo, desde tutoriales para principiantes hasta artículos y código de muestra.

Además, echa un vistazo a la screen cast library up on MSDN para algunos trozos muy útiles, 10-15 minutos de información sobre casi cualquier tema relacionado con WCF que podría estar interesado.

También muy buenos son The Service Station artículos en la revista de MSDN sobre varios aspectos de WCF - algunos más básicos como Serialization in WCF o WCF Bindings in Depth, algunos más avanzados y esotéricos - ¡pero siempre vale la pena verlos!

Actualización: para aprender a usar WCF y SOAP, echa un vistazo a, p.

y un gran muchos más - hay un montón de tutoría y aprendizajes materiales en WCF utilizando los enlaces de jabón - cosas no sólo RESTO seguro!

+0

He ido todos esos artículos, pero ninguno dice específicamente sobre SOAP y WCF – aherlambang

+1

@EquinoX: WCF es SOAP - todos los enlaces habituales usan SOAP. Simplemente empiece a usar WCF: va a utilizar SOAP automágicamente (a menos que use webHttpBinding, que es REST) ​​ –

+0

Ese es el problema ... todo el ejemplo que existe usa webHttpBinding – aherlambang

0

WCF es una tecnología para servicios de construcción. No supone que los servicios sean servicios SOAP o RESTFul o cualquier otra cosa. Debes aprender los principios básicos de WCf, como Service y DataContracts, Endpoints, Bindings, etc., para poder trabajar con cualquier tipo de servicio.

Los enlaces dados marc_s son muy útiles para eso.

Ahora, en lo que respecta a SOAP, se trata de un formato \ tecnología utilizado para transportar mensajes de un punto extremo a otro. Estos detalles están cubiertos por el aspecto vinculante de la WCF. Cuando expone y consume servicios, solo tiene que elegir un Enlace que use SOAP.

Por lo tanto, debe usar los enlaces proporcionados por marc_s, aprender los principios básicos de WCF para crear un servicio. Luego sabrá cómo crear un servicio y qué enlace elegir para usar SOAP.

Espero que esto ayude.

2

puntos finales REST/SOAP para un servicio WCF

Se pueden exponer al servicio en dos puntos finales diferentes. el SOAP puede usar el enlace que admite SOAP, p. basicHttpBinding, RESTful puede usar la webHttpBinding. Asumo el servicio REST estará en JSON, en ese caso, es necesario configurar los dos puntos finales con la siguiente configuración comportamiento

<endpointBehaviors> 
<behavior name="jsonBehavior"> 
<enableWebScript/> 
</behavior> 
</endpointBehaviors> 

Un ejemplo de configuración de extremo en su escenario es

<services> 
<service name="TestService"> 
<endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/> 
<endpoint address="json" binding="webHttpBinding" behaviorConfiguration="jsonBehavior" contract="ITestService"/> 
</service> 
</services> 

por lo , el servicio estará disponible en

http://www.example.com/soap http://www.example.com/json Aplicar [WebGet] para el contrato de operación para que sea reparador. p.ej.

interfaz pública ITestService { [OperationContract] [WebGet] (cadena de texto) cadena HelloWorld }

Nota, si el servicio REST no está en JSON, los parámetros de las operaciones pueden no contienen tipo complejo . Para XML simple antiguo como formato de retorno, este es un ejemplo que funcionaría tanto para SOAP como para XML.

[ServiceContract(Namespace = "http://test")] 
public interface ITestService 
{ 
[OperationContract] 
[WebGet(UriTemplate = "accounts/{id}")] 
Account[] GetAccount(string id); 
} 

comportamiento POX para XML RESTO Plain Old

<behavior name="poxBehavior"> 
    <webHttp/> 
</behavior> 

puntos finales

<services> 
<service name="TestService"> 
<endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/> 
<endpoint address="xml" binding="webHttpBinding" behaviorConfiguration="poxBehavior" contract="ITestService"/> 
</service> 
</services> 

servicio estará disponible en

http://www.example.com/soap http://www.example.com/xml
solicitud REST probarlo en el navegador, la configuración del punto final de la petición del cliente
http://www.example.com/xml/accounts/A123

SOAP para servicio SOAP después de agregar la referencia de servicio,

<client> 
<endpoint address="http://www.example.com/soap" binding="basicHttpBinding" 
    contract="ITestService" name="BasicHttpBinding_ITestService" /> 

en C#

TestServiceClient client = new TestServiceClient(); 
client.GetAccount("A123"); 

Otra forma de hacerlo es exponiendo dos contratos de servicio diferentes y cada uno con una configuración específica. Esto puede generar algunos duplicados a nivel de código, sin embargo, al final del día, desea hacerlo funcionar.

Cuestiones relacionadas