Home  >  Article  >  Backend Development  >  Detailed introduction of commonly used frameworks based on .NET platform

Detailed introduction of commonly used frameworks based on .NET platform

黄舟
黄舟Original
2017-03-09 15:37:371496browse

Since learning .NET, the elegant programming style, extremely simple scalability, sufficiently powerful development tools, and minimal learning curve have made me very interested in this platform, and I have also accumulated some open source knowledge in my work and study. Components, I will sort them out here for now. If I think of them again, I will continue to add to this log. Over time, I will form my own component experience library.

Distributed cache framework:

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

Memcahed: A distributed caching system that is currently used by many websites to improve website access speed.

Redis: It is a high-performance KV database. Its emergence largely compensates for the shortcomings of Memcached in some aspects.

EnyimMemcached: Access the best .NET client of Memcached, integrating a good distributed balancing 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 NET Framework 2.0 era.

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

BlogEngine.NET: A foreign free and open source blog system.

Dotnetnuke.NET: A very excellent open source portal program based on ASP.NET.

Discuz.NET: Domestic open source forum community system.

nopCommerce and Aspxcommerce: A high-quality foreign open source B2C website system.

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

Logging exception handling:

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

Enterprise Library Log Application Black: Microsoft Enterprise Library Log Recording.

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

NLog: It is a simple and flexible logging library with higher performance than Log4Net and easier to use and maintain.

About NoSQL databases:

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 Microsoft's patterns&practicest team supports AOP cross-cutting concerns.

MEF (Managed Extensibility Framework): It 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, with almost no intrusion into project code.

PostSharp: Implements static AOP cross-cutting concerns, is simple to use and powerful, and does not require any changes to the target interception method.

Ninject: Dependency injection IOC framework based on .NET lightweight open source

Several commonly used ORM frameworks:

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

Nhibernate: A lightweight ORM framework for .NET environment.

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

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

SubSonic: An excellent open source ORM mapping framework, and also provides a code generator that meets your own needs.

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

Dapper: A lightweight and high-performance ORM framework generated 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, providing the basis for the new version of the WebApi library.

System.JSON.dll: JSON serialization component developed by Microsoft (needs to be downloaded separately)

DataContractJsonSerializer and DataContractXmlSerializer: The serializer used by Microsoft in WCF.

JavaScriptSerializer: Microsoft’s default JSON formatter for WEB developers.

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 math 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 languages

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

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

PrivateObject: A class in the Microsoft unit testing framework that facilitates external calls to private members within a class.

Cross-platform and runtime solutions

MONO.NET: Cross-platform .NET operating environment makes it possible for .NET to run cross-platform.

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

Phalanger: Compile PHP into .NET to realize interoperability between PHP and .NET.

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

Unity3D: A cross-platform game development framework for C# and JavaScript that is 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 with its HTML processing engine htmlagilitypack.

AntiXSS: Microsoft's official open source library to prevent 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 make a simple WEB application quickly.

AspNetPager: The well-known domestic ASP.NET paging control supports multiple paging methods.

NOPI.dll: Plug-in for exporting Excel reports (implemented based on Microsoft OpenXml) (nopi.css.dl sets the style through css)

Enterprise Library: Microsoft’s best practice components for enterprise application development.

PowerCollections: An advanced open source collection written by a talented person abroad.

Mobile Internet and Cloud Computing

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

mono for android:Develop Android applications using .NET language:

MonoTouch: Use .NET language to develop IOS applications.

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

Cordova: The open source project after PhoneGap was contributed to Apache is the core engine driving PhoneGap.

Network communication and network protocols

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

SuperWebSocket: Implement 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 proxies.

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: Commercial image processing component, supporting a lot of formats.

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

Desktop Application Framework

DevExpress: A world-renowned UI control library for desktop applications.

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

WPFToolkit and Fluent Ribbon Control Suite: Develop Office-style Ribbon menus.

Testing and performance evaluation

Faker.Net: A framework that facilitates the generation of large batches of test data.

Nunit: A lightweight unit testing framework.

Moq: A very popular Mock framework, supports LINQ, is flexible and high-performance.

xUnit: A better unit testing framework than NUnit, an upgraded and improved version of the Nunit framework.

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

Transaction and distributed transaction support

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).

Word segmentation, full text retrieval and search engine

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

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

Data validation component organization

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

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

CuttingEdge.Conditions: A contract programming component based on the Fluent interface method.

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

Open source chart statistics control:

Visifire: A set of WPF chart controls with very good effects, supporting 3D drawing, curves, polylines, sectors, rings and trapezoids.

SparrowToolkit: A set of WPF chart controls that supports drawing dynamic curves and can draw oscilloscopes, CPU usage and waveforms.

DynamicDataDisplay: Microsoft’s open source WPF dynamic curve charts, line charts, bubble charts and heat maps.

The Message Queue category can be expanded, such as: Kafka is a distributed, publish/subscribe based messaging system. The main design goals are as follows:

It provides message persistence capability with a time complexity of O(1), ensuring constant time complexity access performance even for data above TB level.

High throughput. Even on very cheap commercial machines, a single machine can support the transmission of more than 100K messages per second.

Supports message partitioning and distributed consumption between Kafka Servers, while ensuring sequential transmission of messages within each Partition.

Supports both offline data processing and real-time data processing.

Scale out: supports 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 messages are queued in the central queue before being sent to the client. It has good support for routing, load balancing or data persistence.

Redis

Redis is a NoSQL database based on Key-Value pairs and is actively developed and maintained. Although it is a Key-Value database storage system, it supports the MQ function itself, so it can be used as a lightweight queue service. For the enqueue and dequeue operations of RabbitMQ and Redis, each is executed 1 million times, 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 queue, the performance of Redis is higher than that of RabbitMQ when the data is relatively small, but if the data size exceeds 10K, Redis is unbearably slow; when leaving the queue, Redis shows very good performance regardless of the size of the data. , and the dequeue performance of RabbitMQ is much lower than that of Redis.

ZeroMQ

ZeroMQ is known as the fastest message queue 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 successful application of MQ. ZeroMQ has a unique non-middleware model, you do not need to install and run a message server or middleware, because your application will play the role of this server. You just 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 it goes down, data will be lost. Among them, Twitter's Storm versions before 0.9.0 used ZeroMQ as the data stream transmission by default (Storm supports both ZeroMQ and Netty as transmission modules starting from version 0.9).

ActiveMQ

ActiveMQ is a sub-project under Apache. Similar to ZeroMQ, it can implement queues with broker 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/Jafka

Kafka is a sub-project under Apache. It is a high-performance cross-language distributed publish/subscribe message queue system. Jafka is incubated on top of Kafka, which is an upgraded version of Kafka. It has the following characteristics: fast persistence, which can persist messages with O(1) system overhead; high throughput, which can reach a throughput rate of 10W/s on an ordinary server; a completely distributed system, Broker , Producer, and Consumer all natively and automatically support distribution and automatically implement load balancing; support parallel loading of Hadoop data. This is a feasible solution for log data and offline analysis systems like Hadoop that require real-time processing limitations. . 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 very good performance, it is also a well-working distributed system.

The above is the detailed content of Detailed introduction of commonly used frameworks based on .NET platform. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn