Microservices mit .Net Framework und Core ohne Docker

image_pdfimage_print

Momentan liest man überall von Microservices und welche Vorteile diese Architektur mit sich bringt. Zwar wird immer wieder aufgeführt, dass Microservices Polyglot (Eine Architektur mit unterschiedlichen Programmiersprachen) unterstützen können. Tatsächlich findet man aber nur Anleitungen (In der Microsoft Welt) Zu .Net Core, in Verbindung mit Docker und Azure.

Mein Ziel ist es eine Architektur ohne Docker (Da auf VMs nicht unterstützt wird) und eine Verbindung aus Core und .Net Framework herzustellen. Aus einer Reihe von nachhaltigen Frameworks soll die Entwicklung in CD (Continues Delivery) gestaltet werden. TFS und GitLab scheiden wegen ihren Lizenzmodell aus.

  • CodeRepository: Git -> https://git-scm.com/download/win
  • Build Server: Jenkins -> https://jenkins.io/download/
    • https://www.guru99.com/jenkin-continuous-integration.html
  • Api Gateway (Kommunikation ClientApi zu Microservices) Ocelot : https://github.com/ThreeMammals/Ocelot
  • Kommunikationsprotokoll zwischen Microservices: gRPC (Da schneller als Http)
  • Sicherheit unter Microservices: JWT Token
  • Authentifizierung Microservice mit OAuth 2.0 und OWIN Middleware: https://oauth.net/code/dotnet/
  • Repository: Implementierung mit Dapper: https://github.com/StackExchange/Dapper
  • Repository Cache: https://github.com/MichaCo/CacheManager
  • Datenbank Code Migration SSDT: SQL Server Data Tools
    • https://www.youtube.com/watch?v=6ass_PYECmM&t
    • https://arapaima.uk/post/2017-04-04-jenkins-windows-git-ssdt-profit/
  • (Optional) Search Engine: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/introduction.html
    • https://www.red-gate.com/simple-talk/dotnet/net-development/how-to-build-a-search-page-with-elasticsearch-and-net/
0  

Windows Bug Tooltip bleibt hängen

image_pdfimage_print

Wahrscheinlich jeder kennt es, wenn plötzlich irgendwo im Bildschirm ein Tooltip hängt und nicht weg geht.

Dann kann man einfach Windows+D 2x drücken und dann ist der weg

0  

SQL Rekursion Parent zu Child / Child zu Parent

image_pdfimage_print

Erster Block im CTE: In der WHERE Bedingung wird die Child-Id übergeben

Zweiter Block: Join auf die CTE, ParentId mit der TabelleId

Erster Block im CTE: In der WHERE Bedingung wird die ParentId mit NULL angegeben

Zweiter Block: Join auf die CTE, Id mit der Tabelle ParentId

 

0  

Visual Studio Build Events

image_pdfimage_print

Wenn man nach einem Build eine Applikation starten möchte, muss man einen Umweg um eine bat Datei gehen.

R. Maustaste auf das Projekt in Visual Studio, dann auf “Build” und unter Pre oder Post folgendes eingeben

call  meinPfadZurBatDatei\startPublisher.bat

 

und unter diesen Pfad müssen wir eine bat Datei erstellen, die wiederum eine exe ausführt

einfach start meinPfadZurExe.exe in die bat Datei schreiben

0  

HTML / CSS Container erstellen, der die Zeilen formatiert wie der Inhalt des Containers

image_pdfimage_print

einfach <pre> nutzen

Siehe https://www.mediaevent.de/xhtml/pre.html

0  

SQL Server Remote Zugriff

image_pdfimage_print

Um auf eine SQL Instanz per Remote (von außen) zugreifen zu können, muss man in der Firewall folgende Ports aufmachen:

InBound (Eingehende): TCP 1433 (für z.B. SSMS), UDP 1434 (für ODBC Verbindungen)

OutBound (Ausgehende): TCP 1433

Zusätzlich die Dynamic aus “SQL Server Network Configuration” -> “Protocols for [INSTANZ]” -> “TCP/IP” -> Reiter “IPAdresses” ->  Im Feld “IPAll” -> TCP Dynamic Ports

Auserdem muss der TCP/IP Client Protokoll in SQL Configuration eingeschaltet werden:

außerdem muss der SQL Browser Service laufen:

0  

Async await

image_pdfimage_print

Wie funktionier await?

Ein Thread ist wie eine Pipeline, die einen bestimmten Code in die CPU gibt.

Mal angenommen Thread 1 (Ui Thread) will etwas downloaden und dann auf der UI darstellen. Während des Http Requests ist die Ui gesperrt. Weil der Thread 1 darauf wartet, bis der Server geantwortet hat.

Mit await wird ein freier Thread genommen und der macht den Request. Thread 1 wird nun freigegeben. Der Benutzer kann z.B. weiter die Ui wie gewohnt nutzen.

Wenn Thread 2 fertig ist, sagt er, ich bin fertig und möchte zu dem Thread zurück kehren, der ihn erzeugt hat: Thread 1.

Thread 1 übernimmt und der Codeblock wird weiter ausgeführt.

Wenn es nun egal ist, welcher Thread den Codeblock weiter ausführen soll, kann man

nutzen.

.Result sollte nicht genutzt werden, da im Exceptio Stacktrace Fehlermeldungen wie “MoveNext()” erscheinen. Diese kommen aus der kompilierten Statemachine. Besser ist es

zu nutzen, da dann unser Typ und unsere Exception zurück gegeben werden.

 

 

0  

Handlebars render Funktion wie bei Mustache

image_pdfimage_print

 

0  

Eigene Adblock uBlock Filterliste

image_pdfimage_print

Surface 2019-05-19

 

0  

Zahl als String mit 2 Nachkommastellen und mit Punkt als Tausendertrennzeichen

image_pdfimage_print

 

0