Seit ich gelernt habe. .NET, ein eleganter Programmierstil, extrem einfache Skalierbarkeit, leistungsstarke Entwicklungstools und eine sehr kurze Lernkurve haben mein großes Interesse an dieser Plattform geweckt, und ich habe auch einige Open-Source-Komponenten in meiner Arbeit und meinem Studium gesammelt. Verteiltes Caching-Framework: Microsoft Velocity: Microsofts eigenes Framework für verteilte Cache-Service. Memcahed: Ein verteiltes Caching-System, das derzeit von vielen Websites genutzt wird, um die Zugriffsgeschwindigkeit zu verbessern. Redis: ist eine leistungsstarke KV-Datenbank. Sein Erscheinen gleicht Memcacheds Schwächen in einigen Aspekten weitgehend aus. EnyimMemcached: Zugriff auf Memcacheds besten .NET-Client mit einem guten verteilten Equalizing-Algorithmus. Quelloffen. .NET-Systemempfehlung: OXITE: Microsoft ASP.NET MVC-Fallpräsentations-Framework. PetShop: Microsoft ASP.NET Zoofachgeschäft. Orchard: Ein ausländisches MVC-Open-Source-Blogsystem. SSCLI: Microsofts Open-Source-Code in der NET Framework 2.0-Ära. DasBlog: Ein auf ASP.NET basierendes Blogging-System im Ausland. BlogEngine.NET: Ein kostenloses und Open-Source-Blogging-System im Ausland. Dotnetnuke.NET: Ein sehr guter Satz von ASP.NET-basierten Open-Source-Portalprogrammen. Discuz.NET: Inländisches Open-Source-Foren-Community-System. nopCommerce und Aspxcommerce: Eine Reihe hochwertiger Open-Source-B2C-Website-Systeme im Ausland. JumboTCMS und DTCMS: Zwei Open-Source-Website-Managementsysteme in China: Logging von Ausnahmen: Log4Net.dll: Ein leichtgewichtiges, kostenloses und Open-Source-Logging-Framework für .NET. Enterprise Library Log Anwendung Schwarz: Microsoft Enterprise Library Logging. Elmah: Implementiert das beliebteste ASP.NET Application Exception Logging Framework. NLog: ist eine einfache und flexible Logging-Bibliothek mit höherer Leistung als Log4Net und geringem Aufwand in der Nutzung und Wartung. Über NoSQL-Datenbanken: Mongodb: Verteilte Dateispeicherdatenbank. Membase: Ein neues Schwergewichtsmitglied der Familie. Automatisiertes Task-Scheduling-Framework Quartz.NET: Open-Source-Jobplanung und automatisiertes Aufgaben-Framework. Topshelf: Ein weiteres Open-Source-Framework zur Erstellung von Windows-Diensten IOC-Container-Framework für Abhängigkeitsinjektion: Unity: Ein IOC-Abhängigkeitsinjektions-Framework, entwickelt vom Patterns & Practicest-Team von Microsoft, das AOP-übergreifende Anliegen unterstützt. MEF (Managed Extensibility Framework): ist ein Framework zur Erweiterung von .NET-Anwendungen und zur Ermöglichung der Entwicklung von Plug-in-Systemen. Spring.NET: Abhängigkeitsinjektion, aspektorientierte Programmierung (AOP), Datenzugriffsabstraktion und ASP.NET-Integration. Autofac: Das beliebteste Dependency Injection- und IOC-Framework, leichtgewichtig und leistungsstark, praktisch nicht störend für den Projektcode. PostSharp: Setzt statische AOP-Querschnitt von Problemen um, ist einfach zu bedienen, leistungsstark und erfordert keine Änderungen an der Zielabfangmethode. Ninject: Ein IOC-Framework für Abhängigkeitsinjektion, das auf .NET Lightweight und Open Source basiert Mehrere häufig verwendete ORM-Frameworks: EF (ADO.NET Entity Framework): Ein von Microsoft entwickeltes ORM-Framework auf Basis von ADO.NET. Nhibernate: Ein leichtes ORM-Framework für .NET-Umgebungen. SqlMapper.cs: Eine generische C#-Datenbankzugriffsklasse für kleine Projekte. AutoMapper: Ein beliebtes Objektmapping-Framework, das viel Hardcoding reduziert, kompakt und flexibel ist und akzeptable Leistung bietet. SubSonic: Ein ausgezeichnetes Open-Source-ORM-Mapping-Framework, das einen Codegenerator bereitstellt, der Ihren Anforderungen entspricht. FluentData: Ein Open-Source-basiertes, auf Fluent APIs basierendes Chained-Query-ORM-Lightweight-Framework. Dapper: Leichtgewichtig, leistungsstark, basierend auf EMIT-generiertem ORM-Framework. EmitMapper: Ein Hochleistungs-ORM-Framework, das IL-Code dynamisch über EMIT zur Laufzeit generiert, anstatt einen Reflexionsmechanismus zu verwenden. Format- und Datentypumwandlung Newtonsoft.Json: Die derzeit beliebteste JSON-Serialisierungsbibliothek in der .NET-Entwicklung und bildet die Grundlage für die neue Version der WebApi-Bibliothek. System.JSON.dll: Microsofts eigene JSON-Serialisierungskomponente (muss separat heruntergeladen werden) DataContractJsonSerializer und DataContractXmlSerializer: Serializer, die von Microsoft in WCF verwendet werden. Javascrip{filter}tSerializer: Microsofts Standard-JSON-Formatter für WEB-Entwickler. iTextSharp, PDFsharp und PDF.NET: Durch. .NET, um PDF-Dokumente zu verarbeiten und zu generieren. SharpZipLib.dll: Kostenlose und quelloffene ZIP- und GZIP-Dateidekompressionskomponenten. Math.NET: Starke mathematische Operationen, Analysis, Gleichungslösung und wissenschaftliche Operationen. DocX: Keine Word-Software installieren oder Word-Dateien über C# ausführen. SharpSerializer: Open-Source-XML sowie Binär-, JSON-, Kompressions- und Optimierungsframework. Reflektierende und dynamische Sprache Clay-Dynamik: Das Open-Source-dynamische Framework ermöglicht es, Objekte in Form von javascrip{filtering}t zu erstellen. ExposedObject: Greifen Sie auf private Mitglieder außerhalb der Klasse dynamisch zu. PrivateObject: Eine Klasse im Microsoft-Unit-Testing-Framework, die praktisch ist, um private Mitglieder der Klasse extern aufzurufen. Plattformübergreifende und Laufzeitlösungen MONO.NET: Plattformübergreifend. .NET-Laufzeitumgebung, die einen .NET-plattformübergreifenden Betrieb ermöglicht. DotGnu Portable.NET: Plattformübergreifende Laufzeit ähnlich MONO.NET. Phalanger: Das Kompilieren von PHP zu .NET ermöglicht die Interoperabilität von PHP und .NET. VMDotNet: Die .NET-Laufzeit, die von China Mobile Feixin verwendet wird. Unity3D: Microsofts starke Unterstützung für C# und Javascrips plattformübergreifendes Spieleentwicklungsframework. Cassini, IIS Express und Cassinidev: Open-Source-ASP.NET Ausführungsumgebungen. Katana: Microsofts nicht-IIS-Boarding-ASP.NET und MVC basierend auf der OWIN-Spezifikation. IKVM.NET: Basierend auf. .NET ist eine virtuelle JAVA-Maschine, die es JAVA ermöglicht, auf .NET auszuführen. Entwicklung und Design von WEB Jumony Core: Eine HTML-Engine, die auf .NET basiert. Microsoft.mshtml.dll, Winista.HtmlParser.dll und HtmlAgilityPack.dll: Frameworks, die HTML-Dokumente parsen und verarbeiten. Javascrip{filtering}t.NET und Clearscrip{filtering}t (produziert von Microsoft): Basierend auf . .NET entwickelte die Javascrip{filter}t-Engine. NCrawler: Ein Open-Source-Webcrawler für seine HTML-Verarbeitungs-Engine htmlagilitypack. AntiXSS: Microsofts offizielle Open-Source-Bibliothek zur Verhinderung von siteübergreifenden XSS-Skript-Intrusion-Angriffen, die Inhalte über einen Whitelist-Mechanismus kodiert. YUICompressor.NET, Microsoft Ajax Minifier und Google Closure Compiler: JavaScrip und CSS Compressor. NancyFx: ist ein gutes, leichtes Open-Source-Open-Source-Framework für .NET WEB. Wenn Sie schnell eine einfache WEB-Anwendung erstellen möchten. AspNetPager: Ein bekanntes ASP.NET Paging-Control in China, das mehrere Paging-Methoden unterstützt. NOPI.dll: Plugin zum Export von Excel-Berichten (basierend auf Microsoft OpenXML-Implementierung) (nopi.css.dl, über CSS gestaltet) Enterprise Library: Microsofts Best-Practice-Komponente für die Entwicklung von Anwendungen auf Unternehmensebene. PowerCollections: Eine hochrangige Open-Source-Sammlung, geschrieben von einem ausländischen Talent. Mobiles Internet und Cloud-Computing PushSharp: Nachrichten über .NET auf verschiedene mobile Plattformen übertragen. Mono für Android: Verwenden. Android-Anwendung zur Entwicklung von .NET-Sprachen: MonoTouch: Entwicklung von IOS-Anwendungen in der .NET-Sprache. PhoneGap und AppCan: plattformübergreifende HTML5-basierte mobile Entwicklungsplattformen. Cordova: Ein Open-Source-Projekt nach PhoneGaps Beitrag zu Apache, es ist die Kern-Engine, die PhoneGap antreibt. Netzwerkkommunikation und Netzwerkprotokolle SuperSocket: Ein leichtes und skalierbares Socket-Entwicklungsframework auf Basis von .NET. SuperWebSocket: Implementiert das TML5 WebSocket-Framework über .NET. XProxy: Die grundlegende Agenten-Assembly, die Plugins unterstützt, mit integriertem NAT, Verschlüsselung und Entschlüsselung, Reverse, direkten und indirekten Proxys. Grafik- und Bildverarbeitungs-Frameworks Paint.NET: Basierend auf. .NET ist ein kompaktes, flexibles und leistungsfähiges Open-Source-Projekt zur Grafikverarbeitung. Imagemagick.NET: Kapselung der Open-Source-Bildverarbeitungskomponente Imagemagick in C#. Skimpt: Open-Source-Screenshot-Software basierend auf .NET. ImageGlue.NET: Kommerzielle Bildverarbeitungskomponenten haben eine große Liste unterstützter Formate. Sprite- und Bildoptimierungs-Framework: Microsoft CSS Wizard, Multi-Image kombiniert ein großes Bild und CSS-Stil. Desktop-Anwendungsrahmen DevExpress: Eine weltbekannte Bibliothek von UI-Steuerungen für Desktop-Anwendungen. Prism: Das von Microsoft entwickelte MVVM-Framework für WPF und Silverlight, das komplexe Geschäftsfunktionen und UI-Kopplung durch die Idee funktionaler Modularität trennt. WPFToolkit und Fluent Ribbon Control Suite: Erstellen Sie Office-ähnliche Ribbon-Menüs. Tests und Leistungsbewertung Faker.Net: Ein Framework zur Generierung großer Chargen von Testdaten. Nunit: Ein leichtes Unit-Test-Framework. Moq: Ein sehr beliebtes Mock-Framework, das LINQ unterstützt, flexibel und leistungsstark. xUnit: Ein besseres Unit-Test-Framework als NUnit, eine verbesserte Version des Nunit-Frameworks. MiniProfiler und Glimpse: Zwei MVC-basierte Frameworks zur Überwachung von Leistungsereignissen. Unterstützung von transaktionalen und verteilten Transaktionen KtmIntegration: Eine transaktionale Open-Source-Klasse, die das NTFS-Dateisystem unterstützt. NET Transactional File Manager: Transaktionale Unterstützung für Dateisystemoperationen (Kopieren, Verschieben und Löschen) hinzugefügt. Wortsegmentierung, Volltextsuche und Suchmaschine Lucene.net: Eine beliebte, leistungsstarke Volltext-Indexbibliothek, die leistungsstarke Suchfunktionen für alle Arten von Informationen bereitstellen kann. Lucene.Net.Analysis.PanGu: Unterstützt die neueste Version der Pangu Chinese Segmentation Extension Library Lucene.Net. Organisation der Datenvalidierungskomponenten FluentValidation für . NET: Flüssige Schnittstellenverifikationskomponente basierend auf der LINQ-Ausdrucksmethodenkette. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Der Microsoft Enterprise Library-Validierungsprogrammblock. CuttingEdge.Conditions: Eine Vertragsprogrammierkomponente, die auf der Fluent-Schnittstellenmethode basiert. DotNetOpenAuth: Ermöglicht es Websites, die Authentifizierung mit OpenID, OAuth, InfoCard und mehr zu unterstützen. Open-Source-Chartstatistik-Kontrollen: Visifire: Ein sehr guter Satz von WPF-Diagrammsteuerungen, die 3D-Zeichnungen, Kurven, Polylinien, Sektoren, Ringe und Trapezformen unterstützen. SparrowToolkit: Eine Reihe von WPF-Diagrammsteuerungen, die das Zeichnen dynamischer Kurven unterstützen, einschließlich Oszilloskope, CPU-Auslastung und Wellenformen. DynamicDataDisplay: Microsoft-Open-Source-WPF-Grafiken, Liniendiagramme, Blasendiagramme und Heatmaps.
Nachrichtenwarteschlangenkategorien können erweitert werden, wie Kafka, ein verteiltes, auf Veröffentlichung/Abonnement basierendes Nachrichtensystem. Die Hauptziele des Designs sind wie folgt: Die Nachrichtenpersistenz wird in Form der Zeitkomplexität O(1) bereitgestellt, und eine Zugriffsleistung mit konstanter Zeitkomplexität kann auch für Daten über Terabyte garantiert werden. Hoher Durchsatz. Selbst auf sehr günstigen kommerziellen Rechnern kann es die Übertragung von mehr als 100.000 Nachrichten pro Sekunde auf einer einzigen Maschine unterstützen. Es unterstützt Nachrichtenpartitionierung und verteilten Konsum zwischen Kafka-Servern und sorgt für die sequentielle Übertragung der Nachrichten in jeder Partition. Es unterstützt sowohl die Offline-Datenverarbeitung als auch die Echtzeit-Datenverarbeitung. Skalieren: Online-horizontale Expansion unterstützen. RabbitMQ RabbitMQ ist eine Open-Source-Nachrichtenwarteschlange, die in Erlang geschrieben ist und viele Protokolle unterstützt: AMQP, XMPP, SMTP, STOMP, weshalb es sehr schwergewichtig ist und besser für die Entwicklung auf Unternehmensebene geeignet ist. Gleichzeitig wird die Broker-Architektur implementiert, was bedeutet, dass Nachrichten beim Senden an den Client zuerst in der zentralen Warteschlange eingeladen werden. Es gibt gute Unterstützung für Routing, Lastverteilung 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 Key-Value-Datenbankspeichersystem handelt, unterstützt es die MQ-Funktionalität selbst, sodass es als leichtgewichtiger Warteschlangendienst genutzt werden kann. Für die Onboarding- und Out-Queue-Operationen von RabbitMQ und Redis jeweils 1 Million Mal, und die Ausführungszeit wird alle 100.000 Mal aufgezeichnet. Die Testdaten sind in vier verschiedene Größen unterteilt: 128 Bytes, 512 Bytes, 1K und 10K. Experimentelle Tabelle: Beim Beitritt zum Team ist die Leistung von Redis höher als die von RabbitMQ, wenn der Datenvergleich klein ist, und wenn die Datengröße 10.000 übersteigt, ist Redis unerträglich langsam. Beim Ausscheiden aus dem Team zeigte Redis eine sehr gute Leistung, unabhängig von der Datengröße, während die Leistung von RabbitMQ deutlich niedriger war als die von Redis. ZeroMQ ZeroMQ behauptet, das schnellste Nachrichten-Warteschlangensystem zu sein, insbesondere für Szenarien mit hoher Durchsatznachfrage. ZeroMQ kann fortgeschrittene/komplexe Warteschlangen implementieren, in denen RabbitMQ nicht gut ist, aber Entwickler müssen mehrere technische Frameworks selbst kombinieren, und die technische Komplexität stellt eine Herausforderung für die erfolgreiche Anwendung dieses MQ dar. ZeroMQ hat einen einzigartigen Nicht-Middleware-Modus, in dem du keinen Nachrichtenserver oder Middleware installieren und betreiben musst, weil deine Anwendung diese Serverrolle übernimmt. Alles, was du tun musst, ist, auf die ZeroMQ-Bibliothek zu verweisen, die mit NuGet installiert werden kann, und du kannst problemlos Nachrichten zwischen Anwendungen senden. ZeroMQ stellt jedoch nur nicht-persistente Warteschlangen bereit, was bedeutet, dass bei einem Ausfall Daten verloren gehen. Darunter verwendet Twitters Storm-Version vor 0.9.0 standardmäßig ZeroMQ als Übertragung von Datenströmen (Storm unterstützt sowohl ZeroMQ als auch Netty als Übertragungsmodul ab Version 0.9). ActiveMQ ActiveMQ ist ein Unterprojekt unter Apache. Ähnlich wie ZeroMQ ermöglicht es Warteschlangen mit Agent- und Peer-to-Peer-Technologie. Gleichzeitig kann es ähnlich wie RabbitMQ fortschrittliche Anwendungsszenarien effizient mit einer kleinen Codemenge implementieren. Kafka/Jafka Kafka ist ein Teilprojekt von Apache, einem leistungsstarken verteilten Publish/Subscribe-Nachrichtenwarteschlangensystem über verschiedene Sprachen hinweg, und Jafka wird auf Kafka inkubiert, das eine verbesserte Version von Kafka ist. Sie besitzt folgende Eigenschaften: schnelle Persistenz, die Nachrichten unter dem Systemoverhead von O(1) erhalten kann; Hoher Durchsatz, der auf einem gewöhnlichen Server eine Durchsatzrate von 10W/s erreichen kann; Vollständig verteilte Systeme, Broker, Producer und Consumer unterstützen alle nativ verteilte Lastverteilung und realisieren automatisch; Unterstützt paralleles Laden von Hadoop-Daten, was eine praktikable Lösung für Logdaten und Offline-Analysesysteme wie Hadoop ist, jedoch mit den Einschränkungen der Echtzeitverarbeitung. Kafka vereint Online- und Offline-Nachrichtenverarbeitung durch Hadoops paralleles Ladesystem. Apache Kafka ist im Vergleich zu ActiveMQ ein sehr leichtes Messaging-System und neben sehr guter Leistung auch ein verteiltes System, das gut funktioniert. |