BlazingPizza: Blazor App von Anfang bis Ende. Teil 1. Einrichten der Umgebung

Hallo alle zusammen! Wenn Sie von Blazor gehört haben , aber immer noch nicht verstehen, was es ist. Dann sind Sie an der Adresse. Dies ist der erste Artikel in einer Reihe von 12 Artikeln, der Sie durch alle Kreise der Hölle führt, während Sie eine Anwendung auf Blazor erstellen . Am Ende werden wir einen vorgefertigten Standort für eine kleine Pizzeria haben, ganz auf dem Niveau der vorgefertigten Standorte für einige Pizzerien. Deshalb wirst du stolz sein;)

Dies wird etwas ungewöhnlich für HelloWorld sein . Ich bin bewusst auf einige Komplikationen eingegangen , die am besten sofort als Regeln verstanden werden, insbesondere ist dies eine typische dreischichtige Architektur: View-Domain-DataAccess .

Ich glaube, es ist besser, ihm sofort zu folgen, als etwas Künstliches zu zeigen, das nichts mit dem Leben zu tun hat. Wie die Praxis zeigt, bleiben viele Entwickler auf der HelloWorld-Ebene stecken und verwenden dann das, was sie beim Entwerfen großer Anwendungen von vornherein gesehen haben (Hallo an meine Ex-Green Bank des Landes und ihre Service.cs mit dem gesamten Anwendungscode in einer Datei, ich scherze nicht).

Ich werde Ihnen sagen, wie Sie Daten zwischen Ebenen ohne Schmerzen und ohne die Notwendigkeit, viele Codezeilen zu schreiben, abbilden können. Wir werden das Ganze auch in Azure DevOps bereitstellen. Ja, jetzt ist dies ein notwendiger Bestandteil jedes Entwicklungsprozesses. Wir alle fliegen heute in den Clouds, einige vor Ort , andere in Azure oder AWS .

Damit der erste Artikel keine banale Geschichte darüber ist, wie man eine Taste in Visual Studio und dann eine andere drückt , dachte ich, es wäre schön, eine kleine Herausforderung zu arrangieren und zum ersten Mal etwas unter Linux zu versuchen .

Ich erwarte, dass Sie nur minimale Kenntnisse in ASP.NET, C # haben. Obwohl dies HelloWorld ist, werde ich nicht darüber sprechen, was Program.cs ist.

Als nächstes diskutieren wir, was noch für die Programmierung unter Linux benötigt wird .
Achtung: In den folgenden Absätzen wird mein Eindruck von der realen Arbeit mit Linux vermittelt, die es aus bester Absicht installiert hat. Wenn Linux Ihnen begeisterte Gefühle vermittelt und Sie keinen einzigen Tag leben können, ohne die Befehlszeile zu öffnen, können Sie Ihre Stimmung ruinieren. Lesen Sie diesen Artikel weiter!

Verbreitung: Ubuntu


In Wahrheit werden Sie mit dem Programmieren unter Linux nicht vertraut sein, aber wenn Sie sich auf das Geschäft konzentrieren möchten, installieren Sie Ubuntu 19.10 . Ich habe es beim zweiten Mal geschafft, es ist gut, dass es zumindest beim zweiten Mal so war. Und alle Teams haben das erste Mal abgeschlossen, fast alle. Ich rate dringend davon ab, andere Distributionen zu installieren . Ich habe den ganzen Tag damit verbracht, die neueste OpenSuse einzurichten , und sie dann einfach abgerissen.

Warum müssen Sie überhaupt unter Linux entwickeln ? Zumindest, weil .Net Core dies unterstützt und Ihr Arbeitgeber möglicherweise beschließt, Geld zu sparen und alles unter Linux auf dem Produkt auszuführen. Und meiner Meinung nach ist das Schreiben unter dem Betriebssystem, auf dem Ihre Anwendung tatsächlich ausgeführt wird, besser.

IDE-Gewinner: Fahrer


Wie gesagt, es ist immer noch nicht möglich, unter Linux bequem zu schreiben. Bei allen Übeln wählen wir den kleineren, Rider.

Darüber hinaus gibt es zwei weitere beliebte IDEs, z. B. die Texteditoren MonoDevelop und Visual Studio Code . Ich werde Ihnen die Nachteile jeder Lösung genauer erläutern.

Monodevelop


Der süßeste der drei Redakteure. Lesbare Schriftarten (minderwertige Schriftarten sind das erste, was Ihnen bei der Umstellung auf Linux auffällt). Leider gibt es hinter der schönen Shell eine Lücke, trotz der installierten .Net Core 2.1 und 3.1 hat MonoDevelop die ConsoleApplication mit dem Ziel .Net Core 1.1 dauerhaft erstellt. Blazor hat es weder geschafft, das Projekt zu erstellen, noch das manuell erstellte zu starten.

