Übersicht der interessantesten DotNext 2018-Berichte: EastBanc Technologies-Version

Hallo Habrowsk-BĂŒrger!

Wir sind von einer Konferenz fĂŒr DotNext .NET-Entwickler zurĂŒckgekehrt und teilen ehrlich unsere EindrĂŒcke ĂŒber die denkwĂŒrdigsten Berichte. Wir hoffen, dass unsere Rezension fĂŒr diejenigen nĂŒtzlich sein wird, die Videos von AuffĂŒhrungen sehen.

Ein Teil der PrÀsentationen wurde auf der Konferenzwebsite veröffentlicht, daher haben wir einige der Rezensionen mit Links zu diesen ergÀnzt.



Tag 1


Verwenden von Tarantool in .NET-Projekten - Anatoly Popov ( PrÀsentation )


Der Bericht begann mit einem Überblick ĂŒber die Entwicklung von SQL -> NoSQL -> NewSQL-Datenbanken sowie deren Vor- und Nachteile. Anatoly erklĂ€rte, warum der Bedarf an NewSQL tatsĂ€chlich gereift ist - dies ist ein Versuch, die NoSQL-Leistung und die SQL-Abfragesprache zu kreuzen, fĂŒr die eine Milliarde nĂŒtzlicher Tools verfĂŒgbar sind.

Die folgende Funktion wurde ĂŒber Tarantool erwĂ€hnt - DatensĂ€tze werden als Tupel beliebiger LĂ€nge gespeichert. Unter der Haube verwendet Tarantool LSM-BĂ€ume.

Im Hauptteil des Berichts sprach Anatoly ĂŒber den Kampf um die Leistung bei der Implementierung des Tarantool-Treibers fĂŒr .NET. Neue Abstraktionen von Readonly Span und dem IMemoryOwner-Pool wurden in Aktion gesetzt. Der Standard ist 200k RPS, was dem Golang-Fahrer gibt, und hat es bisher geschafft, 1/3 des Ergebnisses zu erreichen. Der Redner versicherte, dass er die Indikatoren schrittweise verbessern werde, aber spezifische ZukunftsplĂ€ne und -aussichten blieben im Nebel.

Optimierungen in .NET Core - Egor Bogatov


Yegor umgab seine Geschichte ĂŒber die Eingeweide von Mono und RyuJIT mit angemessenem Humor, im Gegensatz zu derselben Einheit von Mutel, der es ziemlich schlĂ€frig war, zuzuhören.

Egor behandelte das Thema der automatischen Vektorisierung von Berechnungen in Mono und sprach auch ĂŒber SSE-AVX-Anweisungen, die jetzt direkt bei C # erhĂ€ltlich sind.

Mit Blick auf die Zukunft sagte er uns, dass in .Net Core 3 Tier Compilation auf uns wartet, d. H. Ein separater Heavy Jit wird zur Laufzeit wie ein Server in Java angezeigt. In ryuJIT werden neue Optimierungen fĂŒr das Abrollen der Schleife und die Fluchtanalyse erwartet (letztere wird von einem SchĂŒler gesĂ€gt, lassen Sie sich vom Github helfen).

Unser Kommentar: Heute bleibt eine beeindruckende Reserve fĂŒr eine noch stĂ€rkere Steigerung der Plattformleistung, da viele wichtige Optimierungen aus der Java-Welt und klassischen statischen Compilern in .Net noch immer nicht angewendet werden.

Moderne Webentwicklung mit SAFE-Stack - Steffen Forkmann


Stefan ist ein leidenschaftlicher Entschuldiger fĂŒr die F # -Sprache. In dem Bericht teilte er seine Erfahrungen in der Webentwicklung mit, die vollstĂ€ndig auf funktionalen Kanonen basieren. Hier haben Sie sowohl Functional MVC Web Framework (Saturn) als auch Fable fĂŒr die Übersetzung von F # in JS und eine Elm-Ă€hnliche BenutzeroberflĂ€che, die mit wirklich schönen und sehr guten Phrasen gewĂŒrzt ist. Der Bericht als Ganzes ist nicht schlecht und bestĂ€tigt die ĂŒbernatĂŒrlichen FĂ€higkeiten alternativer Religionen.

