


Detaillierte Einführung häufig verwendeter Frameworks basierend auf der .NET-Plattform
Seit ich .NET gelernt habe, haben mich der elegante Programmierstil, die extrem einfache Skalierbarkeit, die ausreichend leistungsstarken Entwicklungstools und die minimale Lernkurve sehr interessiert. Außerdem habe ich in meiner Arbeit und meinem Studium einige Open-Source-Kenntnisse gesammelt Ich werde sie hier vorerst aussortieren. Wenn ich noch einmal darüber nachdenke, werde ich dieses Protokoll mit der Zeit weiter ergänzen und meine eigene Komponentenerfahrungsbibliothek erstellen.
Verteiltes Cache-Framework:
Microsoft Velocity: Microsofts eigenes verteiltes Cache-Service-Framework.
Memcahed: Ein verteiltes Caching-System, das derzeit von vielen Websites verwendet wird, um die Geschwindigkeit des Website-Zugriffs zu verbessern.
Redis: Es handelt sich um eine leistungsstarke KV-Datenbank. Seine Entstehung gleicht die Mängel von Memcached in einigen Aspekten weitgehend aus.
EnyimMemcached: Greifen Sie auf den besten .NET-Client von Memcached zu und integrieren Sie einen guten verteilten Balancing-Algorithmus.
Empfohlenes Open-Source-.NET-System:
OXITE: Microsoft ASP.NET MVC-Falldemonstrationsframework.
PetShop: Microsoft ASP.NET Zoohandlung.
Orchard: Ein ausländisches MVC-Open-Source-Blogsystem.
SSCLI: Microsofts Open-Source-Code in der NET Framework 2.0-Ära.
DasBlog: Ein fremdes Blogsystem basierend auf ASP.NET.
BlogEngine.NET: Ein ausländisches kostenloses und Open-Source-Blogging-System.
Dotnetnuke.NET: Ein sehr hervorragendes Open-Source-Portalprogramm basierend auf ASP.NET.
Discuz.NET: Inländisches Open-Source-Forum-Community-System.
nopCommerce und Aspxcommerce: Ein hochwertiges ausländisches Open-Source-B2C-Website-System.
JumboTCMS und DTCMS: Zwei inländische Open-Source-Website-Verwaltungssysteme:
Behandlung von Protokollierungsausnahmen:
Log4Net.dll: leichtes, kostenloses und Open-Source-.NET-Protokollierungsframework.
Enterprise Library Log Application Black: Protokollaufzeichnung der Microsoft Enterprise Library.
Elmah: Implementiert das beliebteste Framework zur Ausnahmeprotokollierung von ASP.NET-Anwendungen.
NLog: Es handelt sich um eine einfache und flexible Protokollierungsbibliothek mit höherer Leistung als Log4Net und einfacher zu verwenden und zu warten.
Über NoSQL-Datenbanken:
Mongodb: verteilte Dateispeicherdatenbank.
Membase: Ein neues Schwergewichtsmitglied der Familie.
Automatisches Aufgabenplanungs-Framework
Quartz.NET: Ein Open-Source-Jobplanungs- und automatisches Aufgaben-Framework.
Topshelf: Ein weiteres Open-Source-Framework zum Erstellen von Windows-Diensten
Abhängigkeitsinjektions-IOC-Container-Framework:
Unity: Ein IOC-Abhängigkeitsinjektions-Framework, das vom Patterns&Practicest-Team von Microsoft entwickelt wurde und übergreifende AOP-Anliegen unterstützt.
MEF (Managed Extensibility Framework): Es handelt sich um ein Framework zur Erweiterung von .NET-Anwendungen und zur Entwicklung von Plug-in-Systemen.
Spring.NET: Abhängigkeitsinjektion, aspektorientierte Programmierung (AOP), Datenzugriffsabstraktion und ASP.NET-Integration.
Autofac: Das beliebteste Abhängigkeitsinjektions- und IOC-Framework, leichtgewichtig und leistungsstark, nahezu ohne Eingriff in den Projektcode.
PostSharp: Implementiert statische AOP-übergreifende Anliegen, ist einfach zu verwenden und leistungsstark und erfordert keine Änderungen an der Zielabfangmethode.
Ninject: Abhängigkeitsinjektions-IOC-Framework basierend auf .NET Lightweight Open Source
Mehrere häufig verwendete ORM-Frameworks:
EF (ADO.NET Entity Framework): Von Microsoft entwickeltes ORM-Framework auf Basis von ADO.NET.
Nhibernate: Ein leichtes ORM-Framework für die .NET-Umgebung.
SqlMapper.cs: Eine gängige C#-Datenbankzugriffsklasse für kleine Projekte.
AutoMapper: Ein beliebtes Objekt-Mapping-Framework, das viel harte Codierung reduzieren kann, kompakt und flexibel ist und eine akzeptable Leistung bietet.
SubSonic: Ein hervorragendes Open-Source-ORM-Mapping-Framework, das auch einen Codegenerator bietet, der Ihren eigenen Anforderungen entspricht.
FluentData: Ein leichtgewichtiges Open-Source-ORM-Framework für Kettenabfragen basierend auf der Fluent-API.
Dapper: Ein leichtes und leistungsstarkes ORM-Framework basierend auf EMIT.
EmitMapper: Ein leistungsstarkes ORM-Framework, das IL-Code durch EMIT zur Laufzeit dynamisch generiert, anstatt einen Reflexionsmechanismus zu verwenden.
Format- und Datentypkonvertierung
Newtonsoft.Json: Derzeit die beliebteste JSON-Serialisierungsbibliothek in der .NET-Entwicklung, die die Grundlage für die neue Version der WebApi-Bibliothek bildet.
System.JSON.dll: Von Microsoft entwickelte JSON-Serialisierungskomponente (muss separat heruntergeladen werden)
DataContractJsonSerializer und DataContractXmlSerializer: Die von Microsoft in WCF verwendeten Serialisierer.
JavaScriptSerializer: Microsofts Standard-JSON-Formatierer für WEB-Entwickler.
iTextSharp, PDFsharp und PDF.NET: Komponenten zur Verarbeitung und Generierung von PDF-Dokumenten über .NET.
SharpZipLib.dll: Kostenlose und Open-Source-ZIP- und GZIP-Datei-Dekomprimierungskomponente.
Math.NET: Leistungsstarke mathematische Operationen, Analysis, Gleichungslösung und wissenschaftliche Operationen.
DocX: Keine Notwendigkeit, Word-Software zu installieren, Word-Dateien über C# bedienen.
SharpSerializer: Open-Source-XML-, Binär-, JSON-, Komprimierungs- und Optimierungs-Framework.
Reflexion und dynamische Sprachen
Clay Dynamic: Mit dem Open-Source-Dynamic-Language-Framework können Sie Objekte auf JavaScript-ähnliche Weise erstellen.
ExposedObject: Greifen Sie über dynamische Sprache auf private Mitglieder außerhalb der Klasse zu.
PrivateObject: Eine Klasse im Microsoft Unit Testing Framework, die externe Aufrufe an private Mitglieder einer Klasse ermöglicht.
Plattformübergreifende und Laufzeitlösungen
MONO.NET: Eine plattformübergreifende .NET-Betriebsumgebung, die es ermöglicht, .NET plattformübergreifend auszuführen.
DotGnu Portable.NET: Eine plattformübergreifende Laufzeit ähnlich wie MONO.NET.
Phalanger: Kompilieren Sie PHP in .NET, um Interoperabilität zwischen PHP und .NET zu erreichen.
VMDotNet: .NET-Laufzeit, die von China Mobile Fetion verwendet wird.
Unity3D: Ein plattformübergreifendes Spieleentwicklungs-Framework für C# und JavaScript, das von Microsoft stark unterstützt wird.
Cassini, IIS Express und Cassinidev: Open-Source-ASP.NET-Ausführungsumgebung.
Katana: Microsofts Nicht-IIS-Hosting von ASP.NET und MVC basierend auf der OWIN-Spezifikation.
IKVM.NET: Virtuelle JAVA-Maschine basierend auf .NET, die die Ausführung von JAVA auf .NET ermöglicht.
WEB-Entwicklung und Design
Jumony Core: HTML-Engine, die auf Basis von .NET entwickelt wurde.
Microsoft.mshtml.dll, Winista.HtmlParser.dll und HtmlAgilityPack.dll: Framework zum Parsen und Verarbeiten von HTML-Dokumenten.
JavaScript.NET und ClearScript (hergestellt von Microsoft) : JavaScript-Engine, die auf Basis von .NET entwickelt wurde.
NCrawler: Open-Source-Webcrawler-Software mit der HTML-Verarbeitungs-Engine htmlagilitypack.
AntiXSS: Die offizielle Open-Source-Bibliothek von Microsoft zur Verhinderung von Cross-Site-Angriffen durch XSS-Skripte. Sie kodiert Inhalte über einen Whitelist-Mechanismus.
YUICompressor.NET, Microsoft Ajax Minifier und Google Closure Compiler: JavaScript- und CSS-Kompressoren.
NancyFx: Es ist ein gutes, leichtes Open-Source-.NET-WEB-Framework. Wenn Sie schnell eine einfache WEB-Anwendung erstellen möchten.
AspNetPager: Eine bekannte inländische ASP.NET-Paging-Steuerung, die mehrere Paging-Methoden unterstützt.
NOPI.dll: Plug-in zum Exportieren von Excel-Berichten (implementiert auf Basis von Microsoft OpenXml) (nopi.css.dl legt den Stil über CSS fest)
Enterprise Library: Microsofts Best-Practice-Komponente für die Entwicklung von Unternehmensanwendungen.
PowerCollections: Eine fortschrittliche Open-Source-Sammlung, die von einer talentierten Person im Ausland geschrieben wurde.
Mobiles Internet und Cloud Computing
PushSharp: Push-Nachrichten über .NET an verschiedene mobile Plattformen senden.
Mono für Android: Entwickeln Sie Android-Anwendungen mit der .NET-Sprache:
MonoTouch: Verwenden Sie die .NET-Sprache, um IOS-Anwendungen zu entwickeln.
PhoneGap und AppCan: plattformübergreifende mobile Entwicklungsplattformen basierend auf HTML5.
Cordova: Ein von PhoneGap für Apache bereitgestelltes Open-Source-Projekt. Es ist die Kern-Engine von PhoneGap.
Netzwerkkommunikation und Netzwerkprotokolle
SuperSocket: Ein leichtes und erweiterbares Socket-Entwicklungsframework basierend auf .NET.
SuperWebSocket: Implementiert das TML5-WebSocket-Framework über .NET.
XProxy: Eine grundlegende Proxy-Assembly, die Plug-Ins mit integriertem NAT, Verschlüsselung und Entschlüsselung sowie umgekehrten, direkten und indirekten Proxys unterstützt.
Grafik- und Bildverarbeitungs-Framework
Paint.NET: Ein kleines, flexibles und leistungsstarkes Open-Source-Projekt zur Grafikverarbeitung auf Basis von .NET.
Imagemagick.NET: Verwenden Sie C#, um die Open-Source-Bildverarbeitungskomponente Imagemagick zu kapseln.
Skimpt: Bildschirmaufnahmesoftware basierend auf .NET Open Source.
ImageGlue.NET: Kommerzielle Bildverarbeitungskomponente, die viele Formate unterstützt.
Sprite and Image Optimization Framework: Microsoft CSS-Sprite, kombiniert mehrere Bilder zu einem großen Bild und CSS-Stilen.
Desktop-Anwendungs-Framework
DevExpress: Eine weltbekannte UI-Steuerungsbibliothek für Desktop-Anwendungen.
Prism: Das von Microsoft für WPF und Silverlight entwickelte MVVM-Framework nutzt die Idee der funktionalen Modularisierung, um komplexe Geschäftsfunktionen und UI-Kopplung zu trennen.
WPFToolkit und Fluent Ribbon Control Suite: Entwickeln Sie Ribbon-Menüs im Office-Stil.
Prüfung und Leistungsbewertung
Faker.Net: Ein Framework, das die Generierung großer Testdatenmengen erleichtert.
Nunit: Ein leichtes Unit-Test-Framework.
Moq: Ein sehr beliebtes Mock-Framework, unterstützt LINQ, ist flexibel und leistungsstark.
xUnit: Ein besseres Unit-Testing-Framework als NUnit, eine aktualisierte und verbesserte Version des Nunit-Frameworks.
MiniProfiler und Glimpse: Zwei auf MVC basierende Frameworks zur Überwachung von Leistungsereignissen.
Unterstützung für Transaktionen und verteilte Transaktionen
KtmIntegration: Eine transaktionale Open-Source-Klasse, die das NTFS-Dateisystem unterstützt.
NET Transactional File Manager: Transaktionsunterstützung für Dateisystemvorgänge hinzufügen (Kopieren, Verschieben und Löschen).
Wortsegmentierung, Volltextsuche und Suchmaschine
Lucene.net: Eine beliebte Hochleistungs-Volltextindizierungsbibliothek, mit der leistungsstarke Suchfunktionen für alle Arten von Informationen bereitgestellt werden können.
Lucene.Net.Analysis.PanGu: Unterstützt die neueste Version der Pangu-Erweiterungsbibliothek für chinesische Wortsegmentierung von Lucene.Net.
Organisation der Datenvalidierungskomponente
FluentValidation für .NET: Fluent-Schnittstellenüberprüfungskomponente basierend auf der LINQ-Ausdrucksmethodenkette.
Microsoft.Practices.EnterpriseLibrary.Validation.dll: Microsoft Enterprise Library-Validierungsblock.
CuttingEdge.Conditions: Eine Vertragsprogrammierungskomponente basierend auf der Fluent-Schnittstellenmethode.
DotNetOpenAuth: Bietet der Website die Möglichkeit, Identitätsauthentifizierung wie OpenID, OAuth, InfoCard usw. zu unterstützen.
Open-Source-Diagrammstatistiksteuerung:
Visifire: Eine Reihe sehr effektiver WPF-Diagrammsteuerelemente, die 3D-Zeichnungen, Kurven, Polylinien, Sektoren, Ringe und Trapeze unterstützen.
SparrowToolkit: Eine Reihe von WPF-Diagrammsteuerelementen, die das Zeichnen dynamischer Kurven unterstützen und Oszilloskope, CPU-Auslastung und Wellenformen zeichnen können.
DynamicDataDisplay: Microsofts Open-Source-WPF-dynamische Kurvendiagramme, Liniendiagramme, Blasendiagramme und Heatmaps.
Die Kategorie Nachrichtenwarteschlange kann erweitert werden, z. B.: Kafka ist ein verteiltes, auf Veröffentlichungen/Abonnements basierendes Nachrichtensystem. Die wichtigsten Designziele sind wie folgt:
Es bietet Nachrichtenpersistenzfähigkeit mit einer Zeitkomplexität von O(1) und gewährleistet so eine konstante Zugriffsleistung mit Zeitkomplexität, selbst für Daten über der TB-Ebene.
Hoher Durchsatz. Selbst auf sehr günstigen kommerziellen Maschinen kann eine einzelne Maschine die Übertragung von mehr als 100.000 Nachrichten pro Sekunde unterstützen.
Unterstützt die Nachrichtenpartitionierung und den verteilten Verbrauch zwischen Kafka-Servern und gewährleistet gleichzeitig die sequentielle Übertragung von Nachrichten innerhalb jeder Partition.
Unterstützt sowohl die Offline-Datenverarbeitung als auch die Echtzeit-Datenverarbeitung.
Scale-Out: Unterstützt die horizontale Online-Erweiterung.
RabbitMQ
RabbitMQ ist eine in Erlang geschriebene Open-Source-Nachrichtenwarteschlange. Sie unterstützt viele Protokolle: AMQP, XMPP, SMTP, STOMP. Aus diesem Grund ist sie sehr schwer und besser für die Entwicklung auf Unternehmensebene geeignet. Gleichzeitig wird die Broker-Architektur implementiert, was bedeutet, dass Nachrichten in der zentralen Warteschlange eingereiht werden, bevor sie an den Client gesendet werden. Es bietet gute Unterstützung für Routing, Lastausgleich oder Datenpersistenz.
Redis
Redis ist eine NoSQL-Datenbank, die auf Schlüssel-Wert-Paaren basiert und aktiv entwickelt und gepflegt wird. Obwohl es sich um ein Schlüsselwert-Datenbankspeichersystem handelt, unterstützt es die MQ-Funktion selbst und kann daher als leichter Warteschlangendienst verwendet werden. Für die Enqueue- und Dequeue-Vorgänge von RabbitMQ und Redis wird jeder Vorgang 1 Million Mal ausgeführt und die Ausführungszeit wird alle 100.000 Mal aufgezeichnet. Die Testdaten sind in vier verschiedene Größen unterteilt: 128 Byte, 512 Byte, 1 KB und 10 KB. Experimente zeigen, dass die Leistung von Redis beim Eintritt in die Warteschlange höher ist als die von RabbitMQ, wenn die Datengröße relativ klein ist. Wenn die Datengröße jedoch 10 KB überschreitet, ist Redis beim Verlassen der Warteschlange unerträglich langsam und Redis zeigt trotzdem eine sehr gute Leistung Die Datengröße und die Dequeue-Leistung von RabbitMQ sind viel geringer als die von Redis.
ZeroMQ
ZeroMQ gilt als das schnellste Nachrichtenwarteschlangensystem, insbesondere für Szenarien mit hohem Durchsatzbedarf. ZeroMQ kann erweiterte/komplexe Warteschlangen implementieren, in denen RabbitMQ nicht gut ist, aber Entwickler müssen selbst mehrere technische Frameworks kombinieren. Die technische Komplexität ist eine Herausforderung für die erfolgreiche Anwendung von MQ. ZeroMQ verfügt über ein einzigartiges Nicht-Middleware-Modell. Sie müssen keinen Nachrichtenserver oder Middleware installieren und ausführen, da Ihre Anwendung die Rolle dieses Servers übernimmt. Sie müssen lediglich auf die ZeroMQ-Bibliothek verweisen, die mit NuGet installiert werden kann, und können dann problemlos Nachrichten zwischen Anwendungen senden. Allerdings stellt ZeroMQ nur nicht persistente Warteschlangen bereit, was bedeutet, dass bei einem Ausfall Daten verloren gehen. Unter anderem verwendeten die Storm-Versionen von Twitter vor 0.9.0 standardmäßig ZeroMQ als Datenstromübertragung (Storm unterstützt ab Version 0.9 sowohl ZeroMQ als auch Netty als Übertragungsmodule).
ActiveMQ
ActiveMQ ist ein Unterprojekt unter Apache. Ähnlich wie ZeroMQ kann es Warteschlangen mit Broker- und Peer-to-Peer-Technologie implementieren. Gleichzeitig kann es, ähnlich wie RabbitMQ, komplexe Anwendungsszenarien mit wenig Code effizient implementieren.
Kafka/Jafka
Kafka ist ein Unterprojekt unter Apache. Es handelt sich um ein leistungsstarkes, sprachübergreifendes Publish/Subscribe-Nachrichtenwarteschlangensystem, das auf Kafka basiert, einer aktualisierten Version von Kafka. Es verfügt über die folgenden Eigenschaften: schnelle Persistenz, die Nachrichten mit O(1)-System-Overhead beibehalten kann, was eine Durchsatzrate von 10 W/s auf einem normalen Server, Broker, Producer und Consumer erreichen kann; Alle unterstützen nativ und automatisch die Lastverteilung und unterstützen das parallele Laden von Hadoop-Daten. Dies ist eine praktikable Lösung für Protokolldaten und Offline-Analysesysteme wie Hadoop, die Einschränkungen bei der Echtzeitverarbeitung erfordern. Kafka vereinheitlicht die Online- und Offline-Nachrichtenverarbeitung durch den parallelen Lademechanismus von Hadoop. Apache Kafka ist im Vergleich zu ActiveMQ ein sehr leichtes Messaging-System. Neben einer sehr guten Leistung ist es auch ein gut funktionierendes verteiltes System.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung häufig verwendeter Frameworks basierend auf der .NET-Plattform. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Wenn Sie ein .NET-Entwickler sind, müssen Sie sich der Bedeutung der Optimierung von Funktionalität und Leistung bei der Bereitstellung hochwertiger Software bewusst sein. Durch den fachgerechten Einsatz der bereitgestellten Ressourcen und die Verkürzung der Ladezeiten der Website schaffen Sie nicht nur ein angenehmes Erlebnis für Ihre Nutzer, sondern senken auch die Infrastrukturkosten.

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

C#.NET -Interviewfragen und Antworten umfassen Grundkenntnisse, Kernkonzepte und erweiterte Nutzung. 1) Grundkenntnisse: C# ist eine von Microsoft entwickelte objektorientierte Sprache und wird hauptsächlich im .NET-Framework verwendet. 2) Kernkonzepte: Delegation und Ereignisse ermöglichen dynamische Bindungsmethoden, und LINQ bietet leistungsstarke Abfragefunktionen. 3) Erweiterte Verwendung: Asynchrone Programmierung verbessert die Reaktionsfähigkeit und Expressionsbäume werden für die dynamische Codekonstruktion verwendet.

Das Interview mit C# Senior Developer erfordert das Mastering von Kernwissen wie asynchrones Programmieren, LINQ und interne Arbeitsprinzipien von .NET -Frameworks. 1. Asynchrones Programmieren vereinfacht die Operationen durch Async und wartet auf die Verbesserung der Anwendungsreaktionsfähigkeit. 2.LinQ betreibt Daten im SQL -Stil und achtet auf die Leistung. 3. Die CLR des Net -Frameworks verwaltet den Speicher, und die Müllsammlung muss mit Vorsicht verwendet werden.

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.