Visual Studio Code


Genau genommen handelt es sich hierbei nicht um eine IDE , sondern um einen Texteditor mit Syntaxhervorhebung und Erstellungsfunktion. Von den Vorteilen des 3. oder 4. Versuchs startete VS Code auf wundersame Weise das WebAssembly- Projekt, das ich erstellt hatte, als MonoDevelop und Rider dies ablehnten. Das ist ein Plus. Ich liste die Nachteile weiter auf: Eine unlesbare und kleine Standardschrift, ich denke, nach ein paar Monaten regelmäßiger Arbeit werden Ihre Augen einfach verrückt.

Das nächste Minus ergibt sich aus der Tatsache, dass dies ein Texteditor ist, eine so einfache Aktion wie das Umbenennen, Verschieben von Projekten? Alles, was Visual Studio automatisch macht und was wir für selbstverständlich halten, wird hier manuell erledigt.

Fahrer


Hier ist alles viel besser als bei den Kameraden oben. Rider hat sogar die Vorlage aufgenommen, die ich für Blazor WebAssembly installiert habe . Er hat sogar eine Anwendung erstellt, aber aus irgendeinem Grund hat sich diese IDE geweigert, sie zu starten. Aus Gründen der Fairness wurde der Blazor Server ohne Probleme zusammengebaut und gestartet. Reiter

auch ermöglicht es Ihnen , ein Repository hinzufügen , wenn ein Git - Projekt erstellen. Aber zugleich .gitignore irgendwie leer entpuppte. Das heißt, es ist wiederum ein manueller Eingriff erforderlich, und Rider konkurriert, falls ich Sie daran erinnere, mit VS und JetBrains

nimmt Geld für sein Produkt. Nun, und wie üblich das Problem, im Allgemeinen unter Linux, im Prinzip sind dies schlechte Schriftarten, sie sind einige sehr dünn, schlecht lesbar. Elemente sind auch alle klein, sie müssen noch ausgerichtet werden. Außerdem hat Rider in zwei Arbeitstagen mehrmals das System beim Laden einer einfachen Lösung aufgehängt. Der Computer musste mit einem Reset neu gestartet werden, was natürlich nicht gut ist (Update: Zum Zeitpunkt der Erstellung dieses Artikels war dies bereits fünf Mal geschehen).

Gewinner der Nominierung Beste C # IDE für Linux :
Rider - Trotz aller Mängel konnte ich sicherstellen, dass diese IDE das Projekt konsistent zusammenstellte und startete. Aus irgendeinem Grund wurde der Browser nicht standardmäßig gestartet. Dies muss manuell erfolgen.

Unten im Screenshot zeigen Rider (achten Sie auf die Schriftarten) und der Versuch , das von ihm selbst erstellte Blazor WebAssembly- Projekt mit MonoDevelop auszuführen , eine ähnliche Situation.



Wenn alles so schlecht ist, warum Linux verwenden ?


Ich möchte Sie daran erinnern, dass dies ein Schulungsprojekt ist. Ziel war es zu zeigen, dass Sie weiterhin unter Linux arbeiten können.

Darüber hinaus führt die Unvollkommenheit der Entwicklungstools für Linux zu vielen manuellen Aktionen, mit denen wir ein wenig mehr über die Funktionsweise von .Net unter der Haube erfahren und verstehen können, wie viel Arbeit Visual Studio für uns leistet.

Was wollen wir bekommen?


Am Ende erhalten wir eine schöne Anwendung, wie im folgenden Beispiel:



Und jetzt zum Fall. Beginnen wir mit der Installation von .Net Core 3.1

Installieren Sie .Net Core 3.1


.Net Core 3.1.1 SDK ist die neueste verfügbare Version des SDK und steht im Ubuntu- Repository zur Verfügung . Blazor ändert sich sehr schnell. Um mit Blazor WebAssembly zu arbeiten, verwenden Sie 3.1.1, die neueste stabile Version.

Zu Beginn müssen wir den Microsoft-Schlüssel und sein Repository registrieren. Dies erfolgt mit den folgenden Befehlen in der Terminal- Anwendung (klicken Sie auf die Schaltfläche Win und geben Sie Term ein . Dieser sollte in der Liste der verfügbaren Befehle angezeigt werden):



  1. wget -q https://packages.microsoft.com/config/ubuntu/19.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  2. sudo dpkg -i packages-microsoft-prod.deb

