Commonly used framework based on .NET platform

The article is from http://www.cnblogs.com/hgmyz/p/5313983.html

Since learning .NET, the elegant programming style, extremely simple scalability, powerful enough development tools, and a very small learning curve have made me interested in this platform. I have also accumulated some open source in my work and study. The components that are currently thought of are organized here first. If you think about it again, continue to supplement this log. Over time, you can form your own component experience library.

Distributed cache framework:

Microsoft Velocity : Microsoft's own distributed cache service framework.

Memcahed : A distributed high-speed caching system, currently used by many websites to improve website access speed.

Redis : is a high-performance KV database. Its appearance greatly compensated for the shortcomings of Memcached in some aspects.

EnyimMemcached : Access to Memcached's best .NET client, integrates a good distributed balance algorithm.

Open source .NET system recommendation:

OXITE : Microsoft ASP.NET MVC case demonstration framework.

PetShop : Microsoft ASP.NET pet store.

Orchard : A foreign MVC open source blog system.

SSCLI : Microsoft's open source code in the era of NET Framework 2.0.

DasBlog : A foreign blog system based on ASP.NET.

BlogEngine.NET : A free and open source blog system from abroad.

Dotnetnuke.NET : A set of excellent open source portal programs based on ASP.NET.

Discuz.NET : Domestic open source forum community system.

nopCommerce and Aspxcommerce : A set of high-quality open source B2C website systems abroad.

JumboTCMS and DTCMS : Two domestic open source website management systems:

Log record exception handling:

Log4Net.dll : Lightweight free open source .NET logging framework.

Enterprise Library Log Application Black : Microsoft Enterprise Library Logging.

Elmah : Implement the most popular ASP.NET application exception logging framework.

NLog : It is a simple and flexible logging library with higher performance than Log4Net and lower difficulty in use and maintenance.

About NoSQL database:

Mongodb : Distributed file storage database.

Membase : A new heavyweight member of the family.

Automatic task scheduling framework

Quartz.NET : Open source job scheduling and automatic task framework.

Topshelf : Another open source framework for creating Windows services

Dependency injection IOC container framework:

Unity : The IOC dependency injection framework developed by the Microsoft patterns&practicest team supports AOP crosscutting concerns.

MEF (Managed Extensibility Framework): is a framework used to extend .NET applications and can 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, almost non-invasive to the project code.

PostSharp : Achieve static AOP crosscutting concerns, simple to use, powerful, without any changes to the method of target interception.

Ninject : Lightweight open source dependency injection IOC framework based on .NET

Several commonly used ORM frameworks:

EF (ADO.NET Entity Framework): ORM framework developed by Microsoft based on ADO.NET.

Nhibernate : Lightweight ORM framework for .NET environment.

SqlMapper.cs : General C# database access class for small projects.

AutoMapper : A popular object mapping framework that can reduce a lot of hard coding, is small and flexible, and has acceptable performance.

SubSonic : An excellent open source ORM mapping framework, while providing a code generator that meets your needs.

FluentData : An open source chain query ORM lightweight framework based on Fluent API.

Dapper : Lightweight and high-performance ORM framework based on EMIT.

EmitMapper : A high-performance ORM framework that dynamically generates IL code through EMIT during runtime, instead of using a reflection mechanism.

Format and data type conversion

Newtonsoft.Json : Currently the most popular JSON serialization library in .NET development, which provides the basis for the new version of the WebApi library.

System.JSON.dll : JSON serialization component developed by Microsoft (need to download separately)

DataContractJsonSerializer and DataContractXmlSerializer : Serializers used by Microsoft in WCF.

JavaScriptSerializer : The JSON formatter provided by Microsoft for WEB developers by default.

iTextSharp, PDFsharp and PDF.NET : Components for processing and generating PDF documents through .NET.

SharpZipLib.dll : Free and open source ZIP and GZIP file decompression component.

Math.NET : Powerful mathematical operations, calculus, equation solving and scientific operations.

DocX : No need to install word software, operate word files through C#.

SharpSerializer : Open source XML, binary, JSON, compression and optimization framework.

