Προγραμματισμός

Τα δύο λεπτά μου σε συμβόλαια στο WCF

Το WCF (Windows Communication Foundation) είναι μια ασφαλής, αξιόπιστη και επεκτάσιμη πλατφόρμα ανταλλαγής μηνυμάτων για την ανάπτυξη υπηρεσιών στο .Net. Όταν εργάζεστε με το WCF, πρέπει πρώτα να δημιουργήσετε μια σύμβαση παροχής υπηρεσιών και, στη συνέχεια, να ορίσετε τις λειτουργίες ή τις συμβάσεις λειτουργίας σε αυτήν. Έχετε πολλούς διαφορετικούς τύπους συμβάσεων στο WCF - συμβάσεις υπηρεσιών, συμβάσεις δεδομένων, συμβάσεις σφάλματος, συμβάσεις μηνυμάτων και συμβάσεις λειτουργίας.

Οι υπηρεσίες WCF εκθέτουν συμβόλαια για τη διευκόλυνση της επικοινωνίας με τους καταναλωτές υπηρεσιών. Ένα συμβόλαιο είναι ένα πρότυπο που χρησιμοποιείται στο WCF για να προσδιορίσει τι πρέπει να κάνει η υπηρεσία. Οι συμβάσεις στο WCF μπορούν να κατηγοριοποιηθούν σε δύο διαφορετικές κατηγορίες:

  • Συμπεριφορές Συμπεριφοράς: Στο WCF μπορούμε να έχουμε τρία συμβόλαια συμπεριφοράς, συγκεκριμένα ServiceContract, OperationContract και FaultContract.
  • Διαρθρωτικές συμβάσεις: Αυτές περιλαμβάνουν DataContract και MessageContract.

ServiceContracts και OperationContracts

Ένα ServiceContract χρησιμοποιείται για να δηλώσει τις λειτουργίες υπηρεσιών που είναι διαθέσιμες για τον καταναλωτή υπηρεσιών σε ένα συγκεκριμένο τελικό σημείο υπηρεσίας. Στην ουσία, το ServiceContract χρησιμοποιείται για τον καθορισμό των λειτουργιών που είναι διαθέσιμες για να καταναλώσει ο πελάτης υπηρεσίας. Ένα ServiceContract ορίζεται χρησιμοποιώντας το χαρακτηριστικό ServiceContract - συνήθως εφαρμόζεται σε μια διεπαφή.

Ένα ServiceContract μπορεί να ορίσει το μοτίβο ανταλλαγής μηνυμάτων μεταξύ του παρόχου υπηρεσιών και του καταναλωτή υπηρεσιών και μπορεί να έχει μία ή περισσότερες λειτουργίες υπηρεσιών. Αυτά είναι γνωστά ως συμβόλαια λειτουργίας. Ένα συμβόλαιο λειτουργίας χρησιμοποιείται για τον καθορισμό της υπογραφής της μεθόδου εξυπηρέτησης και επίσης της ροής συναλλαγής, της κατεύθυνσης της λειτουργίας της υπηρεσίας και επίσης των συμβάσεων (ων) σφάλματος που ενδέχεται να σχετίζονται

Η λίστα κωδικών που δίνεται στη συνέχεια απεικονίζει πώς ορίζεται μια τυπική σύμβαση παροχής υπηρεσιών.

[ServiceContract]

διεπαφή ITestService

{

[OperationContract]

string GetMessage ();

}

δημόσια τάξη TestService: ITestService

{

δημόσια συμβολοσειρά GetMessage ()

      {

επιστρέψτε "Γεια Κόσμος!";

      }

}

Στην λίστα κωδικών που εμφανίζεται παραπάνω, το μόνο συμβόλαιο λειτουργίας στη σύμβαση παροχής υπηρεσιών είναι το GetMessage. Σημειώστε πώς έχουν καθοριστεί τα χαρακτηριστικά. Επίσης, εάν έχετε μια μέθοδο στη σύμβαση παροχής υπηρεσιών που δεν έχει οριστεί το χαρακτηριστικό σύμβασης λειτουργίας, η μέθοδος δεν μπορεί να εκτεθεί από την υπηρεσία, δηλαδή, η μέθοδος δεν μπορεί να καταναλωθεί από τον καταναλωτή της υπηρεσίας.

DataContracts, MessageContracts και FaultContracts

