- Το Razor Pages προσφέρει ένα μοντέλο με επίκεντρο τις σελίδες, βασισμένο στο ASP.NET Core, και μοιράζεται το ίδιο ισχυρό δρομολόγησης, middleware και μηχανή προβολής Razor με το MVC.
- Τα πραγματικά έργα επικεντρώνονται στον φάκελο Pages, wwwroot, appsettings.json και Program.cs, όπου διαμορφώνονται οι υπηρεσίες, το middleware και ο χειρισμός σφαλμάτων.
- Εργαλεία όπως το Visual Studio, το Rider και το VS Code βελτιστοποιούν την ανάπτυξη, τον εντοπισμό σφαλμάτων, την πλοήγηση και την αναδιαμόρφωση μοντέλων, προβολών και σύνταξης Razor.
- Το ASP.NET Core απλοποιεί τη δημοσίευση εφαρμογών Razor σε IIS, Azure, προσαρμοσμένους διακομιστές ή Docker, επιτρέποντας επεκτάσιμες και επαναλήψιμες αναπτύξεις.

Αν προέρχεστε από το Angular plus ASP.NET Web API και αρχίζετε να απολαμβάνετε τη C# στο backend, το Razor Pages είναι ένας απίστευτα φυσικός τρόπος για να φέρετε αυτή τη χαρά στο frontend χωρίς να εγκαταλείψετε τις υπάρχουσες γνώσεις σας στη JavaScript. Αντί να πηδάτε με το κεφάλι σε μια εντελώς διαφορετική στοίβα UI, μπορείτε να παραμείνετε στην οικεία περιοχή του ASP.NET Core, να χρησιμοποιήσετε τη σύνταξη Razor για απόδοση από την πλευρά του διακομιστή και να πασπαλίζετε JavaScript όπου έχει νόημα.
Το ASP.NET Core Razor Pages είναι η προτεινόμενη προσέγγιση της Microsoft για τη δημιουργία σύγχρονων εφαρμογών ιστού σε .NET, προσφέροντας ένα καθαρό μοντέλο βασισμένο σε σελίδες που βασίζεται στον ισχυρό αγωγό ASP.NET Core. Είναι cross-platform, λειτουργεί άψογα με εργαλεία όπως το Visual Studio, το Visual Studio Code και το JetBrains Rider, και κλιμακώνεται από μικροσκοπικά πρωτότυπα σε εφαρμογές παραγωγικού επιπέδου, με υποστήριξη από βάσεις δεδομένων. Σε αυτόν τον οδηγό, θα δούμε πώς δομούνται οι εφαρμογές Razor Pages στον πραγματικό κόσμο, πώς συνδέει τα πάντα με το Program.cs, πώς λειτουργούν τα στατικά αρχεία και η διαμόρφωση και πώς λαμβάνονται υπόψη τα εργαλεία, ο εντοπισμός σφαλμάτων και η ανάπτυξη.
Τι είναι στην πραγματικότητα το ASP.NET Core Razor Pages (και πώς συγκρίνεται με το MVC)
Το Razor Pages είναι μια λειτουργία του ASP.NET Core που σας επιτρέπει να δημιουργείτε εφαρμογές ιστού γύρω από σελίδες αντί για ελεγκτές, προσφέροντας ένα απλούστερο νοητικό μοντέλο ενώ παράλληλα χρησιμοποιείτε το ίδιο υποκείμενο πλαίσιο με το MVC. Στο εσωτερικό του, εκτελείται στην ίδια στοίβα δρομολόγησης, middleware και φιλοξενίας με τους ελεγκτές και τις προβολές, αλλά κάθε σελίδα χειρίζεται τη δική της συμπεριφορά αντί να συγκεντρώνει τα πάντα σε κλάσεις ελεγκτών.
Κάθε σελίδα Razor συνήθως αντιπροσωπεύεται από ένα ζεύγος αρχείων: ένα αρχείο .cshtml για σήμανση και ένα αρχείο .cshtml.cs για τη λογική C# της σελίδας. Το αρχείο .cshtml περιέχει τον κώδικα HTML σας αναμεμειγμένο με σύνταξη Razor (για παράδειγμα, βρόχους, συνθήκες και βοηθούς HTML), ενώ ο κώδικας πίσω από το αρχείο .cshtml.cs περιέχει μεθόδους χειρισμού όπως OnGet, OnPost, ιδιότητες μοντέλου και οποιαδήποτε λογική που απαιτείται για την απόδοση ή την επεξεργασία της σελίδας.
Πριν από το Razor Pages, το κυρίαρχο μοτίβο στο ASP.NET ήταν το MVC, όπου οι ελεγκτές επέστρεφαν προβολές και δρομολογούσαν όλα τα αιτήματα μέσω μεθόδων δράσης. Το MVC εξακολουθεί να υποστηρίζεται πλήρως και είναι ένα μοτίβο δοκιμασμένο σε μάχη με ισχυρές συμβάσεις, αλλά για πολλά σενάρια το Razor Pages είναι πιο γρήγορο στη συλλογιστική επειδή ο κώδικας που φορτώνει και επεξεργάζεται μια σελίδα βρίσκεται φυσικά δίπλα στο markup της αντί να είναι θαμμένος σε ξεχωριστό ελεγκτή.
Παρόλο που το Razor Pages μετατοπίζει την εστίαση μακριά από τους ελεγκτές, εξακολουθεί να χρησιμοποιεί την ίδια μηχανή προβολής Razor και υποστηρίζει τόσο τους HtmlHelpers όσο και τους TagHelpers για τη δημιουργία δυναμικής HTML. Τα TagHelpers είναι ιδιαίτερα χρήσιμα: επεκτείνουν τις κανονικές ετικέτες HTML με χαρακτηριστικά όπως asp-action, asp-controller or asp-route ώστε να μπορείτε να συνδέσετε συνδέσμους και φόρμες σε τελικά σημεία του backend χωρίς να γράψετε ένα σωρό μη αυτόματες διευθύνσεις URL ή ενσωματωμένο JavaScript.
Για προγραμματιστές που γνωρίζουν ήδη JavaScript και έχουν εμπειρία σε πλαίσια SPA, το Razor Pages προσφέρει μια υβριδική προσέγγιση: HTML με απόδοση διακομιστή για γρήγορες πρώτες φορτώσεις και SEO, με JavaScript και βιβλιοθήκες front-end τοποθετημένες στην κορυφή όπου χρειάζεται. Δεν είστε δεσμευμένοι σε ή ενάντια σε κάποιο συγκεκριμένο πλαίσιο JS και μπορείτε να διατηρήσετε το backend και το frontend στην ίδια λύση, γεγονός που απλοποιεί την ανάπτυξη και τη συντήρηση.
Δημιουργία και λειτουργία μιας διαδικτυακής εφαρμογής Razor Pages
Όταν δημιουργείτε ένα νέο έργο ASP.NET Core Razor Pages χρησιμοποιώντας το Visual Studio, το Visual Studio Code ή το Rider, το πρότυπο συνδέει μια ελάχιστη αλλά ολοκληρωμένη εφαρμογή, συμπεριλαμβανομένου του Program.cs, του φακέλου Pages, των αρχείων διαμόρφωσης και της στατικής ρίζας web. Από την πρώτη στιγμή, αποκτάτε έναν λειτουργικό ιστότοπο που μπορείτε να εκτελέσετε αμέσως και στη συνέχεια να τον εξελίξετε σε κάτι πιο εξελιγμένο, όπως έναν κατάλογο ταινιών ή οποιαδήποτε άλλη εφαρμογή που βασίζεται σε δεδομένα.
Πριν από την εκτέλεση της εφαρμογής σε HTTPS, το ASP.NET Core πρέπει να χρησιμοποιήσει ένα πιστοποιητικό ανάπτυξης που εμπιστεύεται το λειτουργικό σας σύστημα και την πρώτη φορά που θα εκτελέσετε το έργο ενδέχεται να δείτε ένα παράθυρο διαλόγου που θα σας ζητά να το εμπιστευτείτε. Όταν εμφανιστεί αυτό το παράθυρο διαλόγου, επιλέγοντας Ναι υποδεικνύει ότι είστε σύμφωνοι με τη χρήση του τοπικού πιστοποιητικού ανάπτυξης για την κίνηση HTTPS στον υπολογιστή σας, κάτι που απαιτείται για τον σωστό έλεγχο ασφαλών τελικών σημείων χωρίς προειδοποιήσεις προγράμματος περιήγησης.
Σε Windows, macOS ή Linux, το Visual Studio Code σάς επιτρέπει να εκκινήσετε την εφαρμογή πατώντας το Ctrl+F5 για εκτέλεση χωρίς εντοπισμό σφαλμάτων ή χρησιμοποιώντας τον πίνακα "Εκτέλεση και εντοπισμός σφαλμάτων" εάν θέλετε να συνδέσετε το πρόγραμμα εντοπισμού σφαλμάτων. Την πρώτη φορά, ο κώδικας VS μπορεί να σας ζητήσει να επιλέξετε έναν τύπο προγράμματος εντοπισμού σφαλμάτων, όπως C#, .NET 5+ και .NET Core ή μια συγκεκριμένη διαμόρφωση εκκίνησης όπως C#: RazorPagesMovie [https] RazorPagesMovie ανάλογα με την έκδοση .NET και τη διαμόρφωση του χώρου εργασίας σας.
Μετά την εκκίνηση, το προεπιλεγμένο πρόγραμμα περιήγησής σας ανοίγει σε μια διεύθυνση URL παρόμοια με https://localhost:<port>, όπου η θύρα έχει αντιστοιχιστεί ή καθοριστεί τυχαία στο launchSettings.json και βλέπετε την αρχική σελίδα που εξυπηρετείται από την εφαρμογή Razor Pages. Σε ορισμένα πρότυπα, θα δείτε αντ' αυτού http://localhost:5001 ή άλλο λιμάνι· το κλειδί είναι ότι localhost υποδεικνύει ότι είναι το δικό σας μηχάνημα και όχι εξωτερικός κεντρικός υπολογιστής.
Μόλις ολοκληρώσετε τις δοκιμές, μπορείτε να διακόψετε την εφαρμογή που εκτελείται από το IDE σας: στο Visual Studio Code χρησιμοποιήστε το μενού Εκτέλεση και επιλέξτε Διακοπή εντοπισμού σφαλμάτων ή πατήστε αλλαγή+F5, ενώ βρίσκεστε στο Visual Studio για Mac, χρησιμοποιείτε την εντολή Debug > Stop Debugging. Αυτό τερματίζει την παρουσία του διακομιστή ιστού Kestrel που ξεκίνησε για την περίοδο λειτουργίας και απελευθερώνει τη θύρα για άλλες εκτελέσεις.
Κατανόηση της δομής του έργου: φάκελοι και βασικά αρχεία
Οι πραγματικές εφαρμογές Razor Pages είναι οργανωμένες γύρω από μερικούς σημαντικούς φακέλους και αρχεία ρυθμίσεων με τα οποία θα εργάζεστε συνεχώς: Pages, wwwroot, appsettings.json και Program.cs (και σε παλαιότερες εκδόσεις, Startup.cs). Η εξοικείωση με την πλοήγηση σε αυτά τα κομμάτια είναι ζωτικής σημασίας, επειδή σχεδόν κάθε σεμινάριο, δείγμα ή έργο παραγωγής χρησιμοποιεί τις ίδιες συμβάσεις.
Ο φάκελος Pages είναι η καρδιά ενός έργου Razor Pages, που περιέχει όλες τις σελίδες .cshtml και τα αρχεία κώδικα .cshtml.cs πίσω από αυτές, μαζί με κοινόχρηστη διάταξη και μερικές προβολές. Κάθε ζεύγος σελίδων (για παράδειγμα Index.cshtml και Index.cshtml.cs) αντιπροσωπεύει ένα σημείο με δυνατότητα κλήσης στην εφαρμογή σας και ειδικά αρχεία που ξεκινούν με μια υπογράμμιση, όπως _Layout.cshtml, ορίζουν περιεχόμενο που επαναχρησιμοποιείται σε πολλές σελίδες.
Το αρχείο διάταξης, που συνήθως ονομάζεται _Layout.cshtml, ορίζει το Chrome του ιστότοπού σας, όπως την επάνω γραμμή πλοήγησης, το υποσέλιδο και την ειδοποίηση πνευματικών δικαιωμάτων, και παρέχει ένα σημείο για την απόδοση του κυρίως μέρους κάθε μεμονωμένης σελίδας. Όταν αλλάζετε τη διάταξη, επηρεάζετε άμεσα την εμφάνιση και την αίσθηση όλων των Razor Pages που τη χρησιμοποιούν, επομένως είναι το σημείο εκκίνησης για επεξεργασία μενού, branding και κοινόχρηστων σεναρίων ή στυλ.
Ο φάκελος wwwroot είναι η καθορισμένη ρίζα ιστού όπου βρίσκονται τα στατικά στοιχεία, συμπεριλαμβανομένων των CSS, JavaScript, εικόνων και απλών αρχείων HTML που μπορούν να εξυπηρετηθούν απευθείας από τον διακομιστή ιστού. Οτιδήποτε τοποθετείται κάτω από το wwwroot είναι προσβάσιμο από το πρόγραμμα περιήγησης (ανάλογα με τη διαμόρφωση του στατικού αρχείου σας), καθιστώντας το το κατάλληλο σπίτι για φύλλα στυλ ιστότοπου, βιβλιοθήκες από την πλευρά του πελάτη και εικόνες που αναφέρονται στο markup σας.
Η διαμόρφωση για την εφαρμογή συνήθως αποθηκεύεται στο appsettings.json (και παραλλαγές ειδικές για το περιβάλλον όπως το appsettings.Development.json), οι οποίες περιέχουν ρυθμίσεις όπως συμβολοσειρές σύνδεσης και σημαίες λειτουργιών. Το σύστημα διαμόρφωσης του ASP.NET Core φορτώνει αυτά τα αρχεία και τα συγχωνεύει με μεταβλητές περιβάλλοντος και άλλους παρόχους, καθιστώντας απλή τη σύνδεση ενοτήτων σε κλάσεις επιλογών με ισχυρή τυποποίηση στον κώδικά σας.
Program.cs και ο αγωγός ASP.NET Core
Το αρχείο Program.cs περιέχει το σημείο εισόδου για την εφαρμογή Razor Pages και καθορίζει τον τρόπο με τον οποίο ρυθμίζονται ο κεντρικός υπολογιστής ιστού, οι υπηρεσίες και ο αγωγός middleware πριν το πρώτο αίτημα φτάσει στον ιστότοπό σας. Στις σύγχρονες εκδόσεις ASP.NET Core, το Program.cs χρησιμοποιεί ένα βελτιστοποιημένο μοντέλο «ελάχιστης φιλοξενίας» με μια δήλωση ανώτατου επιπέδου που δημιουργεί ένα WebApplicationBuilder και στη συνέχεια δημιουργεί και διαμορφώνει το WebApplication παράδειγμα.
Το τυπικό μοτίβο στο Program.cs ξεκινά με var builder = WebApplication.CreateBuilder(args); το οποίο ρυθμίζει έναν κεντρικό υπολογιστή με κοινές προεπιλογές και στη συνέχεια καλεί builder.Services.AddRazorPages(); για να καταχωρήσετε το Razor Pages με το κοντέινερ έγχυσης εξάρτησης. Μετά τη διαμόρφωση των υπηρεσιών, var app = builder.Build(); δημιουργεί το αντικείμενο εφαρμογής το οποίο στη συνέχεια συνδέετε με middleware και endpoints.
Ο χειρισμός σφαλμάτων και η συμπεριφορά ασφαλείας εξαρτώνται σε μεγάλο βαθμό από το περιβάλλον, επομένως συνήθως βλέπετε έναν έλεγχο περιβάλλοντος όπως if (!app.Environment.IsDevelopment()) για να ενεργοποιήσετε λειτουργίες παραγωγικού επιπέδου. Μέσα σε αυτή την κατάσταση θα βρείτε συνήθως app.UseExceptionHandler("/Error"); το οποίο στέλνει τα ανεπίλυτα σφάλματα σε μια ειδική σελίδα σφάλματος και app.UseHsts(); η οποία ενεργοποιεί το HTTP Strict Transport Security (HSTS) για να δώσει εντολή στα προγράμματα περιήγησης να χρησιμοποιούν πάντα HTTPS για τον τομέα σας.
Στη συνέχεια, ο αγωγός middleware συναρμολογείται με κλήσεις όπως app.UseHttpsRedirection();, app.UseStaticFiles(); or app.MapStaticAssets();, app.UseRouting(); και προαιρετικά app.UseAuthorization(); ακολουθούμενες από αντιστοιχίσεις τελικών σημείων. Η ανακατεύθυνση HTTPS αναγκάζει τα μη ασφαλή αιτήματα HTTP να αναβαθμιστούν σε HTTPS, το στατικό middleware αρχείων (ή η νεότερη στατική αντιστοίχιση στοιχείων στο .NET 9) επιτρέπει την άμεση εξυπηρέτηση πόρων από το wwwroot και η δρομολόγηση αποφασίζει ποιο τελικό σημείο χειρίζεται κάθε εισερχόμενη διεύθυνση URL.
Τέλος, οι σελίδες Razor συνδέονται με τη δρομολόγηση με app.MapRazorPages(); προαιρετικά αλυσοδεμένος με .WithStaticAssets(); σε νεότερα πρότυπα για την ενσωμάτωση της βελτιστοποίησης στατικών πόρων και η εφαρμογή ξεκινά χρησιμοποιώντας app.Run();. Σε αυτό το σημείο, η εφαρμογή ακούει σε διαμορφωμένες θύρες και ο διακομιστής Kestrel είναι έτοιμος να χειριστεί πραγματικά αιτήματα, είτε τοπικά σε ανάπτυξη είτε σε έναν κεντρικό υπολογιστή παραγωγής όπως το IIS, το Azure App Service ή το Docker.
Σελίδες Razor, μοντέλα και μοντέλα προβολής σε πραγματικές εφαρμογές
Πίσω από κάθε μη τετριμμένη εφαρμογή Razor Pages βρίσκεται ένα σύνολο μοντέλων τομέα και μοντέλων προβολής που αντιπροσωπεύουν τα δεδομένα σας και τον τρόπο εμφάνισής τους, είτε διαχειρίζεστε έναν κατάλογο ταινιών, ένα ιστολόγιο είτε έναν πίνακα ελέγχου επιχείρησης. Τα μοντέλα συνήθως αντιστοιχίζονται στενά με οντότητες βάσης δεδομένων, ενώ τα μοντέλα προβολής μπορούν να προσαρμοστούν σε μία συγκεκριμένη οθόνη ή ροή χρήστη, συνδυάζοντας πολλά μοντέλα ή προ-μορφοποιημένες τιμές για ευκολότερη απόδοση.
Μια συνηθισμένη ροή εργασίας ανάπτυξης είναι να ξεκινάτε με απλές κλάσεις C# που χρησιμοποιούν πεδία και υπογραφές μεθόδων ως stubs και να τις εξελίσσετε σταδιακά σε κατάλληλα μοντέλα με ενθυλακωμένες ιδιότητες, χαρακτηριστικά επικύρωσης και λογική. Εργαλεία όπως το JetBrains Rider κάνουν αυτή την εξέλιξη πιο ομαλή με ενέργειες πρόθεσης που μετατρέπουν αυτόματα τα πεδία σε ιδιότητες, δημιουργούν παράγωγους τύπους για ιεραρχίες κληρονομικότητας και εφαρμόζουν άλλες αναδιαμορφώσεις καθώς βελτιώνετε το μοντέλο αντικειμένου σας.
Η κληρονομικότητα και οι διεπαφές βοηθούν στην επιβολή μιας συνεκτικής δομής για τα μοντέλα σας, ευθυγραμμίζοντάς τα με πραγματικούς επιχειρηματικούς κανόνες και επιτρέποντας τον πολυμορφισμό όπου ορισμένες συμπεριφορές είναι κοινές αλλά οι υλοποιήσεις διαφέρουν. Για παράδειγμα, μπορεί να έχετε μια βάση ContentItem τύπος με παράγωγο Movie, Series Documentary κλάσεις, καθεμία με ανεπαίσθητες διαφορές αλλά με ένα κοινό συμβόλαιο που χρησιμοποιείται σε όλη την εφαρμογή σας.
Μόλις τα μοντέλα σας είναι στη θέση τους, οι σελίδες Razor ή οι προβολές MVC μπορούν να δημιουργηθούν είτε χειροκίνητα είτε μέσω εργαλείων scaffolding, τα οποία δημιουργούν σελίδες για την καταχώριση, τη δημιουργία, την επεξεργασία και τη διαγραφή οντοτήτων. Η σκαλωσιά επιταχύνει δραματικά την πρώιμη ανάπτυξη και διασφαλίζει ότι η δρομολόγηση, η σύνδεση μοντέλων και η επικύρωση είναι σωστά συνδεδεμένες, τις οποίες στη συνέχεια μπορείτε να προσαρμόσετε με τη δική σας σήμανση και στυλ.
Η σύνταξη Razor που χρησιμοποιείται στα αρχεία .cshtml συνδυάζεται ομαλά με μοντέλα και μοντέλα προβολής με ισχυρή πληκτρολόγηση, επιτρέποντάς σας να εμφανίζετε δεδομένα, να εκτελείτε βρόχους και υποθετικούς όρους και να δημιουργείτε συνδέσμους και φόρμες χρησιμοποιώντας HtmlHelpers ή TagHelpers χωρίς να χάνετε την ασφάλεια κατά τη μεταγλώττιση. Αυτός ο συνδυασμός C# και markup διατηρεί μεγάλο μέρος της λογικής στην πλευρά του διακομιστή, αλλά εξακολουθεί να αποδίδει καθαρή HTML στο πρόγραμμα περιήγησης που λειτουργεί καλά με CSS και JavaScript.
Εργασία με τη σύνταξη Razor, τους TagHelpers και την πλοήγηση στο Rider
Η σύνταξη Razor είναι ένα ελαφρύ επίπεδο πάνω από την HTML που ενεργοποιείται κάθε φορά που @ εμφανίζεται το σύμβολο, διευκολύνοντας την ενσωμάτωση εκφράσεων, εντολών ή βοηθητικών κλήσεων C# απευθείας στη σήμανσή σας. Μπορείτε να κάνετε επανάληψη σε λίστες στοιχείων, να εμφανίσετε ή να αποκρύψετε στοιχεία με βάση συνθήκες ή να εμφανίσετε τιμές και μορφοποιημένες ημερομηνίες χωρίς να γράψετε ξεχωριστή γλώσσα προτύπου ή να ψεκάσετε JavaScript παντού.
Τα TagHelpers μοιάζουν με μια φυσική επέκταση της HTML όπου ειδικά χαρακτηριστικά που ξεκινούν με asp- τροποποιούν τη συμπεριφορά ή την έξοδο των στοιχείων, συχνά αντικαθιστώντας παλαιότερες μεθόδους HtmlHelper και εξαλείφοντας την ανάγκη για ενσωματωμένη επικόλληση σεναρίων. Παραδείγματα περιλαμβάνουν asp-action asp-controller για τη δρομολόγηση ετικετών αγκύρωσης και φορμών σε συγκεκριμένες ενέργειες ή για τη δρομολόγηση χαρακτηριστικών όπως asp-route-id για την ομαλή διαβίβαση παραμέτρων σε URL.
Η υποστήριξη IDE είναι πολύ σημαντική όταν ασχολείστε με την HTML και το Rider παρέχει χρήσιμες λειτουργίες όπως breadcrumbs στο κάτω μέρος του προγράμματος επεξεργασίας για να εμφανίσετε την τρέχουσα τοποθεσία σας στη δομή του εγγράφου. Τα breadcrumbs μπορούν να προσαρμοστούν στις Προτιμήσεις ή στις Επιλογές στην ενότητα Επεξεργαστής και κάνουν την πλοήγηση σε μεγάλα αρχεία Razor με ένθετες ετικέτες πολύ λιγότερο επώδυνη.
Στα έργα MVC, το Rider κατανοεί επίσης τις συμβάσεις που συνδέουν τους ελεγκτές, τις ενέργειες και τις προβολές, επομένως η τοποθέτηση του δείκτη του ποντικιού πάνω από τα αποτελέσματα των ενεργειών μπορεί να σας δείξει τις πιθανές διαδρομές προβολής και Ctrl + Κάντε κλικ (Ή Cmd-Κλικ σε macOS) μεταβαίνει απευθείας στο αντίστοιχο αρχείο .cshtml. Συντομεύσεις όπως Ctrl + B or Cmd-B δίνουν έναν γρήγορο τρόπο πλοήγησης στη βάση κώδικα χωρίς να ψάχνετε σε εξερευνητές λύσεων.
Πέρα από τα εργαλεία που αφορούν ειδικά το Razor, το Rider περιλαμβάνει ένα ευρύ σύνολο προθέσεων και γρήγορων διορθώσεων για HTML, CSS και JavaScript που σας βοηθούν να γράφετε καθαρό, καλά δομημένο κώδικα από την πλευρά του πελάτη μέσα στο ίδιο IDE με το backend C#. Αυτή η στενή ενσωμάτωση μπορεί να εξοικονομήσει πολλούς διακόπτες περιβάλλοντος κατά τη δημιουργία πολύπλοκου, διαδραστικού περιβάλλοντος εργασίας χρήστη που εξακολουθεί να βασίζεται σε προβολές ή σελίδες Razor που αποδίδονται από τον διακομιστή.
Αποσφαλμάτωση εφαρμογών Razor Pages και ASP.NET Core
Η αποσφαλμάτωση (debugging) είναι μια καθημερινή δραστηριότητα στην ανάπτυξη ιστοσελίδων και οι εφαρμογές ASP.NET Core που εκτελούν Razor Pages δεν αποτελούν εξαίρεση, επομένως είναι απαραίτητο να έχετε ισχυρή υποστήριξη αποσφαλμάτωσης στο IDE σας. Τόσο το Visual Studio όσο και το Rider παρέχουν διαδραστικά προγράμματα εντοπισμού σφαλμάτων που μπορούν να συνδεθούν με τη διεργασία Kestrel, να περιηγηθούν στον κώδικα C#, να ελέγξουν μεταβλητές και να αξιολογήσουν εκφράσεις ενώ η εφαρμογή εκτελείται.
Το πρόγραμμα εντοπισμού σφαλμάτων του Rider στα Windows υποστηρίζει τις λειτουργίες Επεξεργασία και Συνέχεια, οι οποίες σας επιτρέπουν να τροποποιείτε τον κώδικα ενώ η εφαρμογή βρίσκεται σε παύση σε ένα σημείο διακοπής και να εφαρμόζετε τις αλλαγές χωρίς να επανεκκινήσετε ολόκληρη την περίοδο λειτουργίας εντοπισμού σφαλμάτων. Αυτή η δυνατότητα διόρθωσης μικρών λαθών ή πειραματισμού κατά την εκτέλεση εντοπισμού σφαλμάτων επιταχύνει σημαντικά την αντιμετώπιση προβλημάτων, ειδικά σε μεγάλα έργα με μη τετριμμένους χρόνους εκκίνησης.
Η προεπιλεγμένη σελίδα εξαιρέσεων προγραμματιστή στο ASP.NET Core ενεργοποιείται αυτόματα όταν το περιβάλλον έχει οριστεί σε Ανάπτυξη, παρέχοντάς σας μια λεπτομερή ανίχνευση στοίβας, πληροφορίες αιτήματος και διαγνωστικά κάθε φορά που προκύπτουν μη αντιμετωπισμένες εξαιρέσεις. Αυτή η προβολή είναι εξαιρετικά χρήσιμη κατά την τοπική αποσφαλμάτωση, αλλά επικίνδυνη στην παραγωγή, επειδή μπορεί να διαρρεύσει εσωτερικές λεπτομέρειες σχετικά με την εφαρμογή και το περιβάλλον σας.
Για την προστασία ευαίσθητων πληροφοριών, τα περιβάλλοντα παραγωγής και δοκιμών συνήθως απενεργοποιούν τη σελίδα εξαίρεσης προγραμματιστή και αντ' αυτού χρησιμοποιούν τη διαμορφωμένη διαδρομή χειρισμού εξαιρέσεων, συχνά /Error, για να εμφανιστεί μια φιλική προς το χρήστη οθόνη σφάλματος κατά την καταγραφή των πραγματικών λεπτομερειών από την πλευρά του διακομιστή. Αυτή η συμπεριφορά ελέγχεται στο Program.cs μέσω του ελέγχου περιβάλλοντος και των κλήσεων προς UseExceptionHandler UseHsts.
Όταν τα πράγματα πραγματικά ξεφεύγουν από τα συνηθισμένα και τα εκπαιδευτικά βίντεο δεν ταιριάζουν με τη συμπεριφορά σας, είναι συχνά χρήσιμο να συγκρίνετε το έργο σας με ένα γνωστό καλό δείγμα που παρέχεται από τη Microsoft ή άλλες έγκυρες πηγές. Πολλά επίσημα εκπαιδευτικά βίντεο του Razor Pages δημοσιεύουν ένα ολοκληρωμένο δείγμα έργου που μπορείτε να δείτε ή να κατεβάσετε για να διαφοροποιηθείτε από τον δικό σας κώδικα και να εντοπίσετε ελλείπουσες ρυθμίσεις, τυπογραφικά λάθη ή αρχεία που δεν έχουν τοποθετηθεί σωστά.
Δημοσίευση και ανάπτυξη πραγματικών εφαρμογών ASP.NET Core Razor
Η αποστολή της εφαρμογής Razor Pages είναι το σημείο όπου όλη η προηγούμενη δομή και διαμόρφωση αποδίδει, επειδή το ASP.NET Core υποστηρίζει διάφορες επιλογές ανάπτυξης που ταιριάζουν σε διαφορετικά περιβάλλοντα φιλοξενίας και ροές εργασίας. Είτε προτιμάτε το IIS σε Windows, τα κοντέινερ Linux στο Docker ή μια διαχειριζόμενη πλατφόρμα όπως το Azure App Service, η διαδικασία δημοσίευσης μπορεί να καθοδηγηθεί από το MSBuild και να ενσωματωθεί στους αγωγούς CI/CD σας.
Το Visual Studio και το Rider προσφέρουν προφίλ δημοσίευσης που μπορούν να συσκευάσουν την εφαρμογή σας και να την αναπτύξουν στο IIS χρησιμοποιώντας το Web Deploy (MSDeploy), να την αντιγράψουν σε έναν τοπικό φάκελο ή φάκελο δικτύου ή να την προωθήσουν απευθείας σε έναν απομακρυσμένο διακομιστή μέσω FTP, FTPS ή SFTP. Η δημιουργία ενός προφίλ δημοσίευσης κωδικοποιεί τις ρυθμίσεις ανάπτυξής σας, έτσι ώστε οι μελλοντικές δημοσιεύσεις να είναι τόσο απλές όσο η επιλογή του προφίλ και το κλικ σε ένα κουμπί ή η εκτέλεση μιας εντολής.
Για σενάρια cloud, η υπηρεσία Azure App Service είναι ένας δημοφιλής στόχος και τα IDE ενσωματώνουν εργαλεία Azure για τη δημιουργία και δημοσίευση εφαρμογών web απευθείας από το έργο σας, βασιζόμενα και πάλι στο MSBuild και το MSDeploy. Αυτή η προσέγγιση διατηρεί τη συνοχή της κατασκευής και της ανάπτυξης μεταξύ τοπικών περιβαλλόντων και περιβαλλόντων cloud και μπορεί να αυτοματοποιηθεί σε Azure DevOps, GitHub Actions ή άλλα συστήματα CI.
Το Docker είναι μια άλλη πρώτης τάξεως επιλογή για το ASP.NET Core, επιτρέποντάς σας να αποθηκεύσετε την εφαρμογή Razor Pages σε κοντέινερ, ώστε να μπορεί να εκτελείται προβλέψιμα σε οποιοδήποτε περιβάλλον που υποστηρίζει κοντέινερ. Το Rider και το Visual Studio μπορούν να σας βοηθήσουν να δημιουργήσετε αρχεία Docker και διαμορφώσεις docker‑compose, επιτρέποντας μια ροή εργασίας όπου αναπτύσσετε, εντοπίζετε σφάλματα και αναπτύσσετε την εφαρμογή σας μέσα σε κοντέινερ, είτε τοπικά είτε σε ορχηστρικά συστήματα όπως το Kubernetes.
Ανεξάρτητα από τον προορισμό, το βήμα δημοσίευσης μεταγλωττίζει τον κώδικα C#, ομαδοποιεί τις προβολές Razor, αντιγράφει στατικά στοιχεία και, ανάλογα με τις ρυθμίσεις, μπορεί επίσης να δημιουργήσει ένα αυτόνομο περιβάλλον εκτέλεσης (runtime), ώστε ο κεντρικός υπολογιστής να μην χρειάζεται κοινόχρηστη εγκατάσταση .NET. Αυτή η ομαδοποίηση είναι που μετατρέπει το έργο ανάπτυξής σας σε ένα αναπτυσσόμενο τεχνούργημα έτοιμο για χρήση από πραγματικούς χρήστες.
Συνδυάζοντας όλα αυτά τα κομμάτια — από τα πιστοποιητικά ανάπτυξης και τα Program.cs, μέσω των Pages και wwwroot, έως τον εντοπισμό σφαλμάτων και τη δημοσίευση — το Razor Pages προσφέρει έναν ρεαλιστικό τρόπο για τη δημιουργία πραγματικών εφαρμογών ιστού ASP.NET Core που είναι συντηρήσιμες, αποδοτικές και άνετες για προγραμματιστές που ήδη απολαμβάνουν να εργάζονται σε C# και δεν είναι έτοιμοι να βασιστούν πλήρως σε ένα πλαίσιο μίας σελίδας για κάθε περίπτωση.