Reflection and dynamic language

Clay dynamic : The open source dynamic language dynamic framework allows you to create objects in a javascript-like manner.

ExposedObject : Access private members in a dynamic way outside the class through a dynamic language.

PrivateObject : A class in the Microsoft unit testing framework that conveniently calls internal private members of the class from outside.

Cross-platform and runtime solutions

MONO.NET : Cross-platform .NET runtime environment makes it possible to run .NET across platforms.

DotGnu Portable.NET : A cross-platform runtime similar to MONO.NET.

Phalanger : Compile PHP into .NET, which can realize interoperability between PHP and .NET.

VMDotNet : The .NET runtime used by China Mobile Fetion.

Unity3D : Opportunity C# and JavaScript cross-platform game development framework strongly supported by Microsoft.

Cassini, IIS Express and Cassinidev : open source ASP.NET execution environment.

Katana : Microsoft's non-IIS hosting ASP.NET and MVC based on the OWIN specification.

IKVM.NET : JAVA virtual machine based on .NET, allowing JAVA to run on .NET.

WEB development and design

Jumony Core : HTML engine developed based on .NET.

Microsoft.mshtml.dll, Winista.HtmlParser.dll and HtmlAgilityPack.dll : framework for parsing and processing HTML documents.

JavaScript.NET and ClearScript (produced by Microsoft) : JavaScript engine developed based on .NET.

NCrawler : Open source web crawler software for its HTML processing engine htmlagilitypack.

AntiXSS : Microsoft's official open source library for preventing cross-site XSS script intrusion attacks. It encodes content through a whitelist mechanism.

YUICompressor.NET, Microsoft Ajax Minifier and Google Closure Compiler : JavaScript and CSS compressors.

NancyFx : It is a good 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 : plug-in for exporting Excel reports (based on Microsoft OpenXml implementation) (nopi.css.dl sets the style through css)

Enterprise Library : Microsoft's best practice component for enterprise-level application development.

PowerCollections : A high-level open source collection written by a great foreigner.

Mobile Internet and Cloud Computing

PushSharp : Push messages to various mobile platforms via .NET.

mono for android : Use .NET language to develop Android applications:

MonoTouch : Use .NET language to develop IOS applications.

PhoneGap and AppCan : Cross-platform mobile development platform based on HTML5.

Cordova : PhoneGap is an open source project after contributing to Apache. It is the core engine that drives PhoneGap.

Network communication and network protocol

SuperSocket : A lightweight and extensible Socket development framework based on .NET.

SuperWebSocket : Realize the TML5 WebSocket framework through .NET.

XProxy : A basic proxy assembly that supports plug-ins, with built-in NAT, encryption and decryption, reverse, direct and indirect proxy.

Graphics and image processing framework

Paint.NET : A small, flexible and powerful graphics processing open source project based on .NET.

Imagemagick.NET : Use C# to encapsulate the open source image processing component Imagemagick.

Skimpt : Screen capture software based on .NET open source.

ImageGlue.NET : A commercial image processing component with a lot of supported formats.

Sprite and Image Optimization Framework : Microsoft CSS sprite, multiple images into a large image and CSS styles.

Desktop application framework

DevExpress : A world-renowned desktop application UI control library.

Prism : The MVVM framework developed by Microsoft for WPF and Silverlight uses the idea of ​​functional modularity to separate complex business functions and UI coupling.

WPFToolkit and Fluent Ribbon Control Suite : Develop a Ribbon menu similar to Office style.

Testing and performance evaluation

Faker.Net : A framework to facilitate the generation of large-scale 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, an upgraded version of the Nunit framework.

MiniProfiler and Glimpse : Two performance event monitoring frameworks based on MVC.

Transaction and distributed transaction support

KtmIntegration : A transaction open source class that supports the NTFS file system.

NET Transactional File Manager : Add transaction support to file system operations (copy, move, and delete).

Word segmentation, full-text search and search engine

Lucene.net : A popular high-performance full-text index library that can be used to provide powerful search functions for all kinds of information.

Lucene.Net.Analysis.PanGu : Supports the latest version of Lucene.Net's Pangu Chinese word segmentation extension library.

