ten wydaje się być powszechnym problemem. Metadane usługi opisuje kontrakt danych. Oznacza to, że struktura wymienianych danych, bez żadnych informacji o walidacji.
Rozwiązałem ten problem, implementując warstwę sprawdzania poprawności na warstwie usługi. Działa to następująco:
Oprócz dokumentu WSDL autor i konsument usług zgadzają się również na dopracowany XSD, który opisuje wszystkie szczegóły dotyczące walidacji oprócz samej struktury umów danych.
Każda ze stron (xml) serializuje i zatwierdza kontrakty danych na podstawie udoskonalonego XSD.
Przykładowy "pseudokod" dla metody serwisowej, która sprawdza żądanie przed 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");
}
}
Konsument usług może również zaimplementować podobną logikę do sprawdzania poprawności danych żądania przed wysłaniem go do serwera.
Dzięki. Tak właśnie podążam. Ale próbuję zrozumieć, czy jest możliwe uzyskanie schematu i jego ograniczeń z datacontract. –