Based on. NET Platform common framework and open source program collation _ self-study Process

Source: Internet
Author: User
Tags aop emit exception handling imagemagick json redis rabbitmq log4net

Since studying. NET, elegant programming style, extremely simple extensibility, strong enough to develop tools, minimal learning curve, let me have a strong interest in this platform, in the work and study also accumulated a number of open source components, on the current thought of the first collation in this, if you think of it, continue to supplement this log, accumulated over time, You can form a library of your own component experiences.

Distributed Caching Framework:

Microsoft Velocity: Microsoft's own distributed caching services framework.

Memcahed: A distributed cache system that is currently used by many Web sites to increase the speed of Web site access.

Redis: is a high-performance kv database. Its appearance has compensated the memcached in some respects to a great extent.

Enyimmemcached: Access to Memcached's best. NET clients and integrate a good distributed equalization 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 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 good set of ASP.net open source portal program.

Discuz.net: Domestic Open Source Forum Community system.

Nopcommerce and Aspxcommerce: A foreign set of high-quality open source web system.

Jumbotcms and Dtcms: China's two open source Web site management system:

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: is a simple and flexible logging class library, performance is higher than log4net, the use and maintenance of low difficulty.

About the 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): 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, almost no intrusion into project code.

Postsharp: Implement static AOP crosscutting concerns, easy to use, powerful, and no changes to the target interception method.

Ninject: Dependency Injection to the IOC framework based on. NET Lightweight open source

Several ORM frameworks are commonly used:

EF (ado.net Entity Framework): The ORM framework developed by Microsoft based on Ado.net.

Nhibernate: A lightweight ORM framework for the. NET environment.

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

AutoMapper: The popular object mapping framework, which can reduce a lot of hard coding, is very small and flexible, performance is acceptable.

Subsonic: Excellent open source ORM mapping framework, while providing the code generator that meets its needs.

Fluentdata: Open source based on the Fluent API chain Query ORM Lightweight framework.

Dapper: Lightweight high-performance based on emit-generated ORM framework.

Emitmapper: An ORM Framework with high performance, runtime generates IL code dynamically by emit, not using reflection mechanism.

Format and data type conversions:

Newtonsoft.json: Currently the most popular Json serialization library in. NET development provides the basis for a new version of the Webapi library.

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

DataContractJsonSerializer and Datacontractxmlserializer: A serializer used by Microsoft in WCF.

JavaScriptSerializer: Microsoft defaults to the JSON formatter provided for Web developers.

Itextsharp, Pdfsharp, and PDFs. NET: A component that processes and generates PDF documents through. NET.

SharpZipLib.dll: Free open source zip and gzip file uncompressed components.

Math.net: Powerful mathematical operation, calculus, solution equation and scientific operation.

DocX: You do not need to install Word software to manipulate Word files through C #.

Sharpserializer: Open source XML and, binary, JSON, compression, and optimization frameworks.

Reflection and Dynamic languages:

Clay Dynamic: The open Source Dynamical language Dynamics framework lets you create objects in the form of JavaScript.

Exposedobject: Private members are accessed outside the class through dynamic language dynamics.

Privateobject: A class in the Microsoft Unit Test framework that is handy for calling private members inside a class outside of the system.

Cross-platform and runtime solutions:

MONO. NET: a cross-platform. NET running environment makes it possible for. NET to run across platforms.

DotGnu portable.net: Similar to Mono.net cross-platform runtime.

Phalanger: PHP is compiled into. NET, which enables PHP to interoperate with. Net.

Vmdotnet: China moves the. NET runtime used by the flying letter.

Unity3d: Microsoft's strong support for the opportunities of C # and JavaScript for Cross-platform game development frameworks.

Cassini, IIS Express and Cassinidev: Open source asp.net execution environment.

Katana: Microsoft is based on Owin specification implementation of non-IIS boarding asp.net and MVC, and so on.

IKVM. NET: A. NET based Java Virtual machine that lets Java run on. Net.

Web Development and Design:

Jumony Core: HTML engine based on. NET development.

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

Javascript.net and Clearscript (produced by Microsoft): JavaScript engine based on. NET development.

Ncrawler: Its HTML processing engine Htmlagilitypack's Open-source web crawler software.

ANTIXSS: Microsoft Official prevention of cross-site XSS script intrusion attack open source class library, it through the white list mechanism for content coding.

Yuicompressor.net, Microsoft Ajax minifier and Google Closure Compiler:javascrip and CSS compressors.

NANCYFX: It's a nice lightweight open source. NET Web Framework. If you want to quickly make a simple Web application.

Aspnetpager: Domestic well-known asp.net pagination control, support a variety of paging.

NOPI.dll: Plug-ins for exporting Excel reports (based on Microsoft OPENXML Implementation) (NOPI.CSS.DL styling by CSS)

Enterprise Library: Microsoft's best Practice component for enterprise-class application development.

Powercollections: An advanced Open source collection written by a cow abroad.

Mobile Internet and cloud computing:

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

Mono for Android: with. NET language development Android applications:

Monotouch: Developing iOS applications with. NET language.

PhoneGap and Appcan: Cross-platform Platform for Mobile development based on HTML5.

Cordova:phonegap's contribution to the open source project after Apache is the core engine that drives phonegap.

Network communications and network protocols:

SuperSocket: Extensible socket Development framework based on. NET lightweight.

Superwebsocket: Implement the TML5 WebSocket framework through. NET.

Xproxy: Supports the base agent assembly for Plug-ins, built-in NAT, plus decryption, reverse, direct, and indirect proxies.