Fahren Sie nun direkt mit der Installation des .Net Core SDK fort:

  1. sudo apt-get update
  2. sudo apt-get install apt-transport-https
  3. sudo apt-get update
  4. sudo apt-get install dotnet-sdk-3.1

Installieren Sie die Blazor WebAssembly-Vorlage


Nachdem die Installation von .Net Core abgeschlossen ist, müssen Sie jetzt die Blazor WebAssembly-Vorlage installieren , an die ich Sie erinnern werde, während sie sich in der Vorschau befindet, ab der sie sofort im Mai veröffentlicht wird. Nur einen Tag bevor ich anfing, den Artikel zu schreiben, wurde am 28. Januar die aktualisierte Version 3.2.0-Preview1.20073.1 (h) veröffentlicht

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.2.0-preview1.20073.1

Git-Installation


Wenn Sie Git noch nicht installiert haben , ist es Zeit, dies zu tun. Genau genommen ist der erste Befehl überhaupt nicht erforderlich. Ubuntu fordert Sie auf, ein Kennwort einzugeben. Wenn für die Ausführung des Befehls Berechtigungen erforderlich sind, werden wir dies vorwegnehmen =):

  1. sudo su
  2. add-apt-repository ppa:git-core/ppa
  3. apt update; apt install git

Das ist noch nicht alles. Blazor verwendet Mono, wenn es im Browser ausgeführt wird. Das bedeutet, dass wir es auch installieren müssen.

Mono-Installation


Fügen Sie zunächst die Mono- Repositorys zum System hinzu:

  1. sudo apt install gnupg ca-certificates
  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  3. echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
  4. sudo apt update

Installieren Sie jetzt direkt Mono selbst :

sudo apt install mono-complete

Dies ist ein schneller Vorgang, der auf meinem Laptop mit einem Core-i5 6200U-Prozessor etwa 10 Minuten dauerte, da die Quellkompilierung direkt auf Ihrem Computer erfolgt.

Herzliche Glückwünsche! Wir haben alles installiert, was Sie zur Entwicklung von Blazor WebAssembly-Projekten benötigen.
Jetzt können Sie direkt zum Projekt selbst gehen. Machen Sie

vorher eine Pause von der Eingabe von Befehlen und aktualisieren Sie im Speicher, was Blazor WebAssembly ist.

Blazor WebAssembly und womit es gegessen wird


Blazor ist ein Webframework , das entweder auf der Clientseite im Browser über die WebAssembly-Technologie (unter Verwendung der .Net-Laufzeit oder besser Mono- Implementierungen, die sich dank der Öffnung von .Net-Quellen in letzter Zeit kaum von der ursprünglichen Plattform unterscheidet) oder auf der Serverseite mit ausgeführt werden kann Hosting in der Asp.Net Core-Anwendung und Datenaustausch über die SignalR-Technologie (durch Erstellung von Schaltkreisverbindungen ).

Wie Sie der obigen Beschreibung entnehmen können , ist Blazor! = .Net WebAssembly implementiert.
Wenn Sie WebAssembly aus diesem Bundle entfernen, können Sie eine Blazor Server-Anwendung entwickeln, die auch in IE 11 funktioniertWer nie etwas über moderne Technologie gehört hat und Gott sei Dank, wird er nie wieder hören.

Da wir eine Anwendung erstellen, die auf dem Blazor WebAssembly- Ansatz basiert . Dann werden wir etwas mehr darüber nachdenken.

  1. index.html app, . blazor.webassembly.js . Blazor , ( AutoMapper, AutoFac) Mono .

    Blazor , .

    Blazor(3.1.0-preview4.19579.2, ) .Net, Blazor, .

    Blazor , , , .
  2. Vielleicht ist der Hauptnachteil dieses Ansatzes das komplizierte Debuggen. Sie können keine Haltepunkte setzen, Sie fallen einfach nicht in diese, obwohl ich denke, dass dies nur vorübergehend ist, da es früher im Studio möglich war, eine Verbindung zum IE herzustellen und JS- Code zu debuggen .

    Nun, vielleicht ist das zweite offensichtliche Minus die Notwendigkeit, alle Quellen herunterzuladen. Ich denke, es gibt immer noch viele Möglichkeiten zur Optimierung.
  3. Nach dem Herunterladen und allen vorbereitenden Prozessen wird unsere Anwendung im Browser- UI- Stream ausgeführt und beginnt mit ihrer Ausführung. Sie können jeden JS-Code von C # aus aufrufen und umgekehrt.

