WSDL padrão
Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
O WSDL padrão é retornado quando a cadeia de argumentos wsdl é passada para um ponto de extremidade SOAP HTTP que está sendo executado em uma instância do SQL Server; por exemplo: http://MyServer/MyEndpoint/sql?wsdl.
Para documentos WSDL padrão, os elementos do parâmetro contêm mapeamentos de tipo dos mapeamentos sqltypes:type WSDL para tipos de dados do sistema do SQL Server. Para obter mais informações sobre esses mapeamentos, consulte Mapeamentos de tipo de dados em XML Web Services Nativos.
O documento WSDL padrão gerado por um ponto de extremidade especifica o tipo de parâmetro fazendo referência a um dos tipos definidos nos Mapeamentos de tipos de dados ou fazendo referência a subtipos desses tipos e, em seguida, adicionando restrições complementares. Para todos os tipos de cadeia de caracteres e binários, o WSDL padrão retornado pelo ponto de extremidade incluirá um subtipo que inclui a faceta maxLength do XSD para especificar o número de bytes ou caracteres.
A faceta maxLength não é gerada para tipos de comprimento de variável que são declarados com o especificador (max). Para os tipos de dados decimal e numeric, o WSDL padrão irá gerar um subtipo que inclui as facetas totalDigits e fractionDigits do XSD que descreverão a precisão e a escala do parâmetro.
Mapeamentos de tipo do SQL Server para o CLR para o WSDL padrão
Instâncias de WSDL padrão incluem suporte para mapear tipos de dados do SQL Server para tipos do CLR (Common Language Runtime) que são fornecidos no Microsoft.NET Framework 2.0. Como alguns tipos de dados do CLR internos não se alinham bem com os tipos de dados do SQL Server, o namespace System.Data.SqlTypes é fornecido no .NET Framework 2.0. Ele possibilita um sistema de tipos gerenciados que poderia manipular especificamente muitas das facetas do sistema de tipos de dados do SQL Server que, de outra forma, não poderiam ser mapeados nos tipos XSD.
Para a versão .NET Framework 2.0, a ferramenta WSDL (Web Services Definition Language, Wsdl.exe) tem suporte interno para a geração dos mapeamentos de tipos do SQL Server para o CLR apropriados para as instâncias do WSDL padrão. Esse suporte está disponível se você estiver usando o Wsdl.exe no prompt de comando ou através da adição de uma referência da Web para um projeto do Visual Studio 2005.
Nas instâncias da WSDL que são geradas através do uso desse suporte a mapeamento de tipo, todos os tipos de dados do SQL Server são codificados através da declaração e do uso de um URI de namespace (https://schemas.microsoft.com/sqlserver/2004/sqltypes) e seu prefixo correspondente (sqltypes). A seguinte tabela mostra como os mapeamentos **sqltype:**type em instâncias de WSDL geradas pela ferramenta Wsdl.exe são mapeados para os seus tipos CLR correspondentes.
Elemento do tipo WSDL |
Tipo CLR |
---|---|
sqltypes:char |
System.Data.SqlTypes.SqlString |
sqltypes:nchar |
System.Data.SqlTypes.SqlString |
sqltypes:varchar |
System.Data.SqlTypes.SqlString |
sqltypes:nvarchar |
System.Data.SqlTypes.SqlString |
sqltypes:text |
System.Data.SqlTypes.SqlString |
sqltypes:ntext |
System.Data.SqlTypes.SqlString |
sqltypes:varbinary |
System.Data.SqlTypes.SqlBinary |
sqltypes:binary |
System.Data.SqlTypes.SqlBinary |
sqltypes:image |
System.Data.SqlTypes.SqlBinary |
sqltypes:timestamp |
System.Byte[] |
sqltypes:timestampNumeric |
System.Int64 |
sqltypes:decimal |
System.Data.SqlTypes.SqlDecimal |
sqltypes:numeric |
System.Data.SqlTypes.SqlDecimal |
sqltypes:bigint |
System.Data.SqlTypes.SqlInt64 |
sqltypes:int |
System.Data.SqlTypes.SqlInt32 |
sqltypes:smallint |
System.Data.SqlTypes.SqlInt16 |
sqltypes:tinyint |
System.Data.SqlTypes.SqlByte |
sqltypes:bit |
System.Data.SqlTypes.SqlBoolean |
sqltypes:float |
System.Data.SqlTypes.SqlDouble |
sqltypes:real |
System.Data.SqlTypes.SqlSingle |
sqltypes:datetime |
System.Data.SqlTypes.SqlDateTime |
sqltypes:smalldatetime |
System.Data.SqlTypes.SqlDateTime |
sqltypes:money |
System.Data.SqlTypes.SqlMoney |
sqltypes:smallmoney |
System.Data.SqlTypes.SqlMoney |
sqltypes:uniqueidentifier |
System.Data.SqlTypes.SqlGuid |
sqltypes:xml |
System.Xml.XmlNode[]1 |
sqltypes:sqlDbType="Sql_Variant" |
System.Object |
sqltypes:sqlDbType="Udt" |
System.Xml.XmlElement2 |
sqltypes:sqlDbType="Structured" |
System.Data.DataSet |
1 mapeado para um invólucro de classe para uma matriz de objetos System.Xml.XmlNode. A classe de invólucro é nomeada xml para parâmetros XML sem tipo, mas usa um nome gerado para parâmetros XML tipados.
2 mapeado para uma classe de invólucro ao redor de um único objeto System.Xml.XmlElement que usa um nome gerado.
Como o tipo de dados xml é tratado no WSDL padrão
Quando são definidos parâmetros de tipo de dados xml no WSDL padrão, eles são mapeados para o tipo de dados sqltypes:xml do WSDL. Isto permite que qualquer XML formado seja especificado sem nenhum conteúdo adicional ou validação baseada em esquema. Para obter mais informações, consulte Implementando XML no SQL Server
Para parâmetros do tipo de dados xml associados a um namespace XML, o documento WSDL padrão gerará um elemento <xsd:complexType> que conterá restrições para o tipo sqltypes:xml. O XML tipado, por sua vez, especifica o tipo xsd:any como a regra de restrição. Conforme mostrado no seguinte exemplo, essa restrição, por sua vez, especificará o atributo processContents definindo seu valor como strict e também especificará o atributo namespace e definirá seu valor como uma lista de namespaces XML correspondentes associados à coleção do esquema à qual o XML tipado está ligado.
<xsd:element name="xmlVal" minOccurs="1" maxOccurs="1" nillable="true">
<xsd:complexType >
<xsd:restriction base="sqltypes:xml">
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="strict" namespace="NS1 NS2 ...." />
</xsd:restriction>
</xsd:complexType>
</xsd:element>
Consulte também