Connect with us

Entwicklung & Code

.NET 10.0 Preview 5 bringt XAML-Vereinfachungen und Post-Quanten-Kryptographie


.NET 10.0 Preview 5 steht zum Herunterladen auf der .NET-Downloadseite bereit. Für Visual Studio 2022 gab es nur ein Bugfix-Update von Version 17.14.4 auf 17.14.5.

Weiterhin ist .NET 10.0 nicht direkt über das Visual-Studio-Setup-Programm installierbar (siehe Abbildung). Wenn das .NET 10.0 SDK getrennt installiert wurde, erscheint aber „.NET 10.0 Preview“ in den Auswahlmasken. Anwenderinnen und Anwender finden es auf der Downloadseite.


Visual Studio 2022 bietet .NET 10.0 noch nicht im Installer an.

Visual Studio 2022 bietet .NET 10.0 noch nicht im Installer an.

Visual Studio 2022 bietet .NET 10.0 noch nicht im Installer an.

(Bild: Screenshot (Holger Schwichtenberg))


Dr. Holger Schwichtenberg

Dr. Holger Schwichtenberg

Dr. Holger Schwichtenberg ist Chief Technology Expert bei der MAXIMAGO-Softwareentwicklung. Mit dem Expertenteam bei www.IT-Visions.de bietet er zudem Beratung und Schulungen im Umfeld von Microsoft-, Java- und Webtechniken an. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.

In Microsofts Cross-Platform-GUI-Framework .NET MAUI (Multi-Platform App UI) hat Microsoft zwei Vereinfachungen für die lästigen Namensraumdeklarationen zu Beginn einer XAML-Datei eingebaut. Entwicklerinnen und Entwickler können die notwendigen Namensraumdeklarationen übergreifend über alle XAML-Dateien zentral bereitstellen, in einer Datei mit Namen GlobalXmlns.cs.


[assembly: XmlnsDefinition(
    "
    "MyApp.Views")]
[assembly: XmlnsDefinition(
    "
    "MyApp.Controls")]
[assembly: XmlnsDefinition(
    "
    "MyApp.Converters")]