Es gab schon lange keine Bilder mehr, also hier ist eines unten :)



Dotnet-Dienstprogramm


Weiterhin werden wir das Dienstprogramm aus dem .Net Core SDK - dotnet aktiv nutzen.

Es ermöglicht Ihnen, viele nützliche Dinge zu tun, wir sind nur an wenigen interessiert:

dotnet build 

Der obige Befehl sammelt die Lösung. Wenn Sie aus dem Ordner mit der Lösung starten, sind keine Argumente erforderlich.

dotnet new blazorwasm -ho -o BlazingPizza

Sie können ein neues Projekt basierend auf der Vorlage erstellen, die nach dem Wort new steht. In unserem Fall handelt es sich um blazorwasm . Hier können Sie beispielsweise classlib oder console angeben .

Als nächstes werden die spezifischen Parameter der Vorlage aufgeführt. In diesem Fall gibt -ho an , dass unsere Anwendung auf der Serverseite in der ASP.NET Core- Anwendung gehostet wird. Außerdem erstellt .Net für uns Controller, die wir insbesondere zum Erstellen verwenden können Web-API und Zugriff nicht nur über die Blazor-Anwendung, sondern auch von anderen Clients.

Die letzte Option -o gibt den Ordner an, in dem die erstellte Lösung abgelegt wird. Standardmäßig ist dies das aktuelle Verzeichnis.

dotnet run 

Ein anderes Team, das sich als nützlich erweist, wie der Name schon sagt, startet unsere Anwendung.

Projekterstellung


Und so werden wir das vertraute Team ausführen, um unsere Lösung zu generieren. Wählen Sie dazu einen Ort aus, den Sie kennen, z. B. den Ordner RiderProjects, den die Rider-IDE erstellt hat und der sich im Pfad / home / {userName} befindet:

dotnet new blazorwasm -ho -o BlazingPizza


Nach dem Erstellen erstellen wir das Projekt und führen es schließlich aus, um zu sehen, welche Ergebnisse erzielt werden (der erste Befehl wird auf der Dateiebene BlazingPizza.sln ausgeführt):

dotnet build


Alles sollte ohne Probleme bestanden haben, gehen Sie zum Server-Ordner und führen Sie Folgendes aus:

dotnet run


Und schließlich sehen wir das geschätzte Ergebnis:



Großartig, alles funktioniert. Vergessen wir nun nicht lange das Erscheinungsbild der Website und wechseln zu deren Inhalten.

Das Ergebnis des ersten Befehls (dotnet new) war eine solche Ordnerstruktur:



Meiner Meinung nach ist dies kein gutes Schema. Es ist besser, wenn die Ordner ein Präfix mit dem Namen der Lösung haben, es ist vertrauter (dies ist, was VisaulStudio beim Erstellen neuer Projekte tut) und machen Sie deutlich, dass dies nicht der Fall ist eine Art ext. Serviceordner. Im Laufe der Zeit kann das Projekt in viele Ordner wachsen, die nicht enthalten C # , Code und wenn Sie gehen Explorer , wird es schwierig sein , zu navigieren , in dem , was, außerdem gibt einige sein kann deploySkripte basieren auf der Tatsache, dass sich in jedem Ordner, dessen Name mit dem Namen der Lösung beginnt, das Projekt befindet. Dies ist normal, da dies das langfristige Verhalten von Visual Studio ist und Sie sich darauf verlassen können.

Daher benennen wir die vorhandenen Projekte und Ordner, in denen sie enthalten sind, um (bisher wissen wir nichts über die IDE , wir arbeiten unter Linux und es hilft zum ersten Mal nicht, da Ordner und Projekte unterschiedlich benannt sind):

Client => BlazingPizza.Client
Server => BlazingPizza.Server
Shared => BlazingPizza.Shared Die

entsprechenden Änderungen müssen in der Lösungsdatei BlazingPizza.sln angezeigt werden . Wo der Pfad zum Projekt "[Server] \ ~" angegeben ist und unten wird er entsprechend durch ersetzt"BlazingPizza. [Server] \ ~" wie im folgenden Screenshot:



Nehmen wir ähnliche Änderungen in der Datei BlazingPizza.Server.csproj vor:



Und schließlich sollte BlazingPizza.Client.csproj wie im folgenden Screenshot aussehen:



Mit den Änderungen haben wir jetzt genug Es hat sich genug angesammelt, dass es eine Schande wäre, zu verlieren. Deshalb werden wir ein Versionskontrollsystem an unsere Lösung anschließen. Öffnen Sie dazu endlich unseren IDE Rider und unsere Lösungen. Hier ist alles wie in Visual Studio. Sie können es öffnen, indem Sie eine Lösungsdatei auswählen.