Erstellen von Xamarin-Anwendungen im Flugzeugmodus - Gerald Versluis ( PrÀsentation )


GemĂ€ĂŸ der PrĂ€sentationsmethode ist der Bericht dem SAFE-Stack-Bericht sehr Ă€hnlich und sieht aus wie ein „Smack“ -Programm: Zuerst legen wir die Essentials-Komponente zum Erkennen des Internetzugangs mit der Anwendung auf eine Platte, dann ĂŒbergeben wir die REST-API ĂŒber Refit, kĂŒhlen die Daten im Akavache-Cache und streuen Polly darĂŒber zur cleveren Fehlerbehandlung von Netzwerkanforderungen. Es war nicht ohne niederlĂ€ndische Selbstironie, da die Anwendung im Simulator stĂ€ndig zufĂ€llig abstĂŒrzte.

ASP.NET Core-Architektur mit mehreren Mandanten: Herausforderungen und Lösungen - Halil İbrahim Kalkan ( PrÀsentation )


Der Bericht beschreibt alle Hauptmerkmale der Architektur von Anwendungen mit mehreren Mandanten.

Die Hauptidee ist, dass ein Unternehmen bei der Entwicklung von SAAS-Anwendungen die Infrastruktur optimal nutzen möchte. Daher befinden sich mehrere Clients auf einem Server, sodass der Server nicht inaktiv ist. Dies fĂŒhrt zu einem Problem, das damit zusammenhĂ€ngt, dass sich alle Daten verschiedener Clients wie im selben Boiler befinden. Der Bericht konzentriert sich auf Lösungen, die einen zuverlĂ€ssigen Zugriff auf diese Daten ermöglichen.

Ein ausgezeichneter Bericht, in dem alles in den Regalen angeordnet ist. Einfache und verstĂ€ndliche Beispiele ohne unnötige Details - sie sind sehr elegant geschrieben und verwenden moderne Muster und AnsĂ€tze. Ich sah mit VergnĂŒgen zu.

Domain-gesteuertes Design: ein Rezept fĂŒr einen Pragmatiker - Alexey Merson ( PrĂ€sentation )


Ein ausgezeichneter Bericht ĂŒber die Grundkonzepte von DDD. Welches Buch soll man zuerst lesen: "blau" oder "rot"? Wie kann das gesamte Team dieselbe Sprache sprechen? Ist es möglich, kyrillische Namen in C # -Programmen zu verwenden? Wie kann man endlich aufhören, Angst vor der getrennten Schnittstelle zu haben und den DomĂ€nencode vom Rest der Anwendung unabhĂ€ngig machen? Alle diese Punkte mit Beispielen werden in diesem Bericht hervorgehoben.

Alexey betont die Bedeutung der Sprache (einzelne Sprache) fĂŒr die Implementierung eines begrenzten Kontexts. Er erklĂ€rte, wie man die GrĂ¶ĂŸe des begrenzten Kontexts wĂ€hlt und welche Arten von SubdomĂ€nen es geben kann. In dem Bericht heißt es auch, dass ein begrenzter Kontext einem Mikroservice entspricht - dies korreliert gut mit unserer Erfahrung bei der Implementierung von Projekten.

Es war interessant, etwas ĂŒber die Essenz der bauchigen Architektur und die Vorteile im Vergleich zur dreischichtigen / vierschichtigen Architektur zu erfahren.

Der Bericht ist ideal fĂŒr diejenigen, die DDD noch nicht kennen und ihre Monolithen auf Microservices ĂŒbertragen möchten, sowie fĂŒr diejenigen, die mit der Entwicklung von Microservice-Lösungen beginnen.

