Come utilizzare il servizio WCF da BizTalk 2010
-
27-10-2019 - |
Domanda
Dispongo di un servizio Web che devo utilizzare dall'orchestrazione BizTalk. Ho definito schemi di messaggi che uso in BizTalk, hanno l'aspetto
<?xml version="1.0" encoding="utf-16"?>
<xs:schema
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
xmlns:ns0="https://DTIB.PropertySchema"
elementFormDefault="qualified"
targetNamespace="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation=".\CommonTypes.xsd" />
<xs:element name="ProviderRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Parameters" type="ParametersType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Nel servizio WCF ho metodi definiti come
public ProviderResponse Provide(ProviderRequest providerRequest) {...}
dove ProviderRequest
è definito come
[DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
public class ProviderRequest
{
[DataMember]
public Header Header { get; set; }
[DataMember]
public Parameter[] Parameters { get; set; }
}
Quando creo la porta di trasmissione e provo a inviare un messaggio ProviderRequest, fallisce con diversi errori.
Qual è il metodo migliore per utilizzare un servizio WCF che utilizza gli stessi schemi definiti nel progetto BizTalk?
Soluzione
La soluzione migliore è eseguire un'istanza del servizio e quindi "Aggiungi elementi generati" -> "Consuma servizio WCF" da Visual Studio.
Questo genererà i tuoi messaggi di servizio XSD e tipi di porta ed è un modo a basso attrito per fare ciò che stai cercando di fare.
Altri suggerimenti
Domanda piuttosto interessante, uno scenario che potrebbe accadere ad altri.
Ecco alcuni suggerimenti.
Caso più comune: devi utilizzare un servizio e desideri utilizzare quei messaggi - Usa il suggerimento di Hugh "Aggiungi elemento generato ..."
Caso meno comune: hai già creato uno schema che anche un servizio utilizza (lo stesso) - Usa il suggerimento di Hugh "Aggiungi elemento generato ..." - Rimuovi lo schema che è un duplicato, tuo o da quello creato
Caso non così comune: desideri utilizzare due servizi che utilizzano lo stesso schema - Usa il suggerimento di Hugh "Aggiungi elemento generato ..." - Rimuovi lo schema che è un duplicato da uno degli
generatiNon mi è mai capitato un caso: hai già creato uno schema che anche un servizio utilizza (NON lo stesso, ma lo stesso nome root e spazio dei nomi) - Non c'è niente da fare, questo non funzionerà (fuori dalla scatola)