Ένα DataContract χρησιμοποιείται για να περιγράψει τα δεδομένα που πρέπει να ανταλλάσσονται μέσω του καλωδίου. Χρησιμοποιείται για τον καθορισμό του τρόπου ανταλλαγής των δεδομένων μεταξύ του παρόχου υπηρεσιών και του καταναλωτή. Μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό [DataContract] για να διακοσμήσετε τον τύπο σας, έτσι ώστε τα δεδομένα να μπορούν να σειριοποιηθούν πριν περάσουν πάνω από το καλώδιο. Κατά τον ορισμό των συμβάσεων δεδομένων, θα πρέπει συνήθως να χρησιμοποιήσετε μέλη δεδομένων για να ορίσετε τις ιδιότητες της σύμβασης δεδομένων.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να διακοσμήσετε μια τάξη με το χαρακτηριστικό [DataContract].

[DataContract]

δημόσιος υπάλληλος

{

[Μέλος δεδομένων]

δημόσιο αναγνωριστικό συμβολοσειράς;

[Μέλος δεδομένων]

δημόσια συμβολοσειρά FirstName;

[Μέλος δεδομένων]

δημόσια συμβολοσειρά LastName;

}

Ένα συμβόλαιο μηνυμάτων είναι ένα που μπορεί να χρησιμοποιηθεί για να διακοσμήσει το σώμα ενός μηνύματος στο WCF. Στις περισσότερες περιπτώσεις δεν θα χρειαστεί να χρησιμοποιήσετε συμβόλαια μηνυμάτων - αρκεί η χρήση συμβάσεων δεδομένων. Εάν χρειάζεστε έναν ακριβή έλεγχο στα μηνύματα SOAP, μπορείτε να επωφεληθείτε από τις συμβάσεις μηνυμάτων. Μπορείτε να χρησιμοποιήσετε συμβόλαια μηνυμάτων για πρόσβαση στις κεφαλίδες SOAP.

Μπορείτε να χρησιμοποιήσετε συμβόλαια μηνυμάτων για να καθορίσετε τη μορφή του μηνύματος SOAP που πρέπει να απαιτείται. Ενώ το MessageHeaderAttribute μπορεί να εφαρμοστεί στα μέλη που θα θέλατε να συμπεριλάβετε στις κεφαλίδες SOAP, το MessageBodyMemberAttribute μπορεί να χρησιμοποιηθεί για τον ορισμό των μελών που θα πρέπει να αποτελούν μέρος του σώματος του μηνύματος SOAP.

Μπορείτε να ορίσετε μια σύμβαση μηνύματος εφαρμόζοντας το MessageContractAttribute όπως φαίνεται παρακάτω.

[Μήνυμα Συμβολαίου]

δημόσια τάξη συναλλαγή

{

[MessageHeader] δημόσια ημερομηνία DateTime;

[MessageBodyMember] δημόσιο int ποσό;

}

Ένα συμβόλαιο σφάλματος στο WCF χρησιμοποιείται για τον καθορισμό και τη διάδοση των σφαλμάτων που μπορούν να προκύψουν κατά την εκτέλεση μιας λειτουργίας υπηρεσίας. Στην ουσία, μπορείτε να αξιοποιήσετε συμβόλαια σφάλματος για να μεταβιβάσετε τα μηνύματα σφάλματος στον καταναλωτή υπηρεσιών όταν παρουσιαστεί σφάλμα στην υπηρεσία σας. Λάβετε υπόψη ότι μπορείτε να διακοσμήσετε τα συμβόλαια λειτουργίας χρησιμοποιώντας μια σύμβαση σφάλματος - ένα συμβόλαιο λειτουργίας μπορεί να έχει ένα ή περισσότερα συμβόλαια σφάλματος. Ακολουθεί ένα παράδειγμα που δείχνει πώς μπορούν να χρησιμοποιηθούν συμβάσεις σφαλμάτων. Σημειώστε ότι δύο συμβόλαια σφάλματος που ονομάζονται FaultContractOne και FaultContractTwo έχουν εφαρμοστεί στη Σύμβαση σύμβασης λειτουργίας στο παράδειγμα κώδικα που δίνεται παρακάτω.

[ServiceContract]

Σύμβαση διεπαφής

{

[FaultContract (typeof (FaultContractOne))]

[FaultContract (typeof (FaultContractTwo))]

[OperationContract]

string GetMessage ();

 }

$config[zx-auto] not found$config[zx-overlay] not found