WCF WSDL Generation Подробности о том, как и что означает каждый раздел - PullRequest
0 голосов
/ 22 августа 2011

Я тихий новичок в мире WCF.

Я искал и пытался понять файл WSDL, сгенерированный WCF. причина, по которой я смотрю, состоит в том, что у наших клиентов с Java и PHP возникают проблемы с импортом WSDL.

Может ли кто-нибудь помочь мне ответить на следующие вопросы:

- <xsd:schema targetNamespace="http://tempuri.org/Imports">
  <xsd:import schemaLocation="http://localhost:13818/WCFService2/Service.svc?xsd=xsd0" namespace="http://tempuri.org/" /> 
  <xsd:import schemaLocation="http://localhost:13818/WCFService2/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
  <xsd:import schemaLocation="http://localhost:13818/WCFService2/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/EvalServiceLibrary" /> 
  </xsd:schema>

Запрос 1

На основании какого условия генерируются теги схемы импорта? Это основано на количестве контрактов на данные и членов или что-то еще (что это?)

- <wsdl:message name="IEvalService_SubmitEval_InputMessage">
  <wsdl:part name="parameters" element="tns:SubmitEval" /> 
  </wsdl:message>
- <wsdl:message name="IEvalService_SubmitEval_OutputMessage">
  <wsdl:part name="parameters" element="tns:SubmitEvalResponse" /> 
  </wsdl:message>

Запрос 2: У меня нет имени сообщения IEvalService_SubmitEval_InputMessage. Как выше генерируется? Кроме того, что такое название детали и элемент?

 <wsdl:portType name="IEvalService">
- <wsdl:operation name="SubmitEval">
  <wsdl:input wsaw:Action="http://tempuri.org/IEvalService/SubmitEval" message="tns:IEvalService_SubmitEval_InputMessage" /> 
  <wsdl:output wsaw:Action="http://tempuri.org/IEvalService/SubmitEvalResponse" message="tns:IEvalService_SubmitEval_OutputMessage" /> 
  </wsdl:operation>
  </wsdl:portType>

Запрос 3:

не могли бы вы сказать мне, что такое "tns: IEvalService_SubmitEval_InputMessage" в приведенном выше фрагменте wsdl?

Fianally:

  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org
/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org
/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">

Есть ли способ удалить указанное ненужное пространство имен из кода WCF? Я знаю только, как изменить пространство имен.

Спасибо, куча.

1 Ответ

0 голосов
/ 22 августа 2011
  1. Эта часть зависит от количества используемых сборок. Первая строка представляет вашу сервисную сборку, вторая строка всегда включена - что некоторые предопределенные элементы MS (но все еще допустимые совместимые XSD), а третья строка, вероятно, библиотека с вашими контрактами данных.
  2. Шаблон по умолчанию - ServiceContractName_OperationContractName_X, где X - это InputMessage или OutputMessage, чтобы различаться между запросом и ответом. Часть определяет содержание сообщения, а элемент является ссылкой на схему XSD - этот элемент будет определен при импорте первой или второй схемы из вашего первого вопроса.
  3. tns вероятно означает целевое пространство имен - это префикс элементов, определенных в вашем документе WSDL. Это просто ссылка на сообщение, определенное в вашем втором вопросе.
  4. С материалом по умолчанию нет. Вам, вероятно, понадобится пользовательский кодировщик.

Какие ошибки возникают у ваших клиентов при импорте WSDL? Все эти части действительны.

...