Documento WSDL predefinito
Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Il documento WSDL predefinito viene restituito quando viene passata la stringa argomento wsdl a un endpoint SOAP HTTP in esecuzione su un'istanza di SQL Server, ad esempio http://MyServer/MyEndpoint/sql?wsdl.
Per i documenti WSDL predefiniti, gli elementi dei parametri contengono mapping dei tipi dai mapping sqltypes:type WSDL ai tipi di dati di sistema di SQL Server. Per ulteriori informazioni su tali mapping, vedere Mapping dei tipi di dati in servizi Web XML nativi.
Nel documento WSDL predefinito generato da un endpoint viene specificato il tipo di parametro mediante il riferimento a uno dei tipi definiti in Data Type Mappings oppure ai sottotipi di tali tipi e quindi aggiungendo ulteriori restrizioni. Per tutti i tipi stringa e binari, il documento WSDL predefinito restituito dall'endpoint contiene un sottotipo che include il facet XSD maxLength per specificare il numero di byte o caratteri.
Il facet maxLength non viene generato per tipi a lunghezza variabile dichiarati con l'identificatore (max). Per i tipi di dati decimal e numeric, il documento WSDL predefinito genera un sottotipo che include i facet XSD totalDigits e fractionDigits destinati a descrivere la precisione e la scala del parametro.
Mapping dei tipi CLR per il documento WSDL predefinito in SQL Server
Le istanze del documento WSDL predefinito includono il supporto per il mapping dei tipi di dati di SQL Server nei tipi Common Language Runtime (CLR) implementati in Microsoft .NET Framework 2.0. A causa del non corretto allineamento di alcuni tipi di dati CLR predefiniti con i tipi di dati di SQL Server, in .NET Framework 2.0 è implementato lo spazio dei nomi System.Data.SqlTypes. Un sistema di tipi gestiti può, grazie a questa caratteristica, gestire in maniera specifica molti dei facet del sistema dei tipi di dati di SQL Server dei quali altrimenti non potrebbe essere eseguito il mapping in tipi XSD.
In .NET Framework 2.0, lo strumento WSDL (Wsdl.exe) supporta per impostazione predefinita la generazione appropriata di mapping dei tipi da SQL Server a CLR per le istanze dei documenti WSDL predefiniti. Questo supporto è disponibile utilizzando Wsdl.exe al prompt dei comandi o mediante l'aggiunta di un riferimento Web a un progetto Visual Studio 2005.
Nelle istanze WSDL generate utilizzando questo tipo di supporto di mapping, tutti i tipi di dati di SQL Server vengono codificati dichiarando e utilizzando un URI dello spazio dei nomi specifico (https://schemas.microsoft.com/sqlserver/2004/sqltypes) e il suo prefisso corrispondente (sqltypes). Nella tabella seguente viene mostrato come viene eseguito il mapping di **sqltype:**type in istanze WSDL generate mediante lo strumento Wsdl.exe per eseguire il mapping nei rispettivi tipi CLR corrispondenti.
Elemento del 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 Mappato in una classe wrapper per una matrice di oggetti System.Xml.XmlNode. La classe wrapper è denominata xml per i parametri XML non tipizzati, ma utilizza un nome generato per i parametri XML tipizzati.
2 Mappato in una classe wrapper che racchiude un singolo oggetto System.Xml.XmlElement che utilizza un nome generato.
Gestione del tipo di dati xml nel documento WSDL predefinito
Quando nel documento WSDL predefinito sono definiti parametri di tipi di dati xml, questi vengono mappati nel tipo di dati WSDL sqltypes:xml. Ciò consente di specificare codice XML corretto senza alcun contenuto aggiuntivo o convalida basata sullo schema. Per ulteriori informazioni, vedere Implementazione di XML in SQL Server.
Per i parametri di tipi di dati xml associati a uno spazio dei nomi XML, il documento WSDL predefinito genererà un elemento <xsd:complexType> contenente restrizioni sul tipo sqltypes:xml. Il codice XML tipizzato specifica a sua volta il tipo xsd:any come regola di restrizione. Nell'esempio seguente viene mostrato come a sua volta questa restrizione specificherà l'attributo processContents impostando il suo valore su strict e anche l'attributo namespace impostando il suo valore su un elenco degli spazi dei nomi XML corrispondenti associati all'insieme di schemi al quale è destinato il codice XML tipizzato.
<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>
Vedere anche