Graphics and image processing framework:

Paint.NET: Open source project based on. NET Compact, flexible and powerful graphics processing.

Imagemagick.net: Imagemagick Encapsulation of open source image processing components in C #.

Skimpt: A screen capture software based on. NET open source.

Imageglue.net: Commercial image processing components, supported by a large list of formats.

Sprite and image optimization Framework: Microsoft CSS Wizard, multiple graphs to synthesize a large picture and CSS style.

Desktop application Framework:

DevExpress: A globally renowned desktop application UI Control library.

Prism: Microsoft developed a MVVM framework for WPF and Silverlight that separates complex business functions from UI coupling through the idea of functional modularity.

Wpftoolkit and Fluent Ribbon control Suite: Develop a Ribbon menu similar to office style.

Testing and performance Assessment:

Faker.net: A framework to facilitate the generation of large quantities of test data.

Nunit: A lightweight unit-testing framework.

Moq: A very popular mock framework that supports LINQ, flexibility and high performance.

XUnit: Better unit Test framework than NUnit, upgrade NUnit framework for improved version.

Miniprofiler and Glimpse: Two performance event monitoring framework based on MVC.

transactional and Distributed transaction support:

Ktmintegration: A transactional open source class that supports the NTFS file system.

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

Participle, full-text search and search engine:

Lucene.Net: A popular high-performance full-text indexing library that can be used to provide powerful search capabilities for a wide variety of information.

Lucene.Net.Analysis.PanGu: Support Lucene.Net The latest version of Pangu Chinese word extension library.

Data Validation Component collation:

Fluentvalidation for. NET: Validation component based on LINQ expression method chain fluent interface.

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

Cuttingedge.conditions: The contract programming component of interface based on fluent interface method.

Dotnetopenauth: Let the site have the ability to support OpenID, OAuth, InfoCard and other authentication.

Open Source Chart Statistics control:

Visifire: A very good WPF chart control that supports 3D drawing, curves, polylines, slices, loops, and trapezoidal.

Sparrowtoolkit: A set of WPF chart controls that support the drawing of dynamic curves, which can draw oscilloscopes, CPU usage, and waveforms.

Dynamicdatadisplay: Microsoft open source WPF dynamic graph, line diagram, bubble chart and thermal diagram.

You can expand the Message Queuing category , such as: Kafka is a distributed, publish/subscribe messaging system. The main design objectives are as follows:
Provides message persistence with a time complexity of O (1), even for terabytes of data that guarantees constant time complexity access performance.
High throughput rate. Even on a very inexpensive commercial machine can do stand-alone support 100K per second message transmission.
Supports message partitioning among Kafka servers, and distributed consumption, while ensuring the sequential transmission of messages within each partition.
It also supports off-line data processing and real-time data processing.
Scale out: Supports online horizontal scaling.

Rabbitmq

RABBITMQ is an open source message queue written using Erlang, which supports a number of protocols: Amqp,xmpp, SMTP, STOMP, and for this reason, it is very heavyweight and more suitable for enterprise-level development. The broker architecture is also implemented, which means that messages are queued in the center queue when they are sent to the client. Good support for routing, load balancing, or data persistence.

Redis

Redis is a NoSQL database based on Key-value, which is very active in development and maintenance. Although it is a Key-value database storage system, it supports MQ functionality in its own right, so it can be used as a lightweight queuing service. For RABBITMQ and Redis teams and team operations, each execution 1 million times, every 100,000 times to record the execution time. The test data is divided into 128Bytes, 512Bytes, 1K, and 10K data of four different sizes. Experiments show that: when the team, when the data compared to the hour Redis performance is higher than the RABBITMQ, and if the data size than the 10k,redis is slow to endure; when out, regardless of the size of the data, the Redis show very good performance, The performance of RABBITMQ is much lower than that of Redis.

ZeroMQ

ZEROMQ is known as the fastest Message Queuing system, especially for large throughput requirements scenarios. ZEROMQ can implement advanced/complex queues that rabbitmq are not good at, but developers need to assemble multiple technical frameworks themselves, and technical complexity is a challenge to the success of this MQ application. ZEROMQ has a unique, non-middleware model, and 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 refer to the ZEROMQ library, you can use the NuGet installation, and then you can happily send messages between applications. However, ZEROMQ only provides non-persistent queues, which means that data will be lost if downtime occurs. Among them, Twitter's storm 0.9.0 used Zeromq as a data stream in previous versions (storm from version 0.9 to support both ZEROMQ and Netty as transmission modules).

ActiveMQ

ACTIVEMQ is a sub project under Apache. Similar to ZEROMQ, it can implement queues with proxies and point-to-point techniques. At the same time, it is similar to RABBITMQ, where a small amount of code can efficiently implement advanced application scenarios.

Kafka/jafka

Kafka is a subproject under Apache, a high-performance cross-language distributed publish/Subscribe Message Queuing system, while Jafka is hatched on Kafka, an upgraded version of Kafka. Has the following characteristics: Fast persistence, can be in O (1) of the system cost of message persistence, high throughput, on a common server can achieve 10w/s throughput rate; full distributed systems, Broker, Producer, consumer are all native automatic support distributed, Automatic load balancing supports the parallel loading of Hadoop data, which is a viable solution for log data and off-line analysis systems like Hadoop, but which require real-time processing. Kafka unifies the online and offline message processing through the parallel loading mechanism of Hadoop. The Apache Kafka is a very lightweight messaging system relative to ACTIVEMQ, and is a well distributed system, in addition to its very good performance.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.