Tag 2


Pragmatischer Unit Test - Vladimir Khorikov ( PrÀsentation )


Einer der besten Berichte und Redner unserer Meinung nach.

Vladimir sortierte durch die Regale, was der wahre Zweck der Tests fĂŒr das Projekt ist, welche Metriken die QualitĂ€t der Tests bestimmen, wie verschiedene Arten von Tests diesen Metriken entsprechen. Man kann nicht allen Gedanken widersprechen, also muss man sehen.

Khorikov hat viele Kurse bei Pluralsight aufgezeichnet - suchen Sie ihn dort. Er hat auch einen guten Blog .

Sofortiges Design - Maxim Arshinov ( PrÀsentation )


Maxim setzte Mersons Bericht ĂŒber DDD fort und sprach ĂŒber den Übergang von der klassischen Codeschichtung zur Zwiebelarchitektur. WĂ€hrend des gesamten Berichts wurde die Methode zur Aktualisierung der E-Mail-Adresse des Benutzers ĂŒberarbeitet. Das Ergebnis war eine Pipeline von Dekorateuren (hi, yegor256) im CQRS-Stil mit der strengsten DTO-Typisierung (hi, FSharpForFunAndProfit).

Als Ergebnis erhielten wir eine vorgefertigte Anleitung fĂŒr die Aktion, die im Projekt verwendet werden kann, um den gleichen eleganten Code wie Max zu erhalten.

Im Allgemeinen ist der Bericht Ă€ußerst nĂŒtzlich. Die Erfahrung von Maxim im Unterrichten wirkte sich positiv auf seine FĂ€higkeiten als Redner aus - das Hören der PrĂ€sentation war einfach schön.

Hinter dem Burst-Compiler Konvertieren von .NET IL in hochoptimierten nativen Code mithilfe von LLVM - Alexandre Mutel


Anscheinend hat Unity bei Spielen der A-Klasse seine ZĂ€hne entblĂ¶ĂŸt, und deshalb braucht igrodelov eine Leistung, die viel nĂ€her an C ++ liegt. Mutel erzĂ€hlte, wie sie gute Ergebnisse erzielen, indem sie eine Teilmenge der C # -Sprache (HPC #) hervorheben, die vorgefertigte Strukturen fĂŒr eine effiziente Arbeit mit Speicher ohne GC und einige bekannte Sprachkonstrukte enthĂ€lt.

Die Idee ist, diese Teilmenge nur fĂŒr die teuersten Methoden anzuwenden, damit an anderen Stellen die HĂ€nde wie immer gelöst werden (soweit dies in der Spielentwicklung zulĂ€ssig ist). Zum Kompilieren von HPC # wird ein neuer AOT / JIT-Burst-Compiler entwickelt. Burst im Vergleich zu RyuJIT ergibt bei einigen Synthesetests bereits 10x.

Die gezeigten Beispiele des generierten Assemblers zeigen, wie klug der Compiler geworden ist. Und die Lösung allein und niemand ist ĂŒberrascht - IL-Code wird in LLVM eingespeist. Intrinsics werden auch fĂŒr die Mathematik unter Verwendung einer Hochleistungsbibliothek eines Drittanbieters geschrieben.

Der Bericht ist schwer zu verstehen, der Sprecher ist zu hart.

Das Leben der Schauspieler in einem Cluster: warum, wann und wie - Vagif Abilov ( PrÀsentation )


Der Bericht ergab, dass die HĂ€lfte des Publikums auf F # sitzt. Dies ist vielleicht die angenehmste Sache, die in diesem Bericht war. Die AuffĂŒhrung endete mit einem Live-Gesang ĂŒber gespaltenes Gehirn in einem Cluster. Es ist herrlich.

Wie man unter Last ĂŒberlebt: fehlertoleranter Server, Smart Client - Igor Lukanin ( PrĂ€sentation )


