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

Επιλέγοντας τη σωστή τεχνολογία για τη δημιουργία του επιπέδου υπηρεσίας στο .NET

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

Δύο διακεκριμένοι διεκδικητές που έχετε κατά το σχεδιασμό του επιπέδου υπηρεσίας στο .Net είναι το WCF και το Web API. Το WCF είναι μια πλατφόρμα ανάπτυξης για SOA - παρέχει πολλές δυνατότητες και υποστηρίζει πολλά διαφορετικά πρωτόκολλα μεταφοράς. Ενώ το WCF είναι ένα ενοποιημένο πλαίσιο για την κατασκευή εφαρμογών προσανατολισμένων στις υπηρεσίες, το Web API είναι μια ελαφριά εναλλακτική λύση για τη δημιουργία υπηρεσιών RESTful που μπορούν να καταναλωθούν από πολλούς διαφορετικούς πελάτες. Οι υπηρεσίες RESTful χρησιμοποιούν βασικό HTTP και είναι απλές με πολύ μικρότερο ωφέλιμο φορτίο σε σύγκριση με τις υπηρεσίες SOAP. Μπορείτε να χρησιμοποιήσετε το WebHttpBinding στο WCF για να δημιουργήσετε υπηρεσίες RESTful που δεν είναι SOAP μέσω HTTP. Το WCF είναι πολύ πιο ευπροσάρμοστο με την έννοια ότι μπορεί να υποστηρίξει πολλά πρωτόκολλα μεταφοράς - HTTP, TCP κ.λπ. Μπορείτε να αξιοποιήσετε το WCF για να δημιουργήσετε ασφαλείς, αξιόπιστες και συναλλακτικές υπηρεσίες που μπορούν να υποστηρίξουν μηνύματα, διπλή επικοινωνία και κανάλια γρήγορης μεταφοράς όπως, TCP , Ονομαζόμενοι σωλήνες ή UDP.

Εάν πρέπει να δημιουργήσετε ελαφριές, προσανατολισμένες στους πόρους υπηρεσίες μέσω HTTP που μπορούν να αξιοποιήσουν τις πλήρεις δυνατότητες του πρωτοκόλλου HTTP, χρήση εκδόσεων, έλεγχο προσωρινής μνήμης για προγράμματα περιήγησης και ταυτόχρονη χρήση Etags, το Web API είναι μια καλή επιλογή. Θα πρέπει να επιλέξετε Web API έναντι WCF στο επίπεδο υπηρεσίας σας όταν θέλετε να εκθέσετε τις υπηρεσίες σας σε ένα ευρύ φάσμα πελατών, π.χ., προγράμματα περιήγησης στο Web, κινητά τηλέφωνα, tablet κ.λπ. Το Web API είναι ελαφρύ και είναι κατάλληλο για συσκευές που έχουν περιορισμένο αριθμό εύρος ζώνης όπως τα έξυπνα τηλέφωνα. Ένας από τους σημαντικότερους περιορισμούς που αντιμετώπισα κατά τη χρήση του WCF είναι η εκτεταμένη διαμόρφωσή του - το Web API είναι πολύ πιο απλό και εύκολο στη χρήση. Παραδέχομαι ότι το WCF είναι πολύ πιο ευέλικτο σε σύγκριση με το Web API, αλλά, αν δεν χρειάζεστε τις δυνατότητες που παρέχει το WCF και το μόνο που χρειάζεστε είναι απλώς RESTful υπηρεσίες μέσω HTTP, θα προτιμούσα πάντα το Web API καθώς είναι ελαφρύ και απλό στη χρήση .

Θα ήθελα επίσης να παρουσιάσω μια συζήτηση σχετικά με τις διαφορές μεταξύ του Web API και του ASP.Net MVC, καθώς υπάρχουν ορισμένες παρανοήσεις σχετικά με το πότε να επιλέξω το ένα από το άλλο. Η επιλογή μεταξύ ASP.Net MVC και Web API εξαρτάται από πολλούς παράγοντες. Υπάρχουν ορισμένες σκέψεις που θα πρέπει να έχετε υπόψη σας πριν αποφασίσετε να χρησιμοποιήσετε οποιοδήποτε από αυτά.

