Floating Apps
Minecrafter
Hallo ihr wohlgeformten Menschen,
ich bin ein Fan der .NET Szene und möchte euch nun beibringen, wie ihr in diese Szene mit einsteigen könnt.
Inhaltsverzeichnis
Letzter Teil: Server einrichten
Was ist ASP.NET Core?
ASP ist ein von Microsoft für IIS (Internet Information Services) entwickeltes Web-Applikationen Framework. Mit diesem war es möglich anspruchsvolle Web-Applikationen zuverlässig zu entwickeln und zu betreiben. Allerdings bisher nur unter Windows Server.
Vor zwei Jahren ist dann .NET Core herausgekommen. Damit ist es möglich ASP Seiten unter Kestrel zu betreiben und somit auch unter Linux, was die meisten von euch vorziehen, weil sie keine lächerliche 25€ extra pro Monat ausgeben möchten.
Programmiert werden die Seiten in C# oder Visual Basic.
Für wen ist ASP.NET Core gedacht?
ASP ist nicht für Menschen gedacht, die Text darstellen wollen. Dafür reicht simples HTML meist aus, bzw. ihr benutzt ein Content Management System (CMS). Wenn du allerdings eine Oberfläche für deinen Server entwickeln willst, mit der du einige Daten darstellen möchtest und/oder dynamischen Inhalt generieren möchtest, dann ist ASP.NET das richtige für dich.
Außerdem für alle, die keine Lust haben auf das ganze "PHP-Gedöns".
Beispiele für ASP Seiten
Schön, dass du ein wenig Interesse an ASP gefunden hast. Es gibt jedoch einiges zu beachten:
MySQL ist auch für die Entwicklung mit Java 7 und Java 8 verfügbar. Einfach den JDBC Treiber herunterladen (Direktlink zum JDBC Treiber). Diesen dann ins selbe Verzeichnis zu kopieren (nicht empfohlen für Plug-Ins) oder (Der sauberere Weg) ihr legt ihn in einem "lib" Verzeichnis ab und benutzt den Treiber dort heraus.
Hier ein Handbuch für den JDBC Treiber (Direktlink zum JDBC Handbuch).
Außerdem ist der SQL Express Server kostenfrei bis 10GB Datenmenge pro Datenbank haben. Das ist mehr als ausreichend, wenn man sich nicht krankhaft alles dort hinein speichert, was nicht drinnen stehen muss. Datenbanken könnt ihr so viele haben, wie euer (natürlich separater nur für die Datenbank ausgelegter und nur über lokales Netzwerk erreichbarer) Server bedienen kann.
Installation der benötigten Software
dotnet Core
Für die Wahl der Distribution kann ich euch nur wärmstens CentOS 7+ empfehlen, sofern ihr euch nicht die 349€ für Redhat leisten könnt, oder die jählichen 670 € für SUSE. (Wem ist jetzt Windows Server lieber?)
dotnet Core wird der spaßigste Teil sein. Denn hier muss man sich nur die Bibliotheken (zu Deutsch Libary) installieren.
Hier ist eine Anleitung dazu: Direktlink zur Installationsanweisung von dotnet Core
Das war einfach, nicht?
Jetzt dürfen wir uns noch den SQL Server installieren
SQL Server 17
Für Ubuntu, RHEL und SLES: Direktlink zur Installationsanweisung von SQL Server 17
Für CentOS:
Prüfe, ob der SQL Server läuft:
Exportiere die Path variablen
Port freigeben für Verbindungen (natürlich machen wir das ja nur durch das lokale Netzwerk, damit sich niemand von extern einwählt ;] *Sarkasmusschild*)
Mit dem Befehl
könnt ihr SQL test-weise ausführen.
Für die Verwaltung des SQL Servers empfehle ich euch SQL Server Management Studio (Direktlink zum SSMS).
Ich behaupte einmal, dass ihr mit der Installation vom SSMS soweit selbst klar kommt.
Jetzt kommt aber erst einmal der spaßige Teil (nicht dotnet, sondern das fluchen, weinen, aufgeben und noch einmal probieren).
Konfigurieren von Apache/Nginx als Remoteproxy für Kestrel
Jetzt solltest du spätestens Gänsehaut bekommen. Schlaflose Nächte erwarten dich. Es sei denn du kennst jemanden, der da schon einmal durch gegangen ist.
Generell gilt: Apache als Remoteproxy zu verwenden ist einfacher, als Nginx. Einfach nur, weil Apache zu jedem kleinen Fehler einen Fehler ausspuckt, was bei Nginx nicht ersichtlich ist.
Konfigurieren von Apache als Remoteproxy für Kestrel
Direktlink zum in Anführungszeichen "Tutorial" von Microsoft.
Konfigurieren von Nginx als Remoteproxy für Kestrel
Direktlink zum in Anführungszeichen "in Anführungszeichen "Tutorial"" von Microsoft
In beiden Tutorials ist mit beschrieben, wie ihr euer SSL Zertifikat da mit einbaut.
Viel Glück mit beiden. Ansonsten könnt ihr ja Docker verwenden dafür
Wenn ihr fertig seid mit der Installation und Konfiguration von allen kann es los gehen mit dem Programmieren der Website (Ja, ich habe mittlerweile vergessen, dass es sich hierbei um ein ASP.NET Core Tutorial handelt).
Erster Teil: Hallo Welt
Zunächst brauchen wir die traditionelle Hallo Welt Anwendung. (Geschätzte Zeit bis zum Hallo Welt: 1 Stunde)
Zunächst brauchen wir eine Entwicklungsumgebung. Dafür gibt es nur eine sinnvolle Möglichkeit: Lokales dotnet Core Projekt
Die Wahl der Entwicklungsumgebung.
Die beste Lösung um zu Programmieren ist für gewöhnlich Notepad.exe. Man kann damit Dateien öffnen, bearbeiten und speichern. Alles, was man braucht. Für den seltenen, höchst unwahrscheinlichen Fall, dass ein Programmierer mehr Features benötigt bietet es sich an noch zusätzliche Software zu besorgen.
In dem Tutorial werde ich allerdings näher auf VS2017 eingehen, als auf VS Code, werde aber trotzdem kritische Stellen mit Randbemerkungen versehen, sollte es Grundlegen anders funktionieren als in VS2017
Wer Maschinengewehre wie VS Code nicht sonderlich toll findet zum entwickeln, der kann auch die Railgun benutzen. Visual Studio ist ein Monster von Editor und für besonders große Projekte geeignet, in denen es viel im Backend zu Programmieren gilt.
Im Gegensatz zu VS Code reicht ein einzelner Screenshot für VS2017 nicht aus.
Installation von VS2017
Auf der Website gibt es erst einmal viel zu sehen. Wir ignorieren alles und kümmern uns nur um den roten Pfeil. Unsere Edition ist die kostenfreie Community Edition.
Disclaimer: Der Rote Pfeil ist auf der live-Website nicht zu finden. Er wurde dort hinein manipuliert.
Direktlink für VS2017
Die heruntergeladene Datei öffnen und hoffen, dass ihr diesen Bildschirm vorfindet.
Wenn wir das Paket Plattformübergreifende .NET Core-Entwicklung angewählt haben brauchen wir das .NET Core SDK nicht manuell installieren, da es vom Installer automatisch mit installiert wird.
Hinweis: Die Installationsgröße variiert je nach gewählten Paketen um mehrere Gigabyte (ziemlich schnell im zweistelligen Bereich).
Erstellen des ersten Projektes
Nach der Installation sollte man dann den Willkommen-Bildschirm sehen können.
Rechts unten klicken wir auf
und im darauf folgenden Zauberer wählen wir die ASP.NET Core-Webanwendung aus.
Für Visual Basic kann man immer das Gleiche tun im übrigen. Es handelt sich dabei nur um eine Art Dialekt, wobei C# dem Hochdeutschen entspricht und Visual Basic dem Sächsischen entspricht.
Nachdem haben wir eine sinnvolle "Benamsung" gewählt haben und das Projekt erstellt haben werden wir mit einem weiteren Dialog unterbrochen:
Wir möchten Für unsere Hallo Welt Anwendung vermutlich das Template "Leer" verwenden. Allerdings würde das dem Sinn der "Hallo Welt"-Anwendung nicht entsprechen. Wir sehen so nicht, wie ASP funktioniert.
Dabei gibt es zwei Templates, die für uns Relevant sind: Webanwendung und Webanwendung (Model-View-Controller) (MVC). Für unseren Test reicht uns erst einmal MVC. Der Unterschied zwischen beiden Templates ist, dass bei der Webanwendung mit Razor-Pages gearbeitet wird und bei dem MVC mit Views.
Der rot eingerahmte Knopf ist übrigens eine Möglichkeit schnell Basics für einen Login zu schaffen. Für die "Hallo Welt"-Anwendung brauchen wir aber erstmal keinen Login.
Die Projektstruktur
Jetzt, wo wir das Projekt erstellt haben, sehen wir im Projektmappen-Explorer (Strg +W, S)* Models, Views und Controllers. Jetzt wissen wir, warum das ganze MVC heißt.
*In VS gibt es Tastenkombinationen. In dem Fall wie oben drücken wir Strg und danach gleichzeitig W, lassen beide Tasten wieder los und drücken S
Models, Views und Controllers
Models sind (zu deutsch Modelle) Klassen deren Funktion es ist, Daten zu speichern und zu bearbeiten. In ihnen sind Properties (in Java sind das Felder mit getter und Setter) hinterlegt, die Datenspeichern, Read-Only Properties, die einen gespeicherten Wert manipulieren und den gespeicherten Wert meist nicht verändern, oder sie tun es doch und last but not least Methoden, die die selbe Funktion haben, wie Read-Only Properties, nur dass Funktionen für komplexere Vorgänge gedacht sind. Und Read-Only Properties meist nur als Getter fungieren oder zum Beispiel, wenn man in einer Property ein Datum gespeichert hat den Tag danach zurückgibt.
Views sind (zu deutsch Sichten) Seiten, die HTML und Funktionen und Properties, in Razor Syntax, gemischt enthalten.
Dies würde in ein Paragraphen Tag den Inhalt der Property "Username" hinein rendern.
Controller bearbeiten Anfragen. Sie geben an jede Anfrage eine View zurück (Error Pages sind auch Views), selbst wenn es eine leere Seite mit der Rückmeldung "Ok" ist.
Hallo Welt
In der Seite Views/Home/Index.cshtml können wir den Text Hallo Welt unten dran fügen und wir haben eine MVC Seite mit dem Text "Hallo Welt" irgendwo mittendrin.
Mit F5 oder druck auf den grünen Pfeil können wir das Projekt veröffentlichen und das Ergebnis begutachten.
Zweiter Teil: Kombination des Minecraft-Servers mit der Website (Work in Progress)
Wir haben also jetzt unsere tolle Website und untseren tollen Minecraft-Server.
Wie kombinieren wir nun das ganze?
Von Minecraft-Server nach Website ist ja bekanntlich einfach.
Dafür gibt es verschiedene Lösungsansätze:
Das Prinzip der Scheduled Queue ist einfach. Es gibt eine Warteschlange, in die Anfragen vom Kestrel Server eingereiht werden. Der Minecraft Server geht die Warteschlange durch und führt alle anstehenden Tasks aus. Witzig wird dann die ganze Sache, wenn man sie mit Datum und cron verbindet.
Umzusetzen ist diese Methode auch ziemlich einfach. Ein Task wird mit einem Command (Dafür sollte man ein Enum in betracht ziehen) in eine Tabelle gepackt. Es gibt zusätzlich eine Spalte für ein Datum bzw. eine cron-Expression. Der Scheduler arbeitet die Abfragen ab (die Arbeit mit dem Scheduler wurde euch ja freundlicherweise schon abgenommen).
Tcp/Udp-Direktverbindung
Diese Möglichkeit ist am besten geeignet, wenn man mit Streams arbeitet. Man könnte den Befehls Text als Stream senden, allerdings ist dies den Aufwand nicht Wert, nur um ein paar bytes Text zu übertragen.
WebAPI
Die Idee dahinter ist ganz Simpel. Der Minecraft-Server nimmt HTTP-Request an und wertet diese auch aus. Mit einem GET, POST oder PUT wird vom Web-Server aus eine Anfrage an den Minecraft-Server gesendet.
Hier gilt: verwende einen nicht benutzten Port und lasse von außerhalb keinerlei Verbindungen zu.
Daten können dabei als JSON im HTTP-Request-Body verschickt werden (z.B. UUIDs, ein Datum und eine individuelle Benutzereingabe).
Umsetzung einer Scheduled Queue
Umsetzung einer Tcp-Direktverbindung
Umsetzung einer WebAPI Schnittstelle
Nützliche Links
Um euch den Einstieg mit ASP.NET und MSSQL zu erleichtern habe ich für euch ein paar Links heruasgesucht:
Bis ich den nächsten Teil Fertig habe gilt:
Wer Rechtschreibfehler findet, darf sie behalten, es gilt die gesetzliche Gewährleistung für Inhaltliche Fehler.
Der Gesamte Artikel befindet sich im Status Work in Progress. Das heißt er wird laufend verändert und ergänzt. Wenn etwas zu ungenau beschrieben wurde kann gerne eine ausführlichere Version zu einem Punkt verlangt werden).
ich bin ein Fan der .NET Szene und möchte euch nun beibringen, wie ihr in diese Szene mit einsteigen könnt.
Inhaltsverzeichnis
- Letzter Teil: Server einrichten
- Was ist ASP.NET Core?
- Für wen ist ASP.NET Core gedacht?
- Beispiele für ASP Seiten
- Ich will auch so eine tolle Seite haben!
- Annotation zum Thema MySQL
- Installation der Benötigten Software
- dotnet Core
- SQL Server 17
- Konfigurieren von Apache/Nginx als Remoteproxy für Kestrel
- Konfigurieren von Apache als Remoteproxy für Kestrel
- Konfigurieren von Nginx als Remoteproxy für Kestrel
- Erster Teil: Hallo Welt
- Die Wahl der Entwicklungsumgebung
- Installation von VS2017
- Erstellen des ersten Projekes
- Die Projektstruktur
- Models, Views und Controller
- Hallo Welt
- Zweiter Teil: Kombination des Minecraft-Servers mit der Website (Work in Progress)
- Scheduled Queue
- Tcp/Udp-Direktverbindung
- WebAPI
- Umsetzung einer Scheduled Queue
- Schritt 1: Die Web-Page
- Umsetzung einer Tcp-Direktverbindung (Planned)
- Umsetzung einer WebAPI Schnittstelle (Planned)
Letzter Teil: Server einrichten
Was ist ASP.NET Core?
ASP ist ein von Microsoft für IIS (Internet Information Services) entwickeltes Web-Applikationen Framework. Mit diesem war es möglich anspruchsvolle Web-Applikationen zuverlässig zu entwickeln und zu betreiben. Allerdings bisher nur unter Windows Server.
Vor zwei Jahren ist dann .NET Core herausgekommen. Damit ist es möglich ASP Seiten unter Kestrel zu betreiben und somit auch unter Linux, was die meisten von euch vorziehen, weil sie keine lächerliche 25€ extra pro Monat ausgeben möchten.
Programmiert werden die Seiten in C# oder Visual Basic.
Für wen ist ASP.NET Core gedacht?
ASP ist nicht für Menschen gedacht, die Text darstellen wollen. Dafür reicht simples HTML meist aus, bzw. ihr benutzt ein Content Management System (CMS). Wenn du allerdings eine Oberfläche für deinen Server entwickeln willst, mit der du einige Daten darstellen möchtest und/oder dynamischen Inhalt generieren möchtest, dann ist ASP.NET das richtige für dich.
Außerdem für alle, die keine Lust haben auf das ganze "PHP-Gedöns".
Beispiele für ASP Seiten
- Microsoft Azure Dokumentation
- Microsoft Azure
- Microsoft Developer Network (MSDN)
- Microsoft Store
- Bing
- Xbox
- Visual Studio
- So ziemlich jede andere Microsoft Seite
- Stackoverflow
- Und der wichtigste: http://www.britishmuseum.org/
Schön, dass du ein wenig Interesse an ASP gefunden hast. Es gibt jedoch einiges zu beachten:
- Du musst vermutlich eine neue Programmmiersprache lernen (C# ist ziemlich einfach, wenn man aus der Java Welt kommt)
- Es wird dich nicht weniger Schweiß und Tränen kosten, als das ganze "PHP-Gedöns"
- ASP wird traditionell mit allem verwendet, nur nicht MySQL. Besorgt euch bitte einen SQL Server.
- Der Funktionsumfang ist ein wenig überwältigend
- Leider wird REST unterstützt
- TypeScript
- Debian Nutzer dürfen ab hier aufhören zu lesen und noch einmal CentOS, Redhat Enterprise, SUSE Enterprise oder Ubuntu Server installieren
MySQL ist auch für die Entwicklung mit Java 7 und Java 8 verfügbar. Einfach den JDBC Treiber herunterladen (Direktlink zum JDBC Treiber). Diesen dann ins selbe Verzeichnis zu kopieren (nicht empfohlen für Plug-Ins) oder (Der sauberere Weg) ihr legt ihn in einem "lib" Verzeichnis ab und benutzt den Treiber dort heraus.
Hier ein Handbuch für den JDBC Treiber (Direktlink zum JDBC Handbuch).
Außerdem ist der SQL Express Server kostenfrei bis 10GB Datenmenge pro Datenbank haben. Das ist mehr als ausreichend, wenn man sich nicht krankhaft alles dort hinein speichert, was nicht drinnen stehen muss. Datenbanken könnt ihr so viele haben, wie euer (natürlich separater nur für die Datenbank ausgelegter und nur über lokales Netzwerk erreichbarer) Server bedienen kann.
Installation der benötigten Software
dotnet Core
Für die Wahl der Distribution kann ich euch nur wärmstens CentOS 7+ empfehlen, sofern ihr euch nicht die 349€ für Redhat leisten könnt, oder die jählichen 670 € für SUSE. (Wem ist jetzt Windows Server lieber?)
dotnet Core wird der spaßigste Teil sein. Denn hier muss man sich nur die Bibliotheken (zu Deutsch Libary) installieren.
Hier ist eine Anleitung dazu: Direktlink zur Installationsanweisung von dotnet Core
Das war einfach, nicht?
Jetzt dürfen wir uns noch den SQL Server installieren
SQL Server 17
Für Ubuntu, RHEL und SLES: Direktlink zur Installationsanweisung von SQL Server 17
Für CentOS:
Code:
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo -o /etc/yum.repos.d/mssql-server-2017.repo
curl https://packages.microsoft.com/config/rhel/7/prod.repo -o /etc/yum.repos.d/msprod.repo
yum -y install mssql-server mssql-tools unixODBC-devel
/opt/mssql/bin/mssql-conf setup
Choose an edition of SQL Server:
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID)
7) Enterprise Core (PAID)
8) I bought a license through a retail sales channel and have a product key to enter.
Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x409
Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.
# select an edition you'd like to use
Enter your edition(1-8): 3
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x409
The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409
# agree to the license
Do you accept the license terms? [Yes/No]:y
# set admin password
Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password:
Configuring SQL Server...
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to
/usr/lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID)
7) Enterprise Core (PAID)
8) I bought a license through a retail sales channel and have a product key to enter.
Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x409
Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.
# select an edition you'd like to use
Enter your edition(1-8): 3
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x409
The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409
# agree to the license
Do you accept the license terms? [Yes/No]:y
# set admin password
Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password:
Configuring SQL Server...
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to
/usr/lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.
Prüfe, ob der SQL Server läuft:
Code:
systemctl status mssql-server
Exportiere die Path variablen
Code:
echo 'export PATH=$PATH:/opt/mssql-tools/bin' > /etc/profile.d/mssql.sh
source /etc/profile.d/mssql.sh
Port freigeben für Verbindungen (natürlich machen wir das ja nur durch das lokale Netzwerk, damit sich niemand von extern einwählt ;] *Sarkasmusschild*)
Code:
firewall-cmd --add-port=1433/tcp --permanent
firewall-cmd --reload
Mit dem Befehl
Code:
sqlcmd
Für die Verwaltung des SQL Servers empfehle ich euch SQL Server Management Studio (Direktlink zum SSMS).
Ich behaupte einmal, dass ihr mit der Installation vom SSMS soweit selbst klar kommt.
Jetzt kommt aber erst einmal der spaßige Teil (nicht dotnet, sondern das fluchen, weinen, aufgeben und noch einmal probieren).
Konfigurieren von Apache/Nginx als Remoteproxy für Kestrel
Jetzt solltest du spätestens Gänsehaut bekommen. Schlaflose Nächte erwarten dich. Es sei denn du kennst jemanden, der da schon einmal durch gegangen ist.
Generell gilt: Apache als Remoteproxy zu verwenden ist einfacher, als Nginx. Einfach nur, weil Apache zu jedem kleinen Fehler einen Fehler ausspuckt, was bei Nginx nicht ersichtlich ist.
Konfigurieren von Apache als Remoteproxy für Kestrel
Direktlink zum in Anführungszeichen "Tutorial" von Microsoft.
Konfigurieren von Nginx als Remoteproxy für Kestrel
Direktlink zum in Anführungszeichen "in Anführungszeichen "Tutorial"" von Microsoft
In beiden Tutorials ist mit beschrieben, wie ihr euer SSL Zertifikat da mit einbaut.
Viel Glück mit beiden. Ansonsten könnt ihr ja Docker verwenden dafür
Wenn ihr fertig seid mit der Installation und Konfiguration von allen kann es los gehen mit dem Programmieren der Website (Ja, ich habe mittlerweile vergessen, dass es sich hierbei um ein ASP.NET Core Tutorial handelt).
Erster Teil: Hallo Welt
Zunächst brauchen wir die traditionelle Hallo Welt Anwendung. (Geschätzte Zeit bis zum Hallo Welt: 1 Stunde)
Zunächst brauchen wir eine Entwicklungsumgebung. Dafür gibt es nur eine sinnvolle Möglichkeit: Lokales dotnet Core Projekt
Die Wahl der Entwicklungsumgebung.
Die beste Lösung um zu Programmieren ist für gewöhnlich Notepad.exe. Man kann damit Dateien öffnen, bearbeiten und speichern. Alles, was man braucht. Für den seltenen, höchst unwahrscheinlichen Fall, dass ein Programmierer mehr Features benötigt bietet es sich an noch zusätzliche Software zu besorgen.
Das ist die Lösung für den Otto Normalverbraucher, der keine riesigen Projekte anfangen möchte, sondern einfach nur eine kleine Seite erstellen möchte.
Der Vorteil an diesem Editor: Es gibt ihn auch in Pink!
Aktuell ist VS Code für mich der beste All-Round Editor, den es aktuell gibt.
Direktlink zu VS Code
Wenn man Linux Nutzer ist, dann wiederhole den Schritt Installation von dotnet Core auf deinem lokalen Computer.
Wenn du Windows Nutzer bist, dann installiere dir das dotnet Core SDK über eine hoch-komplexe Installationsdatei: Direktlink zum dotnet Core Installer
Hinweis: Es gibt einen Unterschied zwischen .NET Core SDK und .NET Framework 4.7.1. Du möchtest das .NET Core SDK
Der Vorteil an diesem Editor: Es gibt ihn auch in Pink!
Aktuell ist VS Code für mich der beste All-Round Editor, den es aktuell gibt.
Direktlink zu VS Code
Wenn man Linux Nutzer ist, dann wiederhole den Schritt Installation von dotnet Core auf deinem lokalen Computer.
Wenn du Windows Nutzer bist, dann installiere dir das dotnet Core SDK über eine hoch-komplexe Installationsdatei: Direktlink zum dotnet Core Installer
Hinweis: Es gibt einen Unterschied zwischen .NET Core SDK und .NET Framework 4.7.1. Du möchtest das .NET Core SDK
In dem Tutorial werde ich allerdings näher auf VS2017 eingehen, als auf VS Code, werde aber trotzdem kritische Stellen mit Randbemerkungen versehen, sollte es Grundlegen anders funktionieren als in VS2017
Wer Maschinengewehre wie VS Code nicht sonderlich toll findet zum entwickeln, der kann auch die Railgun benutzen. Visual Studio ist ein Monster von Editor und für besonders große Projekte geeignet, in denen es viel im Backend zu Programmieren gilt.
Im Gegensatz zu VS Code reicht ein einzelner Screenshot für VS2017 nicht aus.
Installation von VS2017
Auf der Website gibt es erst einmal viel zu sehen. Wir ignorieren alles und kümmern uns nur um den roten Pfeil. Unsere Edition ist die kostenfreie Community Edition.
Disclaimer: Der Rote Pfeil ist auf der live-Website nicht zu finden. Er wurde dort hinein manipuliert.
Direktlink für VS2017
Die heruntergeladene Datei öffnen und hoffen, dass ihr diesen Bildschirm vorfindet.
Wenn wir das Paket Plattformübergreifende .NET Core-Entwicklung angewählt haben brauchen wir das .NET Core SDK nicht manuell installieren, da es vom Installer automatisch mit installiert wird.
Hinweis: Die Installationsgröße variiert je nach gewählten Paketen um mehrere Gigabyte (ziemlich schnell im zweistelligen Bereich).
Erstellen des ersten Projektes
Nach der Installation sollte man dann den Willkommen-Bildschirm sehen können.
Rechts unten klicken wir auf
Für Visual Basic kann man immer das Gleiche tun im übrigen. Es handelt sich dabei nur um eine Art Dialekt, wobei C# dem Hochdeutschen entspricht und Visual Basic dem Sächsischen entspricht.
Nachdem haben wir eine sinnvolle "Benamsung" gewählt haben und das Projekt erstellt haben werden wir mit einem weiteren Dialog unterbrochen:
Wir möchten Für unsere Hallo Welt Anwendung vermutlich das Template "Leer" verwenden. Allerdings würde das dem Sinn der "Hallo Welt"-Anwendung nicht entsprechen. Wir sehen so nicht, wie ASP funktioniert.
Dabei gibt es zwei Templates, die für uns Relevant sind: Webanwendung und Webanwendung (Model-View-Controller) (MVC). Für unseren Test reicht uns erst einmal MVC. Der Unterschied zwischen beiden Templates ist, dass bei der Webanwendung mit Razor-Pages gearbeitet wird und bei dem MVC mit Views.
Der rot eingerahmte Knopf ist übrigens eine Möglichkeit schnell Basics für einen Login zu schaffen. Für die "Hallo Welt"-Anwendung brauchen wir aber erstmal keinen Login.
Um ein neues dotnet Core Projekt in VS Code zu erstellen öffnen wir im Verzeichnis, in dem wir das Projekt erstellen wollen, die Kommandozeile.
Wenn man sich im Verzeichnis im Windows Explorer befindet kann man diese mit Shift + Rechtsklick öffnen. Wenn man im Verzeichnis rechts klickt kann man den ganzen Ordner in VS Code öffnen.
Dort kann man die Befehlszeile/PowerShell mit Strg + ö öffnen.
In die Befehlszeile gibt man dann
oder
ein und das Projekt wird erstellt.
Wenn man sich im Verzeichnis im Windows Explorer befindet kann man diese mit Shift + Rechtsklick öffnen. Wenn man im Verzeichnis rechts klickt kann man den ganzen Ordner in VS Code öffnen.
Dort kann man die Befehlszeile/PowerShell mit Strg + ö öffnen.
In die Befehlszeile gibt man dann
Code:
dotnet new mvc
Code:
dotnet new razor
Die Projektstruktur
Jetzt, wo wir das Projekt erstellt haben, sehen wir im Projektmappen-Explorer (Strg +W, S)* Models, Views und Controllers. Jetzt wissen wir, warum das ganze MVC heißt.
*In VS gibt es Tastenkombinationen. In dem Fall wie oben drücken wir Strg und danach gleichzeitig W, lassen beide Tasten wieder los und drücken S
Models, Views und Controllers
Models sind (zu deutsch Modelle) Klassen deren Funktion es ist, Daten zu speichern und zu bearbeiten. In ihnen sind Properties (in Java sind das Felder mit getter und Setter) hinterlegt, die Datenspeichern, Read-Only Properties, die einen gespeicherten Wert manipulieren und den gespeicherten Wert meist nicht verändern, oder sie tun es doch und last but not least Methoden, die die selbe Funktion haben, wie Read-Only Properties, nur dass Funktionen für komplexere Vorgänge gedacht sind. Und Read-Only Properties meist nur als Getter fungieren oder zum Beispiel, wenn man in einer Property ein Datum gespeichert hat den Tag danach zurückgibt.
Views sind (zu deutsch Sichten) Seiten, die HTML und Funktionen und Properties, in Razor Syntax, gemischt enthalten.
Code:
<p>@Username</p>
Controller bearbeiten Anfragen. Sie geben an jede Anfrage eine View zurück (Error Pages sind auch Views), selbst wenn es eine leere Seite mit der Rückmeldung "Ok" ist.
Hallo Welt
In der Seite Views/Home/Index.cshtml können wir den Text Hallo Welt unten dran fügen und wir haben eine MVC Seite mit dem Text "Hallo Welt" irgendwo mittendrin.
Mit F5 oder druck auf den grünen Pfeil können wir das Projekt veröffentlichen und das Ergebnis begutachten.
Projekte mit VS Code werden mit dem Befehl
gestartet.
Code:
dotnet run
Zweiter Teil: Kombination des Minecraft-Servers mit der Website (Work in Progress)
Wir haben also jetzt unsere tolle Website und untseren tollen Minecraft-Server.
Wie kombinieren wir nun das ganze?
Von Minecraft-Server nach Website ist ja bekanntlich einfach.
Dafür gibt es verschiedene Lösungsansätze:
- Scheduled Queue
- Tcp/Udp-Direktverbindung
- WebAPI
Das Prinzip der Scheduled Queue ist einfach. Es gibt eine Warteschlange, in die Anfragen vom Kestrel Server eingereiht werden. Der Minecraft Server geht die Warteschlange durch und führt alle anstehenden Tasks aus. Witzig wird dann die ganze Sache, wenn man sie mit Datum und cron verbindet.
Umzusetzen ist diese Methode auch ziemlich einfach. Ein Task wird mit einem Command (Dafür sollte man ein Enum in betracht ziehen) in eine Tabelle gepackt. Es gibt zusätzlich eine Spalte für ein Datum bzw. eine cron-Expression. Der Scheduler arbeitet die Abfragen ab (die Arbeit mit dem Scheduler wurde euch ja freundlicherweise schon abgenommen).
Tcp/Udp-Direktverbindung
Diese Möglichkeit ist am besten geeignet, wenn man mit Streams arbeitet. Man könnte den Befehls Text als Stream senden, allerdings ist dies den Aufwand nicht Wert, nur um ein paar bytes Text zu übertragen.
WebAPI
Die Idee dahinter ist ganz Simpel. Der Minecraft-Server nimmt HTTP-Request an und wertet diese auch aus. Mit einem GET, POST oder PUT wird vom Web-Server aus eine Anfrage an den Minecraft-Server gesendet.
Hier gilt: verwende einen nicht benutzten Port und lasse von außerhalb keinerlei Verbindungen zu.
Daten können dabei als JSON im HTTP-Request-Body verschickt werden (z.B. UUIDs, ein Datum und eine individuelle Benutzereingabe).
Umsetzung einer Scheduled Queue
Work in progress
Schritt 1: Die Web-Page
Bevor wir überhaupt anfange irgendetwas zu tun benötigen wir eine Web-Page, die mit unserem Server kommunizieren soll. Für unser Beispiel werden wir eine Seite erstellen, die einen Text aus einer Textbox bei Betätigung eines Buttons auf unserem Minecraft-Server ausgibt.
Wir erstellen uns also ein neues ASP.NET Core Web-Projekt mit dem Template Webanwendung.
Schritt 1: Die Web-Page
Bevor wir überhaupt anfange irgendetwas zu tun benötigen wir eine Web-Page, die mit unserem Server kommunizieren soll. Für unser Beispiel werden wir eine Seite erstellen, die einen Text aus einer Textbox bei Betätigung eines Buttons auf unserem Minecraft-Server ausgibt.
Wir erstellen uns also ein neues ASP.NET Core Web-Projekt mit dem Template Webanwendung.
Umsetzung einer Tcp-Direktverbindung
Geplant für später
Umsetzung einer WebAPI Schnittstelle
Geplant für später
Nützliche Links
Um euch den Einstieg mit ASP.NET und MSSQL zu erleichtern habe ich für euch ein paar Links heruasgesucht:
Code:
(dotnet core Framework Guides) => https://docs.microsoft.com/en-us/dotnet/core/
(dotnet core Beispiele) => https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/console-teleprompter
(C# Schnellstart) => https://docs.microsoft.com/en-us/dotnet/csharp/quick-starts/
(SQL Tutorial) => https://www.w3schools.com/sql/default.asp
(ADO.NET (ActiveX Data Objects)) => https://www.w3schools.com/asp/ado_intro.asp
(ADO.NET) => https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/
Bis ich den nächsten Teil Fertig habe gilt:
Wer Rechtschreibfehler findet, darf sie behalten, es gilt die gesetzliche Gewährleistung für Inhaltliche Fehler.
Der Gesamte Artikel befindet sich im Status Work in Progress. Das heißt er wird laufend verändert und ergänzt. Wenn etwas zu ungenau beschrieben wurde kann gerne eine ausführlichere Version zu einem Punkt verlangt werden).
Zuletzt bearbeitet: