6.6 Pakalpojuma metožu implementācijas atšķirības izmantojot “Contract-First” pieeju

Contract-First pieejā servera klases atbilst xsd shēmas elementiem. Piemēram, ja xsd satur elementu Thing ar tipu ThingStructure, tad cs saturēs klasi Thing, kam saturēs atribūtu Thing1 ar tipu ThingStructure. Tālāk piemērs, kas to ilustrē. Izmantojot Code-First pieeju ir šāds implementācijas kods:

public AnswerIdAndErrorStructure ReviewAnswer(ReviewAnswerRequestStructure request)
{
    AnswerIdAndErrorStructure response = new AnswerIdAndErrorStructure();
    response.ResponseErrorList = new List<ErrorStructure>();
    ...
    xmlStr += XmlUtil.xmlParamCode(1, "AnswerId", null, request.AnswerId);
    ...
   return response;

Contract-First variantā šis pats kods ir šāds:

public ReviewAnswerResponse ReviewAnswerImplementation(ReviewAnswerRequest request1)
{
    ReviewAnswerRequestStructure request = request1.ReviewAnswerRequest1;
    AnswerIdAndErrorStructure responseStructure = new AnswerIdAndErrorStructure();
    responseStructure.ResponseErrorList = new List<ErrorStructure>();
    ...
    xmlStr += XmlUtil.xmlParamCode(1, "AnswerId", null, request.AnswerId);
    ...
   return new ReviewAnswerResponse(responseStructure);

Kā redzams, pirmajā Code-First variantā metodes ieejas/izejas parametri satur "Structure" sufiksus, t.i., izmanto ReviewAnswerResponseStructure, kas sakrīt ir AnswerIdAndErrorStructure, nevis augšējo līmeni ReviewAnswerResponse. Otrajā Contract-First varianta kodā metodes ķermenī tiek paņemts ReviewAnswerRequest/ReviewAnswerResponse apakšelements un operēts ar to.