Wenn alles geladen ist, gehen Sie zum Menü VCS => Versionskontrollintegration aktivieren . Und hier verbinden wir Git. Der Fahrer fügt dem Ordner mit der Lösung Servicedateien hinzu und hebt alle Dateien rot hervor. Dies bedeutet, dass diese Dateien nicht im Versionskontrollsystem festgelegt sind. Wenn Rider zum
ersten Mal anbietet, alles im Projekt festzuschreiben , einschließlich des Inhalts der Ordner bin und obj , benötigen wir dies sicherlich nicht, da die standardmäßig hinzugefügte .gitignore- Datei leer ist. Verschieben Sie es mit der Datei BlazingPizza.sln auf die oberste Ebene der Ebene und ersetzen Sie den Inhalt durch den Inhalt unter der Kata.

Der Inhalt der .gitignore-Datei
# Default ignored files
/workspace.xml
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk 
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output 
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder 
.mfractor/

# sqlite
*.db

# Don't ignore server launchSettings.json. We need a specific port number for auth to work.
!**/BlazingPizza.Server/Properties/launchSettings.json


Danach muss die Anzahl der nicht festgeschriebenen Dateien stark auf 31 sinken.

Erstellen Sie unser erstes Festschreiben auf der Registerkarte Repository:



Geben Sie das anfängliche Festschreiben in die Beschreibung des Festschreibens ein und fügen Sie alle Dateien in das Festschreiben ein, indem Sie auf "Nicht konvertierte Dateien" => "Zu VCS hinzufügen" klicken :



C. Die Infrastruktur ist mehr oder weniger bereit. Lassen Sie uns ein wenig über den Inhalt der Lösung sprechen.

Lösungsinhalt


BlazingPizza.ClientUI . Startup.cs < pp > . App.razor < pp > index.html .
wwwroot/index.html — , html c < app > .
_framework/blazor.webassembly.js .Net , Mono . .
BlazingPizza.Server
blazorwasm -ho, “Hosted deployment with ASP.NET Core – ASP.NET Core . dotnet -ho , web api. , , , - . Standalone hosting IIS, .
BlazingPizza.Shared( BlazingPizza.DomainModels)
. . , .

: Pizza, , . , - - property. , JavaScript Kotlin.

Benennen Sie das Projekt BlazingPizza.Shared jetzt in BlazingPizza.DomainModels um . Hier muss gesagt werden, dass Rider trotz der experimentellen Note hervorragende Arbeit geleistet hat. Führen Sie das Projekt aus und stellen Sie sicher, dass alles funktioniert und nichts kaputt ist.



Es wäre schön, ein Commit mit Änderungen zu erstellen. Wenn Sie nur sehen möchten, wie viel Rider für uns getan hat, möchte ich Sie daran erinnern, dass Sie dies alles mit Stiften tun müssten, wenn es Visual Studio Code wäre Schauen Sie sich die Diff-Dateien an, indem Sie darauf klicken.



Neue Projekte hinzufügen


Fügen Sie ein paar weitere Projekte hinzu und beginnen Sie mit BlazingPizza.ViewModels . Die Anzeigemodelle werden auf dem Client angezeigt. Klicken Sie zum Hinzufügen mit der rechten Maustaste auf die Lösung und wählen Sie Hinzufügen => Neues Projekt (der Projekttyp in diesem und im nächsten in diesem Teil der Klassenbibliothek ).


BlazingPizza.DataAccess.ModelsModelle, die in der Ebene für den Zugriff auf Daten aus der Datenbank verwendet werden
BlazingPizza.DataAccess.InfrastructureAlles, was für die Interaktion mit der Datenbank verantwortlich ist
BlazingPizza.Services.InterfacesSchnittstellen für Dienste sind von Implementierungen getrennt, sodass Sie sie nicht mitziehen müssen, wenn Sie andere als die Standardimplementierungen verwenden.
BlazingPizza.ServicesImplementierung von Diensten, z. B. PizzaService , die der Datenbank Pizza hinzufügen und gleichzeitig Überprüfungen im Zusammenhang mit der Geschäftslogik durchführen.

Wenn etwas schief gelaufen ist oder Sie keine Zeit mit dem Einrichten und Starten ab der zweiten Lektion verschwenden möchten, ist die Quelle hier .

Oh ja, ich hätte es fast vergessen :) Link zum Originalprojekt (MIT-Lizenz) .

Source: https://habr.com/ru/post/undefined/


All Articles