Introduction to Software Architecture---. NET Framework

Source: Internet
Author: User
Tags emit imagemagick rabbitmq log4net

Https://www.cnblogs.com/hgmyz/p/5313983.html

Since study. NET, elegant programming style, extremely simple extensibility, strong enough to develop tools, a very small learning curve, let me have a strong interest in the platform, in the work and learning also accumulated a number of open source components, the current thought of finishing this, if you think again, continue to supplement this log, accumulate, You can form a library of your own component experience.

Distributed Cache Framework:

Microsoft Velocity: Microsoft Home Distributed Cache Service Framework.

memcahed: A distributed cache system, which is currently used by many websites to improve the speed of website access.

Redis: is a high-performance KV database. It has largely compensated for memcached's shortcomings in some areas.

enyimmemcached: Access to Memcached's best. NET client, integrated with a good distributed equalization algorithm.

Open-source. NET System recommendations:

OXITE: Microsoft ASP. NET MVC Case Demo framework.

petshop: Microsoft ASP.

Orchard: An MVC open-source blogging system abroad.

SSCLI: Microsoft's Open source code in the Net Framework 2.0 era.

DasBlog: An ASP. NET-based blog system abroad.

blogengine.net: A free and open source blog system abroad.

dotnetnuke.net: A very good set of ASP. NET-based open source portal programs.

discuz.net: Domestic open-Source forum Community system.

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

Jumbotcms and Dtcms: Two domestic open-source website management system:

Log record exception handling:

Log4Net.dll: Lightweight, free, open source. NET Logging framework.

Enterprise Library log application Black: Microsoft Business Vault Logging.

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

NLog: is a simple and flexible logging class library, the performance is higher than the log4net, the use and maintenance difficulty is low.

About NoSQL databases:

Mongodb: Distributed File Store 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 Microsoft Patterns&practicest Team developed an IOC dependency injection framework that supports AOP crosscutting concerns.

MEF(Managed Extensibility Framework): a framework for extending. NET applications that can develop plug-in systems.

spring.net: Dependency Injection, aspect-oriented programming (AOP), data access abstraction, and ASP.

AUTOFAC: The most popular Dependency injection and IOC framework, lightweight and high-performance, with virtually no intrusion into project code.

postsharp: Implement static AOP crosscutting concerns, simple and powerful, without any changes to the method of target interception.

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

Several ORM frameworks are commonly used:

EF(ADO): Microsoft-based ORM framework developed by ADO.

Nhibernate: Oriented. NET environment of the lightweight ORM framework.

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

automapper: The popular object mapping framework, which reduces the number of hard-coded, is small and flexible, and performance is acceptable.

Subsonic: An excellent open-source ORM Mapping framework that provides code generators that meet their needs.

fluentdata: Open Source's fluent API-based chained query ORM Lightweight framework.

Dapper: Lightweight and high performance ORM framework based on emit generation.

emitmapper: A high performance ORM framework, where the runtime generates IL code dynamically through emit, rather than using a reflection mechanism.

Format and data type conversions

Newtonsoft.json: At present. NET development, the most popular JSON serialization library, provides the basis for the new Webapi library.

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

DataContractJsonSerializer and Datacontractxmlserializer: The serializer that Microsoft uses in WCF.

javascriptserializer: Microsoft defaults to the JSON formatter provided by the web Developer.

Itextsharp, Pdfsharp and pdf.net: through. NET processes and generates components for PDF documents.

SharpZipLib.dll: Free open source zip and gzip file extract component.

math.net: Powerful mathematical operations, calculus, solution equations and scientific operations.

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 language

ClayDynamics: Open source Dynamic language dynamically framework lets you create objects in a form like JavaScript.

Exposedobject: The private member is accessed outside of the class by dynamic language dynamics.

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

Cross-platform and run-time solutions

mono.net: cross-platform. NET run environment, making it possible to run. NET across platforms.

DotGnu portable.net: A cross-platform runtime similar to mono.net.

phalanger: compiling PHP into. NET enables PHP to interoperate with. Net.

vmdotnet: Used by China Mobile fetion. NET Runtime.

Unity3d: Microsoft strongly supports the opportunity of C # and JavaScript's cross-platform game development framework.

Cassini, IIS Express, and Cassinidev: Open source ASP.

Katana: Non-IIS hosted ASP. NET, MVC, etc. implemented by Microsoft based on the Owin specification.

ikvm.net: Based on. NET Java Virtual machine, let Java run on. Net.

Web Development and Design

jumony Core: Based on. NET development of the HTML engine.

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

javascript.net and Clearscript (Microsoft Productions): Based on. NET development of the JavaScript engine.

Ncrawler: Its HTML processing engine htmlagilitypack The open-source web crawler software.

AntiXSS: Microsoft's official Open source class library for the prevention of cross-site XSS scripting intrusion, which encodes content through the whitelist mechanism.

yuicompressor.net, Microsoft Ajax minifier, and Google Closure Compiler: Javascrip and CSS compressors.

Nancyfx: is a nice lightweight open source. NET Web Framework. If you want to quickly make a simple web app.

Aspnetpager: Domestic well-known ASP. NET paging control, supporting a variety of paging methods.

