Common framework for .NET platform
Since learning .NET, elegant programming style, extremely simple scalability, powerful development tools, and very small learning curve, I have a strong interest in this platform, and I have accumulated some open source in my work and study. The components, which are currently thought of, are sorted out here, you can form a library of your own component experience.
Microsoft Velocity : Microsoft’s own distributed cache service framework.
Memcahed : A distributed caching system that is currently used by many websites to increase the speed of website access.
Redis : is a high performance KV database. Its appearance greatly compensated for some of the shortcomings of Memcached.
EnyimMemcached : Access Memcached’s best .NET client and integrate nice distributed equalization algorithms.
OXITE : Microsoft ASP.NET MVC Case Demonstration Framework.
PetShop : Microsoft ASP.NET Pet Store.
Orchard : A foreign MVC open source blogging system.
SSCLI : Microsoft’s open source code in the NET Framework 2.0 era.
DasBlog : A foreign ASP.NET-based blogging system.
BlogEngine.NET : A free and open source blogging system abroad.
Dotnetnuke.NET : A very good set of open source portal programs based on ASP.NET.
Discuz.NET : A domestic open source forum community system.
nopCommerce and Aspxcommerce : A set of high quality open source B2C website systems abroad.
JumboTCMS and DTCMS : Two open source web site management systems in China:
Log4Net.dll : Lightweight free open source .NET logging framework.
Enterprise Library Log Application Black : Microsoft Enterprise Library Logging.
Elmah : Implements the most popular ASP.NET application exception logging framework.
NLog : is a simple and flexible logging class library. It has higher performance than Log4Net and is difficult to use and maintain.
Mongodb : Distributed file storage database.
Membase : A new heavyweight member of the family.
Quartz.NET : Open source job scheduling and automated task framework.
Topshelf : Another open source framework for creating Windows services
Unity : The IOC dependency injection framework developed by the Microsoft patterns&practicest team supports AOP crosscutting concerns.
MEF (Managed Extensibility Framework): A framework for extending .NET applications to develop plug-in systems.
Spring.NET : dependency injection, aspect-oriented programming (AOP), data access abstraction, and ASP.NET integration.
Autofac : The most popular dependency injection and IOC framework, lightweight and high performance, with virtually no intrusiveness into project code.
PostSharp : Achieve static AOP crosscutting concerns, simple to use, powerful, and no need to change the way the target is intercepted.
Ninject : A .NET lightweight open source dependency injection IOC framework
EF (ADO.NET Entity Framework): Microsoft’s ORM framework based on ADO.NET development.
Nhibernate : A lightweight ORM framework for the .NET environment.
SqlMapper.cs : A generic C# database access class for small projects.
AutoMapper : A popular object mapping framework that reduces a lot of hard coding, is small and flexible, and performs well.
SubSonic : An excellent open source ORM mapping framework that provides a code generator that meets your needs.
FluentData : Open source, chained query ORM lightweight framework based on Fluent API.
Dapper : Lightweight, high performance ORM framework based on EMIT generation.
EmitMapper : A high-performance ORM framework that dynamically generates IL code through EMIT at runtime, rather than using a reflection mechanism.
Newtonsoft.Json : The most popular JSON serialization library in .NET development, providing the foundation for the new version of the WebApi library.
System.JSON.dll : Microsoft’s own JSON serialization component (requires separate download)
DataContractJsonSerializer and DataContractXmlSerializer : Serializers used by Microsoft in WCF.
iTextSharp, PDFsharp, and PDF.NET : Components that process and generate PDF documents through .NET.
SharpZipLib.dll : Free open source ZIP and GZIP file decompression components.
Math.NET : Powerful mathematical operations, calculus, solution equations, and scientific operations.
DocX : You don’t need to install the word software to manipulate the word file through C#.
SharpSerializer : Open source XML and, binary, JSON, compression and optimization framework.
ExposedObject : Access private members outside of the class via dynamic language dynamic.
PrivateObject : A class in the Microsoft unit testing framework that facilitates external calls to private members of a class.
MONO.NET : A cross-platform .NET runtime environment that makes .NET cross-platform operation possible.
DotGnu Portable.NET : A cross-platform runtime similar to MONO.NET.
Phalanger : Compiling PHP into .NET for interoperability between PHP and .NET.
VMDotNet : The .NET runtime used by China Mobile Fetion.
Cassini, IIS Express, and Cassinidev : The open source ASP.NET execution environment.
Katana : Microsoft’s non-IIS hosting based on the OWIN specification, ASP.NET and MVC.
IKVM.NET : A .NET-based JAVA virtual machine that lets JAVA run on top of .NET.
Jumony Core : HTML engine based on .NET development.
Microsoft.mshtml.dll, Winista.HtmlParser.dll, and HtmlAgilityPack.dll : Parse the framework for working with HTML documents.
NCrawler : Open source web crawler for its HTML processing engine htmlagilitypack.
AntiXSS : Microsoft’s official open source library for preventing cross-site XSS script intrusion attacks, which encodes content through a whitelisting mechanism.
YUICompressor.NET, Microsoft Ajax Minifier, and Google Closure Compiler : JavaScrip and CSS Compressors.
NancyFx : A nice lightweight open source .NET WEB framework. If you want to quickly make a simple WEB application.
AspNetPager : The well-known ASP.NET paging control in China supports multiple paging methods.
NOPI.dll : plugin for exporting Excel reports (based on Microsoft OpenXml implementation) (nopi.css.dl styles via css)
Enterprise Library : Microsoft’s best practice components for enterprise application development.
PowerCollections : A high-level open source collection written by a foreign cow.
PushSharp : Push messages to various mobile platforms via .NET.
Mono for android : Develop Android apps in .NET language:
MonoTouch : Develop IOS applications in .NET.
PhoneGap and AppCan : A cross-platform HTML5-based mobile development platform.
Cordova : The open source project that PhoneGap contributed to Apache is the core engine that drives PhoneGap.
SuperSocket : An extensible Socket development framework based on .NET lightweight.
SuperWebSocket : Implement the TML5 WebSocket framework via .NET.
XProxy : The base agent set that supports plugins, built-in NAT, encryption, decryption, reverse, direct and indirect proxies.
Paint.NET : Based on .NET’s small and flexible graphics processing open source project.
Imagemagick.NET : Encapsulation of the open source image processing component Imagemagick with C#.
Skimpt : Based on .NET open source screenshot software.
ImageGlue.NET : A commercial image processing component that supports a whole bunch of formats.
Sprite and Image Optimization Framework : Microsoft CSS sprites, multi-picture synthesis of a large picture and CSS style.
DevExpress : A world-renowned library of UI applications for desktop applications.
Prism : Microsoft’s MVVM framework for WPF and Silverlight, separated by complex functional functions and UI coupling through functional modularity.
WPFToolkit and Fluent Ribbon Control Suite : Develop a Ribbon menu similar to the Office style.
Faker.Net : A framework for generating large batches of test data.
Nunit : A lightweight unit testing framework.
Moq : A very popular Mock framework that supports LINQ, flexible and high performance.
xUnit : A better unit testing framework than NUnit, upgrading the improved version of the Nunit framework.
MiniProfiler and Glimpse : Two performance event monitoring frameworks based on MVC.
KtmIntegration : A transactional open source class that supports the NTFS file system.
NET Transactional File Manager : Add transaction support for file system operations (copy, move, and delete).
Lucene.net : A popular high-performance full-text indexing library that can be used to provide powerful search capabilities for a wide range of information.
Lucene.Net.Analysis.PanGu : Supports the latest version of the Pangu Chinese word segmentation library of Lucene.Net.
FluentValidation for .NET : Fluent interface validation component based on the LINQ expression method chain.
Microsoft.Practices.EnterpriseLibrary.Validation.dll : Microsoft Enterprise Library Validation Block.
CuttingEdge.Conditions : A contract programming component that interfaces based on the Fluent interface method.
DotNetOpenAuth : Let websites have the ability to support OpenID, OAuth, InfoCard and other authentication.
Visifire : A very good set of WPF chart controls that support 3D drawing, curves, polylines, sectors, circles and trapezoids.
SparrowToolkit : A set of WPF charting controls that support drawing dynamic curves for drawing oscilloscopes, CPU usage, and waveforms.
DynamicDataDisplay : Microsoft open source WPF dynamic graph, line graph, bubble graph and heat map.
message queue categories can be extended , such as: Kafka is a distributed, publish/subscribe-based messaging system. The main design goals are as follows: The
message persistence capability is provided in a time complexity of O(1), and the access performance of constant time complexity can be guaranteed even for data above TB level.
High throughput. Even on very cheap commercial machines, it is possible to support the transmission of more than 100K messages per second.
Support message partitioning between Kafka Servers, and distributed consumption, while ensuring the sequential transmission of messages within each Partition.
Both offline data processing and real-time data processing are supported.
Scale out: Supports online horizontal expansion.
RabbitMQ is an open source message queue written in Erlang that supports many protocols: AMQP, XMPP, SMTP, STOMP, and because of this, it is very heavyweight and more suitable for enterprise development. At the same time, the Broker architecture is implemented, which means that messages are queued in the central queue when they are sent to the client. Good support for routing, load balancing or data persistence.
Redis is a NoSQL database based on Key-Value pairs, which is very active in development and maintenance.Although it is a Key-Value database storage system, it supports MQ functions itself, so it can be used as a lightweight queue service. For the entry and exit operations of RabbitMQ and Redis, each execution is 1 million times, and the execution time is recorded every 100,000 times. The test data is divided into four different sizes of data: 128Bytes, 512Bytes, 1K and 10K. Experiments show that when entering the team, when the data is relatively small, Redis performance is higher than RabbitMQ, and if the data size exceeds 10K, Redis is slow and unbearable; when dequeuing, regardless of the data size, Redis shows very good performance. The outbound performance of RabbitMQ is much lower than Redis.
ZeroMQ is known as the fastest message queuing system, especially for high throughput demand scenarios.ZeroMQ can implement advanced/complex queues that RabbitMQ is not good at, but developers need to combine multiple technical frameworks themselves. The technical complexity is a challenge to the success of this MQ application. ZeroMQ has a unique non-middleware model where you don’t need to install and run a messaging server or middleware because your application will play this server role. You just need to simply reference the ZeroMQ library, you can use NuGet to install, and then you can happily send messages between applications. However, ZeroMQ only provides a non-persistent queue, which means that if it is down, the data will be lost. Among them, Twitter’s Storm 0.9.0 version uses ZeroMQ as the data stream transmission by default (Storm supports ZeroMQ and Netty as transmission modules from version 0.9).
ActiveMQ is a subproject of Apache. Similar to ZeroMQ, it enables queues with agent and peer-to-peer technology. At the same time, similar to RabbitMQ, it can efficiently implement advanced application scenarios with a small amount of code.
Kafka is a sub-project under Apache, a high-performance cross-language distributed publish/subscribe message queuing system, and Jafka is incubated on Kafka, an upgraded version of Kafka. Has the following characteristics: fast persistence, message persistence under O(1) system overhead; high throughput, up to 10W/s throughput rate on a normal server; fully distributed system, Broker , Producer, Consumer all natively support distributed, automatic load balancing; support Hadoop data parallel loading, for log data and offline analysis systems like Hadoop, but require real-time processing restrictions, this is a feasible solution . Kafka unifies online and offline message processing through Hadoop’s parallel loading mechanism. Apache Kafka is a very lightweight messaging system compared to ActiveMQ. In addition to its very good performance, it is also a well-functioning distributed system.