Reputation: 9113
I am new to WCF and I wrote some service in wcf. It is now published on the Intranet and some applications are already using that service. At the moment, I have to make the documentation about the input parameters / data type and output parameters for other developers. It is ok, if we use .Net platform to consume the service. It automatically creates the services/classes in the WebReferences folder and Intellisense work perfectly.
But if the user is using PHP or classic ASP, it doesn't work that way. They have to know exact name, type of the parameters and I have to document the services very carefully.
By using WSDL as below: how can we know the datatype and parameters of the service we want to use? If it doesn't show in WSDL, where should I look at these information? If someone gave me WCF service without documentation, how could I know how to use that service?
Thanks very much.
This following is my Interface about the Service
[ServiceContract]
public interface IEmail
{
[OperationContract]
bool InsertEmail(string Subject, string SentFrom, string SentTo, int ApplicationID, int TemplateID, string DataText);
}
The following is the exact WSDL info about my service.
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions name="Email" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
- <wsdl:types>
- <xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd0" namespace="http://tempuri.org/" />
<xsd:import schemaLocation="http://myservice/Email.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
</xsd:schema>
</wsdl:types>
- <wsdl:message name="IEmail_InsertEmail_InputMessage">
<wsdl:part name="parameters" element="tns:InsertEmail" />
</wsdl:message>
- <wsdl:message name="IEmail_InsertEmail_OutputMessage">
<wsdl:part name="parameters" element="tns:InsertEmailResponse" />
</wsdl:message>
- <wsdl:portType name="IEmail">
- <wsdl:operation name="InsertEmail">
<wsdl:input wsaw:Action="http://tempuri.org/IEmail/InsertEmail" message="tns:IEmail_InsertEmail_InputMessage" />
<wsdl:output wsaw:Action="http://tempuri.org/IEmail/InsertEmailResponse" message="tns:IEmail_InsertEmail_OutputMessage" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="BasicHttpBinding_IEmail" type="tns:IEmail">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="InsertEmail">
<soap:operation soapAction="http://tempuri.org/IEmail/InsertEmail" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="Email">
- <wsdl:port name="BasicHttpBinding_IEmail" binding="tns:BasicHttpBinding_IEmail">
<soap:address location="http://myservice/Email.svc" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Upvotes: 2
Views: 2468
Reputation: 12966
If you mean that you can't see all the types your service uses in the WSDL, this is because the WSDL WCF creates is often (maybe always) split into several bits. These other bits are linked to from the main WSDL.
So if you browse to http://myservice/Email.svc?wsdl
, you'll see the WSDL you've put in your question. In here, you can see links to two other schemas - http://myservice/Email.svc?xsd=xsd0
and http://myservice/Email.svc?xsd=xsd1
. If you browse to these, you'll find the type information you're looking for.
Upvotes: 2