NOPI.dll: Plugin for exporting Excel reports (based on Microsoft OPENXML Implementation) (NOPI.CSS.DL style via CSS)

Enterprise Library: Microsoft's best practices component for business-class application development.

powercollections: A high-level open source collection written by a bull man abroad.

Mobile Internet and cloud computing

pushsharp: Pass. NET pushes messages to various mobile platforms.

Mono for Android: with. NET language to develop Android apps:

MonoTouch: use. NET language to develop iOS apps.

PhoneGap and Appcan: a cross-platform, HTML5-based mobile development platform.

Cordova: PhoneGap contributed to Apache's Open source project, is the core engine that drives phonegap.

Network communication and network protocols

SuperSocket: Based on. NET lightweight, extensible socket Development framework.

superwebsocket: Pass. NET implementation of the TML5 WebSocket framework.

Xproxy: Supports the plug-in's underlying agent assembly, with built-in NAT, decryption, reverse, direct, and indirect proxies.

Graphics and image processing framework

Paint.NET: Based on. NET small, flexible and powerful graphics processing open source projects.

imagemagick.net: Encapsulation of the open Source image processing component Imagemagick in C #.

skimpt: Based on. NET open-source screen software.

imageglue.net: A commercial image processing component that supports a wide array of formats.

Sprite and Image optimization Framework: Microsoft CSS Wizard, multi-image compositing a large image and CSS style.

Desktop application Framework

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

Prism: A Microsoft-developed 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 the Office style.

Testing and performance evaluation aspects

faker.net: A framework that facilitates the generation of high-volume test data.

Nunit: A lightweight unit testing framework.

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

xUnit: A better unit Test framework than NUnit, upgrade the improved version of the NUnit framework.

Miniprofiler and Glimpse: MVC-based two performance event monitoring framework.

transactional and Distributed transaction support

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

NET Transactional file Manager: Adds transactional support for filesystem operations (copy, move, and delete).

Participle, full-text search and search engine

lucene.net: A popular, high-performance full-text index 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 Grooming

fluentvalidation for. NET: A LINQ expression-based method chain fluent interface validation component.

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

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

dotnetopenauth: Gives your site the ability to support OpenID, OAuth, InfoCard and other authentication.

Open Source Chart Statistics controls:

Visifire: A well-performing WPF chart control that supports 3D drawing, curves, polylines, fans, loops, and trapezoid.
Sparrowtoolkit: A set of WPF chart controls that support plotting of dynamic curves to draw oscilloscopes, CPU usage, and waveforms.
dynamicdatadisplay: Microsoft open source WPF dynamic graphs, line charts, bubble charts, and thermal maps.

Can expandMessage QueuingCategories, such as: Kafka is a distributed, publish/subscribe-based messaging system. The main design objectives are as follows:
Provides message persistence in the form of Time complexity O (1), which guarantees constant-time complexity even with terabytes of data.
High throughput rates. Even on very inexpensive commercial machines, a single machine can support the transmission of more than 100K messages per second.
Supports message partitioning between Kafka servers, and distributed consumption, while guaranteeing the sequential transmission of messages within each partition.
It also supports offline 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 itself supports a lot of protocols: Amqp,xmpp, SMTP, STOMP, and that's why it's very heavyweight and more suitable for enterprise-class development. The broker framework is also implemented, which means that messages are queued in the central queue before being 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 natively supports MQ functionality, so it can be used as a lightweight queue service. For RABBITMQ and Redis on-board and out-of-team operations, each execution 1 million times, every 100,000 times the execution time is recorded. The test data is divided into 128Bytes, 512Bytes, 1K and 10K four different sizes of data. The experiment shows that when the data is compared with the RABBITMQ, the performance of the Redis is higher than that of the 10k,redis when the data is larger than the size of the queue, and the Redis shows very good performance regardless of the data size. And RABBITMQ's performance is much lower than Redis.
ZeroMQ
ZEROMQ claims to be the fastest Message Queuing system, especially for large throughput 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 that you do not 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 it, and then you can happily send messages between applications. However, ZEROMQ only provides a non-persistent queue, meaning that if the outage occurs, the data will be lost. Of these, Twitter's storm 0.9.0 used Zeromq as a transport for data streams by default in previous versions (Storm has supported both ZEROMQ and Netty as a transport module since version 0.9).
ActiveMQ
ACTIVEMQ is a sub-project under Apache. Similar to ZEROMQ, it is able to implement queues with agent and peer-to-peer technology. It is also similar to RABBITMQ, where a small amount of code makes it possible to implement high-level scenarios efficiently.
Kafka/jafka
Kafka is a sub-project under Apache and is a high-performance cross-language distributed publish/Subscribe Message Queuing system, and Jafka is hatched on Kafka, an upgraded version of Kafka. Has the following characteristics: Fast persistence, can be in the O (1) of the system overhead for message persistence, high throughput, on a common server can achieve 10W/S throughput rate, complete distributed system, Broker, Producer, consumer are native automatically support distributed, Automatic load balancing, support for parallel loading of Hadoop data, the same log data as Hadoop and offline analysis system, but also the limitations of real-time processing, 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 in contrast to ACTIVEMQ, and is a well-functioning distributed system in addition to its very good performance.

Introduction to Software Architecture---. NET Framework

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.