Data verification component collation

FluentValidation for .NET : Validation component based on Fluent interface of LINQ expression method chain.

Microsoft.Practices.EnterpriseLibrary.Validation.dll : Microsoft Enterprise Library validation program block.

CuttingEdge.Conditions : Contract programming component based on the Fluent interface method to practice the interface.

DotNetOpenAuth : Let the website have the ability to support OpenID, OAuth, InfoCard and other identity verification.

Open source chart statistics control:

Visifire : A set of very good WPF chart controls, support 3D drawing, curve, polyline, sector, ring and trapezoid.
SparrowToolkit : A set of WPF chart control sets, supports drawing dynamic curves, and can draw oscilloscope, CPU usage and waveforms.
DynamicDataDisplay : Microsoft's open source WPF dynamic graph, line graph, bubble graph and heat map.

 

The message queue category can be expanded . For example, Kafka is a distributed, publish/subscribe messaging system. The main design goals are as follows:
provide message persistence in a way of O(1) time complexity, and ensure constant time complexity access performance even for data above TB level.
High throughput rate. Even on very cheap commercial machines, a single machine can 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 in each Partition.
At the same time, it supports offline data processing and real-time data processing.
Scale out: Support online horizontal expansion.
RabbitMQ
RabbitMQ is an open source message queue written in Erlang. It supports many protocols: AMQP, XMPP, SMTP, STOMP. Because of this, it is very heavyweight and more suitable for enterprise-level development. At the same time, the Broker architecture is implemented, which means that the message is queued in the central queue when it is sent to the client. Good support for routing, load balancing or data persistence.
Redis
Redis is a NoSQL database based on Key-Value pairs, which is actively developed and maintained. Although it is a Key-Value database storage system, it supports MQ function, so it can be used as a lightweight queue service. The enqueue and dequeue operations of RabbitMQ and Redis are executed 1 million times each, and the execution time is recorded every 100,000 times. The test data is divided into four different sizes of 128Bytes, 512Bytes, 1K and 10K. Experiments show that when entering the team, the performance of Redis is higher than RabbitMQ when the data is relatively small, and if the data size exceeds 10K, Redis is unbearably slow; when leaving the team, regardless of the size of the data, Redis shows very good performance , And RabbitMQ's dequeue performance is much lower than Redis.
ZeroMQ
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 by themselves. Technical complexity is a challenge to the successful application of this MQ. ZeroMQ has a unique non-middleware model, you don't need to install and run a message server or middleware, because your application will play the role of this server. You only need to simply reference the ZeroMQ library, which can be installed using NuGet, and then you can happily send messages between applications. But ZeroMQ only provides non-persistent queues, which means that if there is a downtime, data will be lost. Among them, Twitter's Storm version before 0.9.0 uses ZeroMQ as the data stream transmission by default (Storm supports both ZeroMQ and Netty as transmission modules since version 0.9).
ActiveMQ
ActiveMQ is a sub-project under Apache. Similar to ZeroMQ, it can implement queues with agents and peer-to-peer technologies. At the same time, similar to RabbitMQ, it can efficiently implement advanced application scenarios with a small amount of code.
Kafka/Jafka
Kafka is a sub-project of Apache, a high-performance cross-language distributed publish/subscribe message queue system, and Jafka was incubated on top of Kafka, which is an upgraded version of Kafka. It has the following characteristics: fast persistence, which can carry out message persistence under O(1) system overhead; high throughput, which can reach a throughput rate of 10W/s on an ordinary server; a fully distributed system, Broker , Producer, and Consumer all natively automatically support distributed and automatically achieve load balancing; support Hadoop data parallel loading. For log data and offline analysis systems like Hadoop, but require real-time processing limitations, this is a feasible solution . Kafka unifies online and offline message processing through Hadoop's parallel loading mechanism. Compared with ActiveMQ, Apache Kafka is a very lightweight messaging system. In addition to very good performance, it is also a well-working distributed system.

Guess you like

Origin blog.csdn.net/hhhhhhenrik/article/details/82225650