Este Pareciera ser un problema común. Los metadatos del servicio describen el contrato de datos. Es decir, la estructura de los datos intercambiados, sin ninguna información de validación.
He estado resolviendo este problema implementando una capa de validación en la parte superior de la capa de servicio. Va como sigue:
Además de un WSDL, el autor del servicio y el consumidor también acuerdan un XSD refinado que describe todos los detalles de validación además de la mera estructura de los contratos de datos.
Cada parte (xml) serializa y valida los contratos de datos contra el refinado XSD.
Muestra de "pseudocódigo" para un método de servicio que valida la solicitud contra un XSD.
public string MyServiceMethod(MyDataType m){
string s = XmlSerialize(m);
if(XSDValidate(s)){
return ProcessRequest(m);
}else{
return BuildErrorResponse("The request is not compliant with the contract");
}
}
El consumidor del servicio también puede implementar una lógica similar para validar los datos de solicitud antes de enviarlos al servidor.
Gracias. Es la forma en que estoy siguiendo actualmente. Pero estoy tratando de entender si es posible obtener el esquema y sus restricciones del contrato de datos. –