Igor sprach ĂŒber die HochlastkĂŒche in den Kontur-Projekten. Ich war ĂŒberrascht, dass das Unternehmen auf dem Client einen „Balancer“ verwendet: Die API sendet Informationen zum Laden der Clusterknoten und -status 429, je nachdem, welcher Client versteht, wie Anforderungen verteilt werden. Er zeigte auch Metriken zur Ressourcennutzung und wie man feststellt, ob alles gut oder alles schlecht ist. Er erklĂ€rte, wie man Anfragen nach ZeitĂŒberschreitung und nach Kunden zitiert und warum es besser ist, die Warteschlange in LIFO-Reihenfolge zu verarbeiten.

Das Mikrofon gehörte einem erfahrenen Lautsprecher, Igor zu hören war angenehm.

Dodo IS Performance Architektur - Georgy Polevoy ( PrÀsentation )


ZunÀchst wirkte der Bericht eher langweilig: das ungewisse Tempo der ErzÀhlung, langweilige Folien mit Technologielisten, bekannte Definitionen. Irgendwann kam ein Verdacht auf: Bald wird der Sprecher sagen, dass alles, was benötigt wird, eine Linie am Eingang ist. Aber es war nicht so einfach.

Wenn wir den Bericht kurz beschreiben, können wir sagen, dass er den Funktionen der Polly- Bibliothek gewidmet war, wie z. B. Wiederholungsrichtlinie, Bulkhead-Isolierung, Fallback, und mit hervorragenden Beispielen aus dem Leben von Dodo Pizza gewĂŒrzt ist.

Der Trend der letzten Jahre geht dahin, ĂŒberall AsynchronitĂ€t zu verwenden. Dieser Trend hat jedoch einen nicht offensichtlichen Effekt - dies fĂŒhrt dazu, dass die Serverressourcen "verstopft" sind. Bisher war alles auf einen Thread-Pool beschrĂ€nkt. Der Webserver verfĂŒgte ĂŒber einen festen Thread-Pool, der eingehende Anforderungen mit synchronen VorgĂ€ngen verarbeitete. Dies begrenzte die Belastung des Servers. Jeder Thread wurde freigegeben und erhielt eine weitere Anfrage zur Verarbeitung, wenn alle Arbeiten wirklich abgeschlossen waren.

Heutzutage schreiben Entwickler hĂ€ufig asynchronen Code, ohne ĂŒber die Konsequenzen nachzudenken. Infolgedessen werden die Streams des Webservers, die die nĂ€chste asynchrone Aufgabe starten, freigegeben und verarbeiten immer mehr Anforderungen. Im Laufe der Zeit nimmt die Anzahl wettbewerbsfĂ€higer asynchroner VorgĂ€nge zu, und der Webserver akzeptiert immer mehr Anforderungen.

Der Autor in seinem Bericht erklĂ€rt nur, was ParallelitĂ€t ist und warum sie begrenzt werden sollte. Diese und andere Aufgaben des Lastmanagements und der Fehlertoleranz werden ĂŒbrigens von der Polly-Bibliothek unterstĂŒtzt.

Selbst wenn Sie keine hoch ausgelasteten Dienste entwickeln, lesen Sie diesen Bericht im Allgemeinen trotzdem.

Erstellen reaktionsschneller und skalierbarer Anwendungen - Jeffrey Richter ( PrÀsentation )


Dies ist ein ziemlich alter Bericht von Jeffrey Richter. Es war mindestens ein Jahr lang im Internet zu finden, und das Thema hat keinen Anspruch auf Neuheit. Aber zum Teufel, es ist Jeffrey Richter! Wir konnten nicht anders, als dem Autor des Buches zuzuhören, das zu Recht als die Bibel eines jeden C # -Entwicklers gilt. Der alte Jeffrey war eine nette Person und ein guter Redner. Wir hatten einfach Spaß.

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


All Articles