Siden jeg lærte. .NET, elegant programmeringsstil, ekstremt enkel skalerbarhet, kraftige utviklingsverktøy og en svært kort læringskurve har gitt meg stor interesse for denne plattformen, og jeg har også samlet noen open source-komponenter i arbeidet og studiene mine. Distribuert cache-rammeverk: Microsoft Velocity: Microsofts eget rammeverk for distribuerte cache-tjenester. Memcahed: Et distribuert caching-system som for tiden brukes av mange nettsteder for å forbedre tilgangshastigheten på nettsider. Redis: er en høyytelses KV-database. Utseendet kompenserer i stor grad for Memcacheds mangler på enkelte områder. EnyimMemcached: Få tilgang til Memcacheds beste .NET-klient med en god distribuert utjevningsalgoritme. Åpen kildekode. .NET-systemanbefaling: OXITE: Microsoft ASP.NET MVC-rammeverk for casepresentasjon. PetShop: Microsoft ASP.NET dyrebutikk. Orchard: Et utenlandsk MVC åpen kildekode-bloggsystem. SSCLI: Microsofts åpne kildekode i NET Framework 2.0-æraen. DasBlog: ET ASP.NET-basert bloggsystem i utlandet. BlogEngine.NET: Et gratis og åpen kildekode-bloggsystem i utlandet. Dotnetnuke.NET: Et veldig godt sett med åpne kildekode-portalprogrammer basert på ASP.NET. Discuz.NET: Innenlandsk åpen kildekode-forumfellesskapssystem. nopCommerce og Aspxcommerce: Et sett med høykvalitets åpen kildekode B2C-nettsidesystemer i utlandet. JumboTCMS og DTCMS: To åpne kildekode-nettstedsadministrasjonssystemer i Kina: Logging av unntakshåndtering: Log4Net.dll: Et lettvekts, gratis og åpen kildekode .NET-loggingsrammeverk. Enterprise Library Log Application Black: Microsoft Enterprise Library Logging. Elmah: Implementerer det mest populære ASP.NET rammeverket for applikasjons-unntakslogging. NLog: er et enkelt og fleksibelt loggbibliotek med høyere ytelse enn Log4Net og lav vanskelighetsgrad i bruk og vedlikehold. Om NoSQL-databaser: Mongodb: Distribuert fillagringsdatabase. Membase: Et nytt tungvektsmedlem i familien. Automatisert oppgaveplanleggingsrammeverk Quartz.NET: Åpen kildekode jobbplanlegging og automatisert oppgaverammeverk. Topshelf: Et annet åpen kildekode-rammeverk for å lage Windows-tjenester IOC-containerrammeverk for avhengighetsinnsprøytning: Unity: Et IOC-rammeverk for avhengighetsinjeksjon utviklet av Microsofts Patterns & Practicest-team som støtter AOPs tverrgående bekymringer. MEF (Managed Extensibility Framework): er et rammeverk for å utvide .NET-applikasjoner og muliggjøre utvikling av plug-in-systemer. Spring.NET: Avhengighetsinjeksjon, aspektorientert programmering (AOP), abstraksjon av data og ASP.NET integrasjon. Autofac: Det mest populære avhengighetsinjeksjons- og IOC-rammeverket, lett og høyytelses, praktisk talt ikke-påtrengende for prosjektkoden. PostSharp: Implementerer statisk AOP-kryssing av bekymringer, er enkel å bruke, kraftig, og krever ingen endringer i metoden for målavskjæring. Ninject: Et IOC-rammeverk for avhengighetsinnsprøytning basert på .NET, lett og åpen kildekode Flere ofte brukte ORM-rammeverk: EF (ADO.NET Entity Framework): Et ORM-rammeverk utviklet av Microsoft basert på ADO.NET. Nhibernate: Et lett ORM-rammeverk for .NET-miljøer. SqlMapper.cs: En generell C#-databasetilgang klasse for små prosjekter. AutoMapper: Et populært objektkartleggingsrammeverk som reduserer mye hardkoding, er kompakt og fleksibelt, og har akseptabel ytelse. SubSonic: Et utmerket åpen kildekode ORM-kartleggingsrammeverk som tilbyr en kodegenerator som møter dine behov. FluentData: Et åpen kildekode Fluent API-basert kjedet ORM-lettvektsrammeverk. Dapper: Lettvekts, høyytelses, basert på EMIT-generert ORM-rammeverk. EmitMapper: Et høyytelses ORM-rammeverk som dynamisk genererer IL-kode gjennom EMIT under kjøring, i stedet for å bruke en refleksjonsmekanisme. Format- og datatypekonvertering Newtonsoft.Json: Det mest populære JSON-serialiseringsbiblioteket som for tiden er i .NET-utvikling, og danner grunnlaget for den nye versjonen av WebApi-biblioteket. System.JSON.dll: Microsofts egen JSON-serialiseringskomponent (må lastes ned separat) DataContractJsonSerializer og DataContractXmlSerializer: Serializere brukt av Microsoft i WCF. Javascrip{filter}tSerializer: Microsofts standard JSON-formattering for WEB-utviklere. iTextSharp, PDFsharp og PDF.NET: Gjennom. .NET for å behandle og generere PDF-dokumenter. SharpZipLib.dll: Gratis og åpen kildekode ZIP- og GZIP-fildekomprimeringskomponenter. Math.NET: Sterke matematiske operasjoner, kalkulus, løsning av ligninger og vitenskapelige operasjoner. DocX: Ingen grunn til å installere Word-programvare, kjør Word-filer gjennom C#. SharpSerializer: Åpen kildekode XML og binær, JSON, komprimerings- og optimaliseringsrammeverk. Reflekterende og dynamisk språk Clay-dynamikk: Det åpne dynamiske rammeverket lar deg lage objekter i form av javascrip{filtering}t. ExposedObject: Få tilgang til private medlemmer utenfor klassen på en dynamisk språklig måte. PrivateObject: En klasse i Microsofts enhetstestingsrammeverk som er praktisk for å kalle private medlemmer av klassen eksternt. Plattformuavhengige og kjøretidsløsninger MONO.NET: Plattformuavhengig. .NET-kjøretidsmiljø, noe som gjør .NET plattformuavhengig drift mulig. DotGnu Portable.NET: Plattformuavhengig kjøretid lik MONO.NET. Phalanger: Kompilering av PHP til .NET muliggjør interoperabilitet mellom PHP og .NET. VMDotNet: .NET-kjøretiden brukt av China Mobile Feixin. Unity3D: Microsofts sterke støtte for C# og Javascrips plattformuavhengige spillutviklingsrammeverk. Cassini, IIS Express og Cassinidev: Åpen kildekode ASP.NET kjøringsmiljøer. Katana: Microsofts ikke-IIS boarding ASP.NET og MVC basert på OWIN-spesifikasjonen. IKVM.NET: Basert på. .NET er en virtuell JAVA-maskin som lar JAVA kjøre oppå .NET. Webutvikling og design Jumony Core: En HTML-motor utviklet basert på .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll og HtmlAgilityPack.dll: Rammeverk som parser og behandler HTML-dokumenter. Javascrip{filtering}t.NET og Clearscrip{filtering}t (produsert av Microsoft): Basert på . .NET utviklet Javascrip{filter}t-motoren. NCrawler: En åpen kildekode webcrawler for sin HTML-prosesseringsmotor, htmlagilitypack. AntiXSS: Microsofts offisielle åpne kildekode-bibliotek for å forhindre cross-site XSS-skriptinntrengningsangrep, som koder innhold gjennom en hvitelistemekanisme. YUICompressor.NET, Microsoft Ajax Minifier og Google Closure Compiler: JavaScrip og CSS Compressor. NancyFx: er et fint, lettvekts, åpen kildekode-rammeverk for .NET WEB. Hvis du vil lage en enkel nettapplikasjon raskt. AspNetPager: Et velkjent ASP.NET personsøkingskontroll i Kina, som støtter flere personsøkingsmetoder. NOPI.dll: Plugin for eksport av Excel-rapporter (basert på Microsoft OpenXml-implementasjon) (nopi.css.dl, formatert via css) Enterprise Library: Microsofts beste praksis-komponent for utvikling av applikasjoner på bedriftsnivå. PowerCollections: En høynivå åpen kildekode-samling skrevet av en utenlandsk sjef. Mobilt Internett og skybasert databehandling PushSharp: Send meldinger til ulike mobilplattformer via .NET. Mono for Android: Bruk. .NET-språkutvikling Android-applikasjon: MonoTouch: Utvikle IOS-applikasjoner i .NET-språket. PhoneGap og AppCan: Plattformuavhengige HTML5-baserte mobile utviklingsplattformer. Cordova: Et åpen kildekode-prosjekt etter at PhoneGap bidro til Apache, det er kjernemotoren som driver PhoneGap. Nettverkskommunikasjon og nettverksprotokoller SuperSocket: Et lett og skalerbart socket-utviklingsrammeverk basert på .NET. SuperWebSocket: Implementerer TML5 WebSocket-rammeverket via .NET. XProxy: Den grunnleggende agentassemblen som støtter plugins, med innebygd NAT, kryptering og dekryptering, reverse, direkte og indirekte proxyer. Grafikk- og bildebehandlingsrammeverk Paint.NET: Basert på. .NET er et kompakt, fleksibelt og kraftig åpen kildekode-prosjekt for grafikkbehandling. Imagemagick.NET: Innkapsling av den åpne kildekode-bildebehandlingskomponenten Imagemagick i C#. Skimpt: Åpen kildekode skjermbildeprogramvare basert på .NET. ImageGlue.NET: Kommersielle bildebehandlingskomponenter har en lang liste over støttede formater. Sprite- og bildeoptimaliseringsrammeverk: Microsoft CSS Wizard, multi-bilde som kombinerer et stort bilde og CSS-stil. Skrivebordsapplikasjonsrammeverk DevExpress: Et verdenskjent bibliotek med UI-kontroller for skrivebordsapplikasjoner. Prism: MVVM-rammeverket utviklet av Microsoft for WPF og Silverlight, som skiller komplekse forretningsfunksjoner og UI-kobling gjennom ideen om funksjonell modularitet. WPFToolkit og Fluent Ribbon Control Suite: Utvikle Office-stil Ribbon-menyer. Testing og ytelsesevaluering Faker.Net: Et rammeverk for å generere store mengder testdata. Nunit: Et lettvekts enhetstestingsrammeverk. Moq: Et veldig populært mock-rammeverk som støtter LINQ, fleksibelt og høyytelses. xUnit: Et bedre enhetstestingsrammeverk enn NUnit, en oppgradert versjon av Nunit-rammeverket. MiniProfiler og Glimpse: To MVC-baserte rammeverk for overvåking av ytelseshendelser. Transaksjons- og distribuert transaksjonsstøtte KtmIntegration: En transaksjonell åpen kildekode-klasse som støtter NTFS-filsystemet. NET Transactional File Manager: Lagt til transaksjonsstøtte for filsystemoperasjoner (kopier, flytt og sletting). Ordsegmentering, fulltekstsøk og søkemotor Lucene.net: Et populært høyytelses fulltekstindeksbibliotek som kan brukes til å tilby kraftige søkefunksjoner for alle slags informasjon. Lucene.Net.Analysis.PanGu: Støtter den nyeste versjonen av Pangu Chinese segmenteringsutvidelsesbiblioteket Lucene.Net. Organisering av datavalideringskomponent FluentValidation for . NET: Flytende grensesnittverifiseringskomponent basert på LINQ-uttrykksmetodekjede. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Microsoft Enterprise Librarys valideringsprogramblokk. CuttingEdge.Conditions: En kontraktprogrammeringskomponent basert på Fluent-grensesnittmetoden. DotNetOpenAuth: Gjør det mulig for nettsteder å støtte autentisering med OpenID, OAuth, InfoCard og mer. Åpen kildekode-kartstatistikkkontroll: Visifire: Et veldig godt sett med WPF-diagramkontroller som støtter 3D-tegning, kurver, polylinjer, sektorer, ringer og trapes. SparrowToolkit: Et sett med WPF-diagramkontroller som støtter tegning av dynamiske kurver, inkludert oscilloskoper, CPU-bruk og bølgeformer. DynamicDataDisplay: Microsoft åpen kildekode WPF dynamiske grafer, linjediagrammer, boblediagrammer og varmekart.
Meldingskøkategorier kan utvides, som Kafka, som er et distribuert, publiser/abonner-basert meldingssystem. De viktigste designmålene er som følger: Meldingspersistens gis i form av tidskompleksitet O(1), og tilgangsytelse med konstant tidskompleksitet kan garanteres selv for data over terabyte. Høy gjennomstrømning. Selv på svært rimelige kommersielle maskiner kan den støtte overføring av mer enn 100 000 meldinger per sekund på én enkelt maskin. Den støtter meldingspartisjonering og distribuert forbruk mellom Kafka-servere, og sikrer sekvensiell overføring av meldinger i hver partisjon. Den støtter både offline databehandling og sanntidsdatabehandling. Skaler ut: Støtt horisontal ekspansjon på nett. RabbitMQ RabbitMQ er en åpen kildekode-meldingskø skrevet i Erlang som støtter mange protokoller: AMQP, XMPP, SMTP, STOMP, derfor er den svært tungvekts og mer egnet for utvikling på bedriftsnivå. Samtidig implementeres meglerarkitekturen, noe som betyr at meldinger først settes i kø i sentralkøen når de sendes til klienten. Det finnes god støtte for ruting, lastbalansering eller datapersistens. Redis Redis er en NoSQL-database basert på nøkkel-verdi-par, og den utvikles og vedlikeholdes aktivt. Selv om det er et nøkkelverdi-databaselagringssystem, støtter det MQ-funksjonalitet selv, så det kan brukes som en lettvektskøtjeneste. For onboarding og ut-kø-operasjoner for RabbitMQ og Redis, 1 million ganger hver, og kjøretiden registreres hver 100 000 ganger. Testdataene er delt inn i fire forskjellige størrelser: 128 byte, 512 byte, 1K og 10K. Eksperimentell tabell: Når man blir med i teamet, er ytelsen til Redis høyere enn til RabbitMQ når datasammenligningen er liten, og hvis datastørrelsen overstiger 10K, er Redis uutholdelig treg. Da Redis forlot teamet, viste han svært god ytelse uansett datastørrelse, mens RabbitMQs prestasjon var mye lavere enn Redis'. ZeroMQ ZeroMQ hevder å være det raskeste systemet for meldingskøer, spesielt for scenarier med høy gjennomstrømning. ZeroMQ kan implementere avanserte/komplekse køer som RabbitMQ ikke er god på, men utviklere må kombinere flere tekniske rammeverk alene, og den tekniske kompleksiteten er en utfordring for vellykket anvendelse av denne MQ-en. ZeroMQ har en unik ikke-mellomvare-modus hvor du ikke trenger å installere og kjøre en meldingsserver eller mellomvare, fordi applikasjonen din vil spille denne serverrollen. Alt du trenger å gjøre er å referere til ZeroMQ-biblioteket, som kan installeres med NuGet, og du kan gjerne sende meldinger mellom applikasjoner. ZeroMQ tilbyr imidlertid kun ikke-persistente køer, noe som betyr at hvis den går ned, vil data gå tapt. Blant dem bruker Twitters Storm-versjon før 0.9.0 ZeroMQ som overføring av datastrømmer som standard (Storm støtter både ZeroMQ og Netty som overføringsmodul fra versjon 0.9). ActiveMQ ActiveMQ er et delprosjekt under Apache. På samme måte som ZeroMQ muliggjør det køer med agent- og peer-to-peer-teknologi. Samtidig, på samme måte som RabbitMQ, kan det effektivt implementere avanserte applikasjonsscenarier med en liten mengde kode. Kafka/Jafka Kafka er et underprosjekt av Apache, et høyytelses distribuert publish/subscribe-meldingskøsystem på tvers av språk, og Jafka er inkubert oppå Kafka, som er en oppgradert versjon av Kafka. Den har følgende egenskaper: rask persistens, som kan lagre meldinger under systemoverhead på O(1); Høy gjennomstrømning, som kan nå en gjennomstrømningshastighet på 10W/s på en vanlig server; Fullstendig distribuerte systemer, Broker, Producer og Consumer støtter alle distribuert nativt og realiserer automatisk lastbalansering; Støtter parallell lasting av Hadoop-data, som er en levedyktig løsning for loggdata og offline analysesystemer som Hadoop, men med begrensningene ved sanntidsbehandling. Kafka forener online og offline meldingsbehandling gjennom Hadoops parallelle lastemekanisme. Apache Kafka er et svært lett meldingssystem sammenlignet med ActiveMQ, og i tillegg til svært god ytelse er det også et distribuert system som fungerer godt. |