Σημειώστε ότι το Web API χρησιμοποιεί ρήματα HTTP και επομένως αντιστοίχιση με βάση ρήματα HTTP για μεθόδους αντιστοίχισης σε αντίστοιχες διαδρομές. Δεν μπορείτε να έχετε υπερφορτωμένες μεθόδους για το ίδιο ρήμα HTTP για μια συγκεκριμένη διαδρομή. Θα πρέπει να γνωρίζετε αυτόν τον περιορισμό σχεδίασης (αν και υπάρχουν λύσεις) όταν επιλέγετε μεταξύ ASP.Net MVC και Web API. Σε αντίθεση με το ASP.Net MVC, το Web API χρησιμοποιεί δρομολόγηση που βασίζεται σε ρήματα HTTP και όχι URI που περιέχουν ενέργειες. Έτσι, μπορείτε να χρησιμοποιήσετε το Web API για να γράψετε υπηρεσίες RESTful που μπορούν να αξιοποιήσουν το πρωτόκολλο HTTP - μπορείτε να σχεδιάσετε υπηρεσίες που είναι ευκολότερες για δοκιμή και συντήρηση. Η δρομολόγηση στο Web API είναι πολύ απλούστερη και μπορείτε να αξιοποιήσετε τη διαπραγμάτευση περιεχομένου απρόσκοπτα. Το μοντέλο δρομολόγησης στο ASP.Net MVC περιλαμβάνει ενέργειες στα URI.

Ένα άλλο σημείο που θα θέλατε να λάβετε υπόψη είναι εάν θέλετε να εκτεθεί η λειτουργικότητά σας για μια συγκεκριμένη εφαρμογή ή εάν η λειτουργικότητα πρέπει να είναι γενική. Εάν θέλετε να εκθέσετε τις υπηρεσίες σας μόνο σε μία εφαρμογή, θα θέλατε να χρησιμοποιήσετε το ASP.Net MVC - ο ελεγκτής σε μια εφαρμογή ASP.Net MVC είναι συγκεκριμένος για την εφαρμογή. Αντίθετα, θα θέλατε μια προσέγγιση API Ιστού εάν οι ανάγκες της επιχείρησής σας απαιτούν να εκθέσετε τη λειτουργικότητα γενικά. Θα προτιμούσα να χρησιμοποιήσω την προσέγγιση Web API αν η λειτουργικότητα είναι πιο κεντρική στα δεδομένα και η προσέγγιση ASP.Net MVC εάν η λειτουργικότητα είναι πιο κεντρική.

Θα πρέπει να χρησιμοποιήσετε το Web API μέσω ASP.Net MVC εάν θέλετε ο ελεγκτής σας να επιστρέφει δεδομένα σε πολλές μορφές όπως, JSON, XML κ.λπ. Το Web API βαθμολογεί επίσης πάνω από το ASP.Net MVC στην ικανότητά του να αυτο-φιλοξενείται (παρόμοιο με το WCF). Θα χρειαστείτε τους ελεγκτές ASP.Net MVC να φιλοξενούνται στον ίδιο διακομιστή ιστού όπου έχει φιλοξενηθεί η εφαρμογή, επειδή οι ελεγκτές ASP.Net MVC αποτελούν μέρος της ίδιας εφαρμογής. Αντίθετα, μπορείτε επίσης να φιλοξενήσετε τους ελεγκτές API Ιστού σας εκτός των υπηρεσιών IIS - μπορείτε να τον φιλοξενήσετε σε έναν ελαφρύ προσαρμοσμένο κεντρικό υπολογιστή και να επιτρέψετε στην υπηρεσία να καταναλωθεί από πολλούς διαφορετικούς πελάτες.