myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » Buchempfehlungen » Buch zu den .NET-Internas?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Buch zu den .NET-Internas?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.307
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW


Palladin007 ist offline

Buch zu den .NET-Internas?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Abend/Morgen,

ich suche nach einem Buch, das die Internas von .NET (Threading, GC, CLR, what ever) erklärt.
Wenn es kein Buch gibt, dann tut's auch irgendetwas online, aber am Ende hab ich doch lieber ein Buch in der Hand.

Mir geht's dabei darum, dass ich einzelne Dinge besser einschätzen kann, wie z.B. die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren. Gerade bei solchen Themen macht man ja schnell Fehler, weil man es gut meint, denkt und dabei im besten Fall mit Kanonen auf Spatzen schießt, aber im schlimmsten Fall grausig zu findende Fehler einbaut.

Kann da jemand etwas empfehlen?
Wäre schön, wenn es nicht ganz so alt ist, am liebsten wäre mir eine moderne Variante bezüglich .NET Core/5, was aber auch noch Parallelen zum "klassischen" .NET zieht.

Deutsch wäre super, aber ist kein Muss.

Ich hab dazu nur dieses recht alte Thema gefunden:
 https://www.mycsharp.de/wbb2/thread.php?threadid=58040
Die Seminare hab ich schon als PDF runtergeladen, aber vielleicht kennt hier jemand neuere/bessere Lektüre dazu?

Beste Grüße
06.08.2020 23:53 Beiträge des Benutzers | zu Buddylist hinzufügen
glandorf glandorf ist männlich
myCSharp.de-Mitglied

avatar-4144.jpg


Dabei seit: 07.10.2016
Beiträge: 49
Entwicklungsumgebung: Visual Studio
Herkunft: Chemnitz


glandorf ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

C# 8.0 in a Nutshell: The Definitive Reference
978-1492051138

glandorf
07.08.2020 09:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.203
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ehrlich gesagt denke ich nicht, dass Du hier das eine absolute Buch finden wirst, sondern auf verschiedene Bücher setzen musst.

Das Buch The Definitive Reference ist gut geht aber lang nicht so tief in gewisse Themen ein wie zB das Buch von Konrad Kokosa über .NET Speicher Management.
07.08.2020 11:57 Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.307
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW

Themenstarter Thema begonnen von Palladin007

Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

"Pro .NET Memory Management: For Better Code, Performance, and Scalability" von Konrad Kokosa


Ist notiert - danke.
Dann ist das Thema bzw. sind die Themen wohl größer als gedacht - aber davon war auszugehen.

Gibt's denn noch andere Bücher, die Du empfehlen kannst, oder kennst Du eine Übersicht solcher Bücher, die man gelesen haben muss, wenn man sich für sowas interessiert?
Das Buch "C# 8.0 in a Nutshell: The Definitive Reference" klingt mehr wie eine Sprach- und Framework-Referenz und scheint keinen tiefgehenden Einblick zu bieten - also nicht das, was ich suche.

Und wenn es (hier) noch keine Übersicht für sowas gibt, dann kann das doch eine solche Übersicht werden.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am 07.08.2020 13:14.

07.08.2020 13:14 Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.203
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich bin mir nicht sicher was Du wirklich suchst, denn

Zitat:
Mir geht's dabei darum, dass ich einzelne Dinge besser einschätzen kann, wie z.B. die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren.

ist ja ein generelles Thema von Software Architektur und weniger was im Hinblick was unter der Haube bei .NET passiert.

Ich behaupte ich bin durchaus fortgeschritten, was Software Architektur, Pattern und .NET sowie C# betrifft und weiß durchaus solche Konzepte anzuwenden.
Aber bei weiten, um Welten komme ich nicht an das Unter-der-Haube-Wissen von gfoidl ran; der hat da mehr als nur eine Schippe mehr Plan als ich.

Muss aber auch sagen; ich brauche das für meine tägliche Arbeit gar nicht. Anders als gfoidl habe ich nicht soooo sehr mit tiefen .NET Themen zutun oder "muss damit zutun haben".
07.08.2020 13:22 Beiträge des Benutzers | zu Buddylist hinzufügen
gfoidl gfoidl ist männlich
myCSharp.de-Team

avatar-2894.jpg


Dabei seit: 07.06.2009
Beiträge: 6.662
Entwicklungsumgebung: VS 2019
Herkunft: Waidring


gfoidl ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Palladin007,

Zitat:
die verschiedenen Möglichkeiten, die Arbeit in mehreren Threads untereinander zu synchronisieren

Auch wenns alt ist, ist es immer noch korrekt und ein "Klassiker":  http://www.albahari.com/threading/
An den grundlegenden Dingen wird sich hier auch in Zukunft nichts ändern, da die Konzepte für CPUs und Speichermodelle sich "hier nicht weiterentwickeln". Das wäre ggf. mächtige Brüche mit der Kompatibilität.

 http://joeduffyblog.com/ (v.a. die alten Beiträge) sind hier ebenfalls eine gute Quelle, die teils sehr in die Tiefe gehen -- nicht zuletzt wegen Joe Duffys damaligen Job für das entsprechende .NET Team.

mfG Gü
08.08.2020 11:23 Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.307
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW

Themenstarter Thema begonnen von Palladin007

Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hatte gehofft, ein Buch zu finden, in dem ich Abends (oder wann auch immer) ohne PC darin lesen und so mein Allgemeinwissen etwas spezifischer ausweiten kann.

Das von Abt verlinkte  Pro .NET Memory Management ist jetzt auf jeden Fall auf meiner Wunschliste.

Und die (auch  hier) verlinkten Blogs hab ich mir auch notiert.
08.08.2020 16:11 Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Palladin007,

also ich kann  http://www.albahari.com/threading/ auch nur sehr empfehlen. Ich glaube nicht, dass es was besseres als Buch gibt bzw. das ist ja eigentlich ein Buch/PDF.

Wobei ich so konkret an Code bzw. Konstrukten orientierte Themen eh nicht ohne PC lesen kann, da ich das Gelesene immer sofort in konkrete Beispielprogramme umsetzten und ausprobieren muss. Allerdings hilft Testen im klassischen Sinne bei Nebenläufigkeit nur sehr begrenzt. Da muss man dann besser einen bösartigen Scheduler spielen. Und das erfordert - zumindest bei mir - höchste Konzentration. Das kann ich eh nur am Schreibtisch - und da steht dann sowieso der PC. Womit sich der Kreis schließt.

Zum bösen Scheduler habe ich in  SyncQueue <T> - Eine praktische Job-Queue einen - wie ich finde sehr lehrreichen - Fall angegeben, wo man den Fehler durch Testen wohl kaum gefunden hätte und in  SyncQueue<T> erweitern: Enqueue blockiert bei voller Queue (in: "Das Programmier-Spiel") folgende Erläuterung geschrieben, wie man vorgehen kann/sollte, um solche Fälle aufzudecken:

Zitat:
[...] weil der Reiz dieser Aufgabe in meinen Augen in gerade im Knobeln und im Kniffligen liegt. Man muss das Ganze wirklich tief durchdenken. Man muss, wie in dem o.g. Link exemplarisch beschrieben, versuchen, einen möglichst bösartigen Benutzer und zusätzlich einen möglichst fiesen Scheduler zu spielen. Der Benutzer führt die Aufrufe in möglichst böser Reihenfolge in einer vertrackten Umgebung von Threads aus und der Scheduler zerhackt das Ganze noch in möglichst ungünstige Häppchen und wechselt zum jeweils unpassendsten Thread. Und dann muss immer noch alles stimmen.

Den bösen Benutzer kann man natürlich auch in Form von gemeinen Testprogrammen "spielen". Aber den bösen Scheduler kann man bei einem Test, bei dem man das Programm einfach laufen lässt, gar nicht oder nur sehr, sehr schwer simulieren. Das geht weit besser im Kopf. [...]

Wer selbst fiesen Scheduler spielen möchte, kann das - für mehrere andere Synchronisierungsaufgaben - auf der extrem coolen Seite  The Deadlock Empire - Slay dragons, master concurrency! tun. Per Knopfdruck kann man dort bestimmen, welcher Thread die jeweils nächste Anweisung ausführen soll und man sieht quasi wie im Debugger sofort, wie sich daraufhin der Programmzustand ändert. Dabei ist es (Spiel-)Ziel, die (jeweils nicht korrekt implementierte) Synchronisierung auszutricksen oder das Programm in einen Ausnahmezustand zu versetzen.

In diesem Zitat "versteckt" sich der Link auf eine weitere Quelle, die ich - neben der Prosa - hier noch beisteuern wollte.

herbivore

PS: Damit man nicht jeden Anwendungscode so intensiv auf Probleme mit der Nebenläufigkeit untersuchen zu müssen, bietet es sich an, im Anwendungscode nicht selbst die Konstrukte (Semaphoren, Kritische Abschnitte, ...) der Nebenläufigkeit zu verwenden, sondern eben solche Klassen wie die SyncQueue, die einem die Details der Synchronisation abnehmen und bei denen man sehr wenig beachten muss (im Grunde genommen nur, dass der einstellende Thread nur bis zum Einstellen auf die gemeinsamen Daten zugreift und der herausholende erst ab/nach dem Herausholen.
19.08.2020 07:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 27.09.2020 16:20