Sedan jag lärde mig. .NET, elegant programmeringsstil, extremt enkel skalbarhet, tillräckligt kraftfulla utvecklingsverktyg och en mycket kort inlärningskurva har gjort mig starkt intresserad av denna plattform, och jag har också samlat på mig några open source-komponenter i mitt arbete och studier. Distribuerad cacheram: Microsoft Velocity: Microsofts egen distribuerade cache-tjänsteramverk. Memcahed: Ett distribuerat cachesystem som för närvarande används av många webbplatser för att förbättra åtkomsthastigheten på webbplatser. Redis: är en högpresterande KV-databas. Dess utseende kompenserar till stor del för Memcacheds brister på vissa punkter. EnyimMemcached: Tillgång till Memcacheds bästa .NET-klient med en bra distribuerad equalization-algoritm. Öppen källkod. .NET-systemrekommendation: OXITE: Microsoft ASP.NET MVC-ramverk för fallpresentation. PetShop: Microsoft ASP.NET djuraffär. Orchard: Ett utländskt MVC open source-bloggsystem. SSCLI: Microsofts öppna källkod under NET Framework 2.0-eran. DasBlog: Ett bloggsystem baserat på ASP.NET utomlands. BlogEngine.NET: Ett gratis och öppet bloggsystem utomlands. Dotnetnuke.NET: Ett mycket bra set av ASP.NET-baserade open source-portalprogram. Discuz.NET: Inhemskt öppen källkodsforum-communitysystem. nopCommerce och Aspxcommerce: Ett set högkvalitativa öppna B2C-webbplatssystem utomlands. JumboTCMS och DTCMS: Två open source-system för webbplatshantering i Kina: Loggning av undantagshantering: Log4Net.dll: Ett lättviktigt gratis och öppet .NET-loggningsramverk. Enterprise Library Log Application Black: Microsoft Enterprise Library Logging. Elmah: Implementerar det mest populära ramverket ASP.NET applikations-undantagsloggning. NLog: är ett enkelt och flexibelt loggbibliotek med högre prestanda än Log4Net och låg svårighet i användning och underhåll. Om NoSQL-databaser: Mongodb: Distribuerad fillagringsdatabas. Membase: En ny tungviktare i familjen. Automatiserad uppgiftsschemaläggningsramverk Quartz.NET: Öppen källkod för jobbschemaläggning och automatiserat uppgiftsramverk. Topshelf: Ytterligare ett öppet källkodsramverk för att skapa Windows-tjänster IOC-containerramverk för beroendeinjektion: Unity: Ett IOC-ramverk för beroendeinjektion utvecklat av Microsofts mönster- och praxisteam som stödjer AOP:s tvärgående frågor. MEF (Managed Extensibility Framework): är ett ramverk för att utöka .NET-applikationer och möjliggöra utveckling av plug-in-system. Spring.NET: Beroendeinjektion, aspektorienterad programmering (AOP), abstraktion av dataåtkomst och ASP.NET integration. Autofac: Det mest populära beroendeinjektions- och IOC-ramverket, lättviktigt och högpresterande, praktiskt taget icke-påträngande för projektkoden. PostSharp: Implementerar statisk AOP-korsning av bekymmer, är enkel att använda, kraftfull och kräver inga ändringar i metoden för målavlyssning. Ninject: Ett IOC-ramverk för beroendeinjektion baserat på .NET lättvikt och öppen källkod Flera vanligt använda ORM-ramverk: EF (ADO.NET Entity Framework): Ett ORM-ramverk utvecklat av Microsoft baserat på ADO.NET. Nhibernate: Ett lättviktigt ORM-ramverk för .NET-miljöer. SqlMapper.cs: En generell C#-databasåtkomstklass för små projekt. AutoMapper: Ett populärt ramverk för objektmappning som minskar mycket hårdkodning, är kompakt och flexibelt och har acceptabel prestanda. SubSonic: Ett utmärkt öppen källkodsramverk för ORM-kartläggning som tillhandahåller en kodgenerator som uppfyller dina behov. FluentData: Ett öppet källkodsbaserat Fluent API-baserat kedjett, ORM-lättviktsramverk. Dapper: Lättviktig, högpresterande, baserad på EMIT-genererat ORM-ramverk. EmitMapper: Ett högpresterande ORM-ramverk som dynamiskt genererar IL-kod via EMIT vid körning, istället för att använda en reflektionsmekanism. Format- och datatypkonvertering Newtonsoft.Json: Det mest populära JSON-serialiseringsbiblioteket för närvarande inom .NET-utveckling och utgör grunden för den nya versionen av WebApi-biblioteket. System.JSON.dll: Microsofts egen JSON-serialiseringskomponent (måste laddas ner separat) DataContractJsonSerializer och DataContractXmlSerializer: Serializers som används av Microsoft i WCF. Javascrip{filter}tSerializer: Microsofts standard JSON-verktyg för WEBBUTVECKLARE. iTextSharp, PDFsharp och PDF.NET: Genom. .NET för att bearbeta och generera PDF-dokument. SharpZipLib.dll: Gratis och öppen källkod för ZIP- och GZIP-fildekomprimeringskomponenter. Math.NET: Starka matematiska operationer, kalkyl, lösning av ekvationer och vetenskapliga operationer. DocX: Ingen installation av Word-programvara, använd Word-filer via C#. SharpSerializer: Öppen källkod för XML och binär, JSON, komprimerings- och optimeringsramverk. Reflekterande och dynamiskt språk Clay dynamic: Det öppna dynamiska ramverket låter dig skapa objekt i form av javascrip{filtering}t. ExposedObject: Åtkomst till privata medlemmar utanför klassen på ett dynamiskt språksätt. PrivateObject: En klass i Microsofts enhetstestningsramverk som är bekväm för att anropa privata medlemmar av klassen externt. Plattformsoberoende och runtime-lösningar MONO.NET: Plattformsöverskridande. .NET-runtime-miljö, vilket möjliggör .NET:s plattformsöverskridande drift. DotGnu Portable.NET: Cross-platform runtime liknande MONO.NET. Phalanger: Kompipilering av PHP till .NET möjliggör interoperabilitet mellan PHP och .NET. VMDotNet: .NET-runtimen som används av China Mobile Feixin. Unity3D: Microsofts starka stöd för C# och Javascrips plattformsoberoende spelutvecklingsramverk. Cassini, IIS Express och Cassinidev: Öppen källkod ASP.NET exekveringsmiljöer. Katana: Microsofts icke-IIS boarding ASP.NET och MVC baserat på OWIN-specifikationen. IKVM.NET: Baserat på. .NET är en virtuell JAVA-maskin som tillåter JAVA att köras ovanpå .NET. WEBBUTVECKLING och design Jumony Core: En HTML-motor utvecklad baserad på .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll och HtmlAgilityPack.dll: Ramverk som tolkar och bearbetar HTML-dokument. Javascrip{filtering}t.NET och Clearscrip{filtering}t (producerad av Microsoft): Baserad på . .NET utvecklade Javascrip{filter}t-motorn. NCrawler: En öppen källkods-webbcrawler för sin HTML-processor, htmlagilitypack. AntiXSS: Microsofts officiella open source-bibliotek för att förhindra cross-site XSS-skriptintrångsattacker, som kodar innehåll via en vitlista-mekanism. YUICompressor.NET, Microsoft Ajax Minifier och Google Closure Compiler: JavaScrip och CSS Compressor. NancyFx: är ett bra lättviktigt öppen källkodsramverk för .NET WEB. Om du vill snabbt göra en enkel webbapplikation. AspNetPager: Ett välkänt ASP.NET personsökarkontroll i Kina, som stöder flera personsökarmetoder. NOPI.dll: Plugin för export av Excel-rapporter (baserat på Microsoft OpenXML-implementation) (nopi.css.dl-format via css) Enterprise Library: Microsofts bästa praxis-komponent för företagsnivå-applikationsutveckling. PowerCollections: En högnivåsamling med öppen källkod skriven av en utländsk expert. Mobilt internet och molntjänster PushSharp: Skicka meddelanden till olika mobila plattformar via .NET. Mono för Android: Använda. .NET-språkutveckling Android-applikation: MonoTouch: Utveckla IOS-applikationer i .NET-språket. PhoneGap och AppCan: Plattformsoberoende HTML5-baserade mobilutvecklingsplattformar. Cordova: Ett open source-projekt efter att PhoneGap bidrog till Apache, det är kärnmotorn som driver PhoneGap. Nätverkskommunikation och nätverksprotokoll SuperSocket: Ett lättviktigt och skalbart socket-utvecklingsramverk baserat på .NET. SuperWebSocket: Implementerar TML5 WebSocket-ramverket via .NET. XProxy: Den grundläggande agentsammansättningen som stödjer plugins, med inbyggd NAT, kryptering och dekryptering, omvända, direkta och indirekta proxyer. Grafik- och bildbehandlingsramverk Paint.NET: Baserat på. .NET är ett kompakt, flexibelt och kraftfullt open source-projekt för grafikbearbetning. Imagemagick.NET: Inkapsling av den öppna bildbehandlingskomponenten Imagemagick i C#. Skimpt: Öppen källkodsprogramvara för skärmdumpar baserad på .NET. ImageGlue.NET: Kommersiella bildbehandlingskomponenter har en lång lista med stödda format. Sprite- och bildoptimeringsramverk: Microsoft CSS Wizard, multi-image som kombinerar en stor bild och CSS-stil. Skrivbordsapplikationsramverk DevExpress: Ett världsberömt bibliotek med UI-kontroller för skrivbordsapplikationer. Prism: MVVM-ramverket utvecklat av Microsoft för WPF och Silverlight, som separerar komplexa affärsfunktioner och UI-koppling genom idén om funktionell modularitet. WPFToolkit och Fluent Ribbon Control Suite: Utveckla Office-inspirerade Ribbon-menyer. Testning och prestandautvärdering Faker.Net: Ett ramverk för att generera stora mängder testdata. Nunit: Ett lättviktigt enhetstestningsramverk. Moq: Ett mycket populärt mock-ramverk som stödjer LINQ, flexibelt och högpresterande. xUnit: Ett bättre enhetstestramverk än NUnit, en uppgraderad version av Nunit-ramverket. MiniProfiler och Glimpse: Två ramverk för övervakning av prestandahändelser baserade på MVC. Transaktions- och distribuerad transaktionsstöd KtmIntegration: En transaktionell öppen källkodsklass som stöder NTFS-filsystemet. NET Transaktionsfilhanterare: Lade till transaktionsstöd för filsystemoperationer (kopiera, flytta och ta bort). Ordsegmentering, fulltextsökning och sökmotor Lucene.net: Ett populärt högpresterande fulltextindexbibliotek som kan användas för att tillhandahålla kraftfulla sökfunktioner för alla typer av information. Lucene.Net.Analysis.PanGu: Stöder den senaste versionen av Pangu Chinese segmentation extension library Lucene.Net. Organisation av komponent för datavalidering FluentValidation för . NET: Komponent för verifiering av flytande gränssnitt baserat på LINQ:s uttrycksmetodkedja. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Microsoft Enterprise Librarys valideringsprogramblock. CuttingEdge.Conditions: En kontraktsprogrammeringskomponent baserad på Fluent-gränssnittsmetoden. DotNetOpenAuth: Gör det möjligt för webbplatser att stödja autentisering med OpenID, OAuth, InfoCard och mer. Kontroller av öppen källkodsstatistik: Visifire: Ett mycket bra set WPF-diagramkontroller som stödjer 3D-ritning, kurvor, polylinjer, sektorer, ringar och trapetsformar. SparrowToolkit: En uppsättning WPF-diagramkontroller som stödjer ritning av dynamiska kurvor, inklusive oscilloskop, CPU-användning och vågformer. DynamicDataDisplay: Microsofts öppna WPF-dynamiska grafer, linjediagram, bubbeldiagram och värmekartor.
Meddelandekökategorier kan utökas, såsom Kafka, som är ett distribuerat, publicer-/prenumerationsbaserat meddelandesystem. De huvudsakliga designmålen är följande: Meddelandepersistens tillhandahålls i form av tidskomplexitet O(1), och åtkomstprestanda med konstant tidskomplexitet kan garanteras även för data över terabyte. Hög genomströmning. Även på mycket billiga kommersiella maskiner kan den stödja överföring av mer än 100 000 meddelanden per sekund på en enda maskin. Den stöder meddelandepartitionering och distribuerad konsumtion mellan Kafka-servrar och säkerställer sekventiell överföring av meddelanden i varje partition. Den stöder både offline-databehandling och realtidsdatabehandling. Skala ut: Stöd horisontell expansion online. RabbitMQ RabbitMQ är en öppen källkods-meddelandekö skriven i Erlang som stöder många protokoll: AMQP, XMPP, SMTP, STOMP, vilket är anledningen till att den är mycket tungvikt och mer lämplig för företagsnivåutveckling. Samtidigt implementeras mäklararkitekturen, vilket innebär att meddelanden först köas i den centrala kön när de skickas till klienten. Det finns bra stöd för routing, lastbalansering eller datapersistens. Redis Redis är en NoSQL-databas baserad på nyckel-värde-par, och den utvecklas och underhålls aktivt. Även om det är ett nyckelvärdesdatabassystem stöder det MQ-funktionalitet i sig, så det kan användas som en lättviktskötjänst. För onboarding och out-queue-operationer för RabbitMQ och Redis, 1 miljon gånger vardera, och exekveringstiden registreras var 100 000:e gång. Testdatan är indelad i fyra olika storlekar: 128 byte, 512 byte, 1K och 10 K. Experimentell tabell: När man ansluter sig till teamet är Redis prestanda högre än RabbitMQ när datajämförelsen är liten, och om datastorleken överstiger 10K är Redis outhärdligt långsam. När Redis lämnade teamet visade han mycket bra prestation oavsett datastorlek, medan RabbitMQ:s prestation var mycket lägre än Redis. ZeroMQ ZeroMQ hävdar att det är det snabbaste meddelandekösystemet, särskilt för scenarier med hög genomströmningsefterfrågan. ZeroMQ kan implementera avancerade/komplexa köer som RabbitMQ inte är bra på, men utvecklare behöver kombinera flera tekniska ramverk på egen hand, och den tekniska komplexiteten är en utmaning för att denna MQ ska kunna tillämpas framgångsrikt. ZeroMQ har ett unikt icke-middleware-läge där du inte behöver installera och köra en meddelandeserver eller middleware eftersom din applikation kommer att spela denna serverroll. Allt du behöver göra är att bara referera till ZeroMQ-biblioteket, som kan installeras med NuGet, och du kan enkelt skicka meddelanden mellan applikationer. ZeroMQ tillhandahåller dock endast icke-persistenta köer, vilket innebär att om den går ner, förloras data. Bland dessa använder Twitters Storm-version före 0.9.0 ZeroMQ som överföring av dataströmmar som standard (Storm stöder både ZeroMQ och Netty som överföringsmodul från version 0.9). ActiveMQ ActiveMQ är ett delprojekt under Apache. Liknande ZeroMQ möjliggör den köer med agent- och peer-to-peer-teknologi. Samtidigt, likt RabbitMQ, kan det effektivt implementera avancerade applikationsscenarier med en liten mängd kod. Kafka/Jafka Kafka är ett delprojekt till Apache, ett högpresterande distribuerat public/subscribe-meddelandekösystem över olika språk, och Jafka inkuberas ovanpå Kafka, som är en uppgraderad version av Kafka. Den har följande egenskaper: snabb persistens, som kan behålla meddelanden under systemöverhead O(1); Hög genomströmning, som kan nå en genomströmningshastighet på 10W/s på en vanlig server; Fullständigt distribuerade system, Broker, Producer och Consumer stöder alla distribuerat och genomför automatiskt lastbalansering; Stöder parallell inläsning av Hadoop-data, vilket är en gångbar lösning för loggdata och offline-analyssystem som Hadoop, men med begränsningarna av realtidsbearbetning. Kafka förenar online- och offline-meddelandebehandling via Hadoops parallella laddningsmekanism. Apache Kafka är ett mycket lättviktigt meddelandesystem jämfört med ActiveMQ, och förutom mycket god prestanda är det också ett distribuerat system som fungerar bra. |