[assembly: XmlnsDefinition(
    "
    "


Listing: Beispiel für eine Datei GlobalXmlns.cs

In der XAML-Datei reicht es dann, nur noch die Namensräume und einzubinden:



    


Aber auch das lässt sich noch weiter zusammendampfen, indem man in der Projektdatei (.csproj) die implizite Namensraumdeklaration aktiviert:


 
  $(DefineConstants);MauiAllowImplicitXmlnsDeclaration
  true


Danach können die einzelnen XAML-Dateien auf jegliche Namensraumverweise verzichten:



    


Nicht verzichten können Entwicklerinnen und Entwickler aber auf das Prefix x: vor Class und DataType.

Die .NET-MAUI-Projektvorlage gibt es in .NET 10.0 Preview 5 zwar bereits als eine Datei GlobalXmlns.cs, diese wird aber noch nicht verwendet (siehe Abbildung). Entwicklerinnen und Entwickler können die implizite Namensraumdeklaration aber leicht in der Projektdatei (.csproj) nachtragen und dann die Namensräume aus App.xaml, AppShell.xaml, MainPage.xaml und anderen entfernen.


Die Projektvorlage für .NET MAUI 10.0 enthält in Preview 5 die Datei GlobalXmlns.cs, verwendet sie aber bisher nicht.

Die Projektvorlage für .NET MAUI 10.0 enthält in Preview 5 die Datei GlobalXmlns.cs, verwendet sie aber bisher nicht.

Die Projektvorlage für .NET MAUI 10.0 enthält in Preview 5 die Datei GlobalXmlns.cs, verwendet sie aber bisher nicht.

(Bild: Screenshot (Holger Schwichtenberg))

Um diese neuen Features zu probieren, ist erforderlich, nach der Installation des .NET 10.0 Preview 5 Software Development Kit (SDK) auch noch .NET MAUI auf den aktuellen Stand zu bringen, via SDK-Workload-Installation:


dotnet workload install maui


Zum Kompilieren braucht man auch noch die aktuelle Version 36 des Android SDK, was aber im Rahmen des ersten Kompiliervorgangs automatisch installiert wird.

Lesen Sie auch

Auch dem etablierten GUI-Framework „Windows Presentation Foundation“ (WPF) spendiert Microsoft in .NET 10.0 Preview 5 eine Vereinfachung in der XAML-Syntax. Zur Deklaration von Zeilen und Spalten in einem -Steuerelement gibt es nun die neuen Eigenschaften RowDefinitions und ColumnDefinitions, zum Beispiel für drei Zeilen und zwei Spalten:



    
    
    


Bisher musste die Zeilen- und Spaltendefinition in WPF in ausschweifender Tag-Folge mit und geschehen:



    
        
        
        
    
    
        
        
    

    
    
    


Die neue Syntax übernimmt ein bestehendes XAML-Feature aus der Windows UI Library (WinUI), das es auch in den XAML-Frameworks der Anbieter Uno Platform und Avalonia schon lange gibt.

In Visual Studio 2022 Version 17.14.5 wird die neue Syntax für die Spalten- und Zeilendefinition im WPF-Designer zwar berücksichtigt, es fehlen aber die sichtbaren Zellgrenzen für alle Zellen inklusive der Möglichkeit der visuellen Änderung der Zellgrößen. Es wird nur noch die Zellgrenze für die aktuell angewählte Zelle gezeigt (siehe folgende Abbildungen) – die anderen Hilfslinien und die Größenänderungen fehlen.


Alte Syntax im Visual-Studio-Designer

Alte Syntax im Visual-Studio-Designer

Alte Syntax im Visual-Studio-Designer

(Bild: Screenshot (Holger Schwichtenberg))


Neue Syntax im Visual-Studio-Designer: Die Hilfslinien und Einstellpunkte für die Größe fehlen.

Neue Syntax im Visual-Studio-Designer: Die Hilfslinien und Einstellpunkte für die Größe fehlen.

Neue Syntax im Visual-Studio-Designer: Die Hilfslinien und Einstellpunkte für die Größe fehlen.

(Bild: Screenshot (Holger Schwichtenberg))

Darüber hinaus gibt es in WPF einige Fehlerbeseitigungen im Fluent Design, siehe Release Notes.

Die von dem NuGet-Paket Microsoft.AspNetCore.OpenApi generierten OpenAPI-Metadaten für eine ASP.NET-Core-basierte Web-API berücksichtigen schon seit .NET 10.0 Preview 2 Informationen aus den XML-Kommentaren, die zu Klassen oder Methoden hinterlegt sind. Allerdings wurde das Tag bisher ignoriert.

Das ist in Preview 5 behoben: Der Inhalt des Tags (siehe Listing) wandert in responses/description im JSON-Dokument (siehe Abbildung).


using Microsoft.AspNetCore.Mvc;
 
namespace NET10_WebAPIController.Controllers;
/// 
/// Der Wettervorhersage-Controller stellt Wetterdaten zur Verfügung.
/// 
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
 private static readonly string[] Summaries =
 [
     "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
 ];
 
…
 
 /// 
 /// Diese Operation liefert die Wettervorhersage für die nächsten x Tage
 /// 
 /// Die Wetterdaten sind zufällig im RAM erzeugt ;-)
 /// Liste von WeatherForecast-Objekten
 /// Stadt
 /// Anzahl der Tage
 /// Liste von WeatherForecast-Objekten
 [HttpGet]  
 [Route("/weatherforecast/")]
 [Route("/weatherforecast/{city}/{days}")]
 [ProducesResponseType>(StatusCodes.Status200OK, Description = "Wettervorhersage für die nächsten x Tage")]
 public IEnumerable GetWeatherForecast(string city = "", int days = 5)
 {
  return Enumerable.Range(1, days).Select(index => new WeatherForecast
  {
   Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
   TemperatureC = Random.Shared.Next(-20, 55),
   Summary = Summaries[Random.Shared.Next(Summaries.Length)]
  })
  .ToArray();
 }
}


Listing: WebAPI-Controller-Klasse mit XML-Kommentaren


Ausschnitt aus der OAS-JSON-Datei: Die WebAPI-Operation mit den Texten aus den XML-Kommentaren berücksichtigt nun auch den Inhalt des Tags <returns>

Ausschnitt aus der OAS-JSON-Datei: Die WebAPI-Operation mit den Texten aus den XML-Kommentaren berücksichtigt nun auch den Inhalt des Tags <returns>

Ausschnitt aus der OAS-JSON-Datei: Die WebAPI-Operation mit den Texten aus den XML-Kommentaren berücksichtigt nun auch den Inhalt des Tags

(Bild: Holger Schwichtenberg)


Online-Konferenz betterCode() 10.0 am 18. November 2025

Online-Konferenz betterCode() 10.0 am 18. November 2025

(Bild: coffeemill/123rf.com)

Das nächste LTS-Release steht an: Auf der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025 – ausgerichtet von iX und dpunkt.verlag in Kooperation mit IT-visions.de – präsentieren der Autor dieses Artikels, Dr. Holger Schwichtenberg, und weitere Experten die wichtigsten Neuerungen. Dazu zählen die Updates im .NET 10.0 SDK sowie in C# 14.0, ASP.NET Core 10.0, Blazor 10.0, Windows Forms 10.0, WPF 10.0, WinUI 3, .NET MAUI 10.0 und die Integration von Künstlicher Intelligenz in .NET-Anwendungen.

Das Programm ist noch nicht veröffentlicht – bis dahin sind vergünstigte Blind-Bird-Tickets bereits im Online-Shop erhältlich. Das Vorjahresprogramm lässt sich im Archiv einsehen.



Source link

Weiterlesen
Kommentar schreiben

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Entwicklung & Code

programmier.bar: CTO-Special mit Peyman Pouryekta – Interim CTO und Berater


Peyman Pouryekta berät heute als selbstständiger Experte CTOs, Firmen und Venture Funds – doch sein Weg dorthin war alles andere als geradlinig. Geboren 1982 in Teheran, kam er als Kind nach Deutschland, machte später eine Elektriker-Ausbildung, brach ein Studium ab und fand schließlich über einen weiteren Ausbildungsweg zur Softwareentwicklung. In den 2010er Jahren arbeitete er in Berlin schon früh mit neuronalen Netzen, KI und skalierbaren Produkten.

Im Gespräch mit Jan Gregor Emge-Triebel und Dennis Becker geht es um Peymans Ausbildungsweg, seine ersten Leadership-Rollen und seine Entscheidung für die Selbstständigkeit. Außerdem diskutieren die drei, welche Fehler Führungskräfte sowie Gründerinnen und Gründer häufig machen – und welche Rolle künstlliche Intelligenz in Zukunft spielen wird.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmung wird hier ein externer Inhalt geladen.

Die aktuelle Ausgabe des Podcasts steht auch im Blog der programmier.bar bereit: „Peyman Pouryekta – Interim CTO und Berater„. Fragen und Anregungen gerne per Mail oder via Mastodon, Bluesky, LinkedIn oder Instagram.


(mai)





Source link

Weiterlesen

Entwicklung & Code

Neuerungen in C++26: Datenparallele Datentypen (SIMD)


Die SIMD-Bibliothek bietet in C++26 portable Typen zur expliziten Angabe von Datenparallelität und zur Strukturierung von Daten für einen effizienteren SIMD-Zugriff. Bevor wir uns im Detail mit der neuen Bibliothek befassen, möchte ich kurz ein paar allgemeine Anmerkungen zu SIMD (Single Instruction, Multiple Data) voranschicken.


Rainer Grimm

Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Vektorisierung bezieht sich auf die SIMD-Erweiterungen (Single Instruction, Multiple Data) des Befehlssatzes moderner Prozessoren. SIMD ermöglicht es dem Prozessor, eine Operation parallel auf mehrere Daten anzuwenden.

Ein einfaches Beispiel: Ob ein Algorithmus parallel und vektorisiert ausgeführt wird, hängt von vielen Faktoren ab – unter anderem davon, ob die CPU und das Betriebssystem SIMD-Befehle unterstützen. Außerdem kommt es auf den Compiler und den Optimierungsgrad an, der zum Kompilieren des Codes eingesetzt wird.


// SIMD.cpp

const int SIZE= 8;

int vec[]={1,2,3,4,5,6,7,8};
int res[SIZE]={0,};

int main(){
  for (int i= 0; i < SIZE; ++i) {
    res[i]= vec[i]+5; // (1)
  }
}


Zeile 1 ist die Schlüsselzeile in dem kleinen Programm. Dank des Compiler Explorers ist es recht einfach, die Assemblerbefehle für Clang 3.6 mit und ohne maximale Optimierung (-O3) zu generieren.

Obwohl meine Zeit, in der ich mit Assemblerbefehlen herumgespielt habe, lange vorbei ist, ist es offensichtlich, dass alles sequenziell ausgeführt wird:



(Bild: Rainer Grimm)

Durch die Verwendung der maximalen Optimierung erhalte ich Befehle, die parallel auf mehreren Datensätzen ausgeführt werden:



(Bild: Rainer Grimm)

Die Move-Operation (movdqa) und die Add-Operation (paddd) verwenden die speziellen Register xmm0 und xmm1. Beide Register sind sogenannte SSE-Register mit einer Breite von 128 Bit. Damit können 4 ints auf einmal verarbeitet werden. SSE steht für Streaming SIMD Extensions. Leider sind Vektorbefehle stark von der eingesetzten Architektur abhängig. Weder die Befehle noch die Registerbreiten sind einheitlich.

Moderne Intel-Architekturen unterstützen meist AVX2 oder sogar AVX-512. Dies ermöglicht 256-Bit- oder 512-Bit-Operationen. Damit können 8 oder 16 ints parallel verarbeitet werden. AVX steht für Advanced Vector Extension.

Genau hier kommen die neuen datenparallelen Datentypen der Bibliothek ins Spiel, die eine einheitliche Schnittstelle zu Vektorbefehlen bieten.

Bevor ich mich mit der neuen Bibliothek beschäftige, sind einige Definitionen erforderlich. Diese Definitionen beziehen sich auf den Proposal P1928R15. Insgesamt umfasst die neue Bibliothek sechs Proposals.


Cpp SIMD

Cpp SIMD

(Bild: Rainer Grimm)

Die Menge der vektorisierbaren Typen umfasst alle Standard-Ganzzahltypen, Zeichentypen sowie die Typen float und double. Darüber hinaus sind std::float16_t, std::float32_t und std::float64_t vektorisierbare Typen, sofern sie definiert sind.

Der Begriff datenparallel bezieht sich auf alle aktivierten Spezialisierungen der Klassen-Templates basic_simd und basic_simd_mask. Ein datenparalleles Objekt ist ein Objekt vom datenparallelen Typ.

Ein datenparalleler Typ besteht aus einem oder mehreren Elementen eines zugrunde liegenden vektorisierbaren Typs, der als Elementtyp bezeichnet wird. Die Anzahl der Elemente ist für jeden datenparallelen Typ eine Konstante und wird als Breite dieses Typs bezeichnet. Die Elemente in einem datenparallelen Typ werden von 0 bis Breite −1 indiziert.

Eine elementweise Operation wendet eine bestimmte Operation auf die Elemente eines oder mehrerer datenparalleler Objekte an. Jede solche Anwendung ist in Bezug auf die anderen nicht sequenziell. Eine unäre elementweise Operation ist eine elementweise Operation, die eine unäre Operation auf jedes Element eines datenparallelen Objekts anwendet. Eine binäre elementweise Operation ist eine elementweise Operation, die eine binäre Operation auf entsprechende Elemente zweier datenparallelisierter Objekte anwendet.

Nach so viel Theorie möchte ich nun ein kleines Beispiel zeigen. Es stammt von Matthias Kretz, Autor des Proposals P1928R15. Das Beispiel aus seiner Präsentation auf der CppCon 2023 zeigt eine Funktion f, die einen Vektor entgegennimmt und dessen Elemente auf ihre Sinuswerte abbildet:


 void f(std::vector& data) {
    using floatv = std::simd;
    for (auto it = data.begin(); it < data.end(); it += floatv::size()) {
        floatv v(it);
        v = std::sin(v);
        v.copy_to(it);
    }
}


Die Funktion f nimmt einen Vektor von Floats (data) als Referenz. Sie definiert floatv als SIMD-Vektor von Floats unter Verwendung von std::simd. f durchläuft den Vektor in Blöcken, wobei jeder Block die Größe des SIMD-Vektors hat.

Für jeden Block gilt:

  • Lädt den Block in einen SIMD-Vektor (floatv v(it);).
  • Wendet die Sinusfunktion gleichzeitig auf alle Elemente im SIMD-Vektor an (v = std::sin(v);).
  • Schreibt die Ergebnisse zurück in den ursprünglichen Vektor (v.copy_to(it);).

Die Behandlung von SIMD-Anweisungen wird besonders elegant, wenn der Proposal P0350R4 in C++26 implementiert wird. SIMD kann dann beispielsweise als neue Execution Policy in Algorithmen verwendet werden:


void f(std::vector& data) {
    std::for_each(std::execution::simd, data.begin(), data.end(), [](auto& v) {
        v = std::sin(v);
    });
}


In meinem nächsten Artikel werde ich mich näher mit der neuen SIMD-Bibliothek befassen.


(map)



Source link

Weiterlesen

Entwicklung & Code

Die Produktwerker: Scrum-Werte für Product Owner – ein Kompass für den Alltag


Die fünf Scrum-Werte stehen etwas unscheinbar im Scrum Guide – nur ein kurzer Absatz, gefühlt kaum mehr als eine Randnotiz. Und doch bilden sie die Grundlage dafür, dass iteratives Arbeiten, gemäß dem Prinzip empirischer Prozesssteuerung, in Scrum überhaupt möglich ist.

In dieser Folge sprechen Oliver Winter und Tim Klein darüber, wie Product Owner diese Scrum-Werte im Alltag konkret leben können. Nicht abstrakt und theoretisch, sondern ganz praktisch – im Spannungsfeld von Verantwortung, Kommunikation und Produktführung.

Viele Teams und Organisationen arbeiten mit Scrum, ohne die Bedeutung der Scrum-Werte wirklich zu reflektieren. Dabei hängt vieles genau davon ab: Wie offen geht man mit Feedback um? Wie mutig spricht man Konflikte an? Wie sehr helfen Fokus, Commitment und Respekt dabei, Klarheit zu schaffen und wirkungsvoll zusammenzuarbeiten?

Tim und Oliver nehmen sich alle fünf Scrum-Werte vor – Commitment, Fokus, Mut, Offenheit und Respekt – und beleuchten sie aus der Sicht eines Product Owners. Sie zeigen, dass es nicht um perfekte Haltung oder moralische Überlegenheit geht, sondern um gelebte Verantwortung. Und um die Wirkung, die entsteht, wenn ein Product Owner diese Werte nicht nur benennt, sondern im täglichen Handeln sichtbar macht.

Ob in der Priorisierung, im Stakeholder-Dialog oder im Sprint Review: Die Scrum-Werte zeigen sich überall. Wer als Product Owner mutig ist, kann klare Entscheidungen treffen, statt es allen recht machen zu wollen. Wer respektvoll kommuniziert, schafft Vertrauen – gerade auch in schwierigen Situationen. Und nur wer offen bleibt, kann Feedback wirklich annehmen, ohne die eigene Position zu verlieren.

Oft stehen diese Werte in Spannung zueinander – oder im Widerspruch zu dem, was das Umfeld verlangt. Hierzu hatten die Produktwerker letzte Woche die Episode mit Johannes Schartau („Wenn Strukturen die Produktentwicklung behindern“). Gerade unter Druck fällt es schwer, Respekt zu zeigen, mutig zu bleiben oder sich zu fokussieren. Und genau deshalb braucht es Reflexion: ein klares Gespür dafür, welchen Wert ich in meinem Kontext gerade besonders stärken will. Und die Bereitschaft, kleine Schritte zu gehen, statt alles auf einmal verändern zu wollen.

Diese Folge ist eine Einladung, den Scrum-Werten mehr Raum zu geben – nicht als Theorie, sondern als Kompass im Alltag. Wer sie ernst nimmt, stärkt nicht nur die eigene Wirksamkeit als Product Owner, sondern auch das Vertrauen im Team und in die eigene Produktverantwortung.

Diese weiteren Episoden werden im Gespräch genannt:

Die aktuelle Ausgabe des Podcasts steht auch im Blog der Produktwerker bereit: „Was bedeuten die Scrum Werte für Product Owner – und wie lebst du sie im Alltag„.


Product Owner Days, Konferenz in Köln, 2. und 3. April 2025

Product Owner Days, Konferenz in Köln, 2. und 3. April 2025

(Bild: deagreez/123rf.com)

So geht Produktmanagement: Die Online-Konferenz Product Owner Day von dpunkt.verlag und iX geht in die achte Runde. Am 13. November 2025 können Product Owner, Produktmanagerinnen und Service Request Manager dort ihren Methodenkoffer erweitern, sich vernetzen und von den Good Practices anderer Unternehmen inspirieren lassen.

Vergünstigte Blind-Bird-Tickets sind bis zur Programmveröffentlichung erhältlich. In der Rückschau finden Interessierte das Programm des Vorjahres.


(mai)



Source link

Weiterlesen

Beliebt