Siitä lähtien kun opin. .NET, tyylikäs ohjelmointityyli, erittäin yksinkertainen skaalautuvuus, riittävän tehokkaat kehitystyökalut ja hyvin pieni oppimiskäyrä ovat herättäneet minussa vahvan kiinnostuksen tätä alustaa kohtaan, ja olen myös kerännyt avoimen lähdekoodin komponentteja työhöni ja opintoihini. Hajautetun välimuistin kehys: Microsoft Velocity: Microsoftin oma hajautetun välimuistipalvelun kehys. Memcahed: Hajautettu välimuistijärjestelmä, jota monet verkkosivustot käyttävät tällä hetkellä parantaakseen verkkosivustojen pääsynopeutta. Redis: on korkean suorituskyvyn KV-tietokanta. Sen ulkonäkö kompensoi suurelta osin Memcachedin puutteita joiltain osin. EnyimMemcached: Access Memcachedin paras .NET-asiakasohjelma, jossa on hyvä hajautettu ekvalisointialgoritmi. Avoin lähdekoodi. .NET-järjestelmän suositus: OXITE: Microsoft ASP.NET MVC:n tapausesitysviitekehyksen. PetShop: Microsoft ASP.NET lemmikkikauppa. Orchard: Ulkomainen MVC:n avoimen lähdekoodin blogijärjestelmä. SSCLI: Microsoftin avoimen lähdekoodin ohjelmisto NET Framework 2.0 -aikakaudella. DasBlog: ASP.net-pohjainen blogijärjestelmä ulkomailla. BlogEngine.NET: Ilmainen ja avoimen lähdekoodin blogijärjestelmä ulkomailla. Dotnetnuke.NET: Erittäin hyvä joukko ASP.NET-pohjaisia avoimen lähdekoodin portaaliohjelmia. Discuz.NET: Kotimainen avoimen lähdekoodin foorumiyhteisöjärjestelmä. nopCommerce ja Aspxcommerce: Joukko korkealaatuisia avoimen lähdekoodin B2C-verkkosivustojärjestelmiä ulkomailla. JumboTCMS ja DTCMS: Kaksi avoimen lähdekoodin verkkosivujen hallintajärjestelmää Kiinassa: Poikkeusten käsittelyn lokiminen: Log4Net.dll: Kevyt, ilmainen ja avoimen lähdekoodin .NET-lokikehys. Enterprise Library Log Application Black: Microsoft Enterprise Library -loki. Elmah: Toteuttaa suosituimman ASP.NET sovelluksen poikkeuslokikehyksen. NLog: on yksinkertainen ja joustava lokikirjasto, jolla on parempi suorituskyky kuin Log4Netillä ja käytössä sekä ylläpidossa matala vaikeusaste. Tietoa NoSQL-tietokannoista: Mongodb: Hajautettu tiedostorekisteritietokanta. Membase: Perheen uusi raskaansarjan jäsen. Automaattinen tehtävien aikataulutuksen kehys Quartz.NET: Avoimen lähdekoodin työaikataulutus ja automatisoitu tehtäväkehys. Topshelf: Toinen avoimen lähdekoodin kehys Windows-palveluiden luomiseen Riippuvuuden injektiointi IOC-konttikehys: Unity: Microsoftin patterns & practicest -tiimin kehittämä IOC-riippuvuuden injektiokehys, joka tukee AOP:n poikkileikkaavia kysymyksiä. MEF (Managed Extensibility Framework): on kehys .NET-sovellusten laajentamiseen ja plug-in-järjestelmien kehittämisen mahdollistamiseen. Spring.NET: Riippuvuuden injektio, aspektikeskeinen ohjelmointi (AOP), tiedon saatavuuden abstraktio ja ASP.NET integraatio. Autofac: Suosituin riippuvuusinjektio ja IOC-kehys, kevyt ja suorituskykyinen, käytännössä ei-tunkeileva projektikoodiin. PostSharp: Toteuttaa staattisen AOP:n poikkileikkaamisen huolenaiheista, on helppokäyttöinen, tehokas eikä vaadi muutoksia kohteen sieppausmenetelmään. Ninject: Riippuvuuden injektioon perustuva IOC-kehys, joka perustuu .NET-kevyesti ja avoimen lähdekoodin pohjalta Useita yleisesti käytettyjä ORM-kehyksiä: EF (ADO.NET Entity Framework): Microsoftin kehittämä ORM-kehys, joka perustuu ADO.NET. Nhibernate: Kevyt ORM-kehys .NET-ympäristöihin. SqlMapper.cs: Yleinen C#-tietokantakurssi pienille projekteille. AutoMapper: Suosittu objektikartoituskehys, joka vähentää paljon kovakoodausta, on kompakti ja joustava sekä tarjoaa hyväksyttävän suorituskyvyn. SubSonic: Erinomainen avoimen lähdekoodin ORM-kartoituskehys, joka tarjoaa koodigeneraattorin, joka vastaa tarpeitasi. FluentData: Avoimen lähdekoodin Fluent-API-pohjainen ketjutettu kysely ORM-kehys. Dapper: Kevyt, suorituskykyinen, perustuu EMIT-generoimaan ORM-kehykseen. EmitMapper: Korkean suorituskyvyn ORM-kehys, joka generoi IL-koodia dynaamisesti EMIT:n kautta ajonaikaisesti, eikä käyttäisi heijastusmekanismia. Formaatti- ja tietotyyppimuunnos Newtonsoft.Json: Suosituin JSON-sarjallinen kirjasto, joka on tällä hetkellä .NET-kehityksessä ja tarjoaa perustan WebAPI-kirjaston uudelle versiolle. System.JSON.dll: Microsoftin oma JSON-sarjallistamiskomponentti (täytyy ladata erikseen) DataContractJsonSerializer ja DataContractXmlSerializer: Microsoftin WCF:ssä käyttämät serializaattorit. Javascrip{filter}tSerializer: Microsoftin oletus-JSON-formmatter WEB-kehittäjille. iTextSharp, PDFsharp ja PDF.NET: Läpi. .NET PDF-dokumenttien käsittelyyn ja tuottamiseen. SharpZipLib.dll: Ilmaiset ja avoimen lähdekoodin ZIP- ja GZIP-tiedostojen purkukomponentit. Math.NET: Vahvat matemaattiset operaatiot, laskenta, yhtälöiden ratkominen ja tieteelliset operaatiot. DocX: Ei tarvitse asentaa Word-ohjelmistoa, käyttää Word-tiedostoja C#:n kautta. SharpSerializer: Avoimen lähdekoodin XML ja binääri, JSON, pakkaus- ja optimointikehys. Reflektiivinen ja dynaaminen kieli Clay dynamic: Avoimen lähdekoodin dynaaminen kehys mahdollistaa objektien luomisen muodossa javascrip{filtering}t. ExposedObject: Pääsee luokasta ulkopuolisiin yksityisjäseniin dynaamisella kielellä. PrivateObject: Luokka Microsoftin yksikkötestauskehyksessä, joka on kätevä kutsua luokan yksityisiä jäseniä ulkoisesti. Monialustaiset ja ajonaikaiset ratkaisut MONO.NET: Monialustainen. .NET-ajonaikainen ympäristö, mikä mahdollistaa .NETin monialustaisen toiminnan. DotGnu Portable.NET: Monialustainen ajonaika, samankaltainen kuin MONO.NET. Phalanger: PHP:n kääntäminen .NET:ksi mahdollistaa PHP:n ja .NETin yhteentoimivuuden. VMDotNet: China Mobile Feixinin käyttämä .NET-ajonaika. Unity3D: Microsoftin vahva tuki C#:lle ja Javascripin monialustaiselle pelikehitykselle. Cassini, IIS Express ja Cassinidev: Avoimen lähdekoodin ASP.NET suoritusympäristöt. Katana: Microsoftin ei-IIS-boarding ASP.NET ja MVC, jotka perustuvat OWIN-määrittelyyn. IKVM.NET: Perustuen. .NET on JAVA-virtuaalikone, joka mahdollistaa JAVA:n ajamisen .NET:n päällä. WEB-kehitys ja suunnittelu Jumony Core: HTML-moottori, joka on kehitetty .NET-pohjalta. Microsoft.mshtml.dll, Winista.HtmlParser.dll ja HtmlAgilityPack.dll: Kehykset, jotka jäsentävät ja käsittelevät HTML-dokumentteja. Javascrip{filtering}t.NET ja Clearscrip{filtering}t (Microsoftin tuottama): Perustuu . .NET kehitti Javascrip{filter}t-moottorin. NCrawler: Avoimen lähdekoodin verkkoindeksointi HTML-prosessointimoottorilleen, htmlagilitypackille. AntiXSS: Microsoftin virallinen avoimen lähdekoodin kirjasto, joka estää XSS-skriptihyökkäyksiä sivustojen yli, joka koodaa sisällön valkoisen listan mekanismin kautta. YUICompressor.NET, Microsoft Ajax Minifier ja Google Closure -kääntäjä: JavaScrip ja CSS Compressor. NancyFx: on mukava kevyt avoimen lähdekoodin .NET WEB -kehys. Jos haluat nopeasti tehdä yksinkertaisen WEB-sovelluksen. AspNetPager: Tunnettu ASP.NET sivutusohjaus Kiinassa, joka tukee useita sivutusmenetelmiä. NOPI.dll: Lisäosa Excel-raporttien vientiin (perustuu Microsoft OpenXml-toteutukseen) (nopi.css.dl-tyylinen css:n kautta) Enterprise Library: Microsoftin paras käytäntö yritystason sovelluskehitykseen. PowerCollections: Korkean tason avoimen lähdekoodin kokoelma, jonka on kirjoittanut ulkomainen mahtava. Mobiiliinternet ja pilvipalvelut PushSharp: Työnnä viestejä eri mobiilialustoille .NET:n kautta. Mono Androidille: Käytä. .NET-kielikehitys Android-sovellus: MonoTouch: Kehitä IOS-sovelluksia .NET-kielellä. PhoneGap ja AppCan: Monialustaiset HTML5-pohjaiset mobiilikehitysalustat. Cordova: Avoimen lähdekoodin projekti sen jälkeen, kun PhoneGap osallistui Apacheceen, se on PhoneGapin ydinmoottori. Verkkoviestintä ja verkkoprotokollat SuperSocket: Kevyt ja skaalautuva socket-kehityskehys, joka perustuu .NET-pohjaan. SuperWebSocket: Toteuttaa TML5 WebSocket -kehyksen .NET:n kautta. XProxy: Perusagenttikokoonpano, joka tukee lisäosia, joissa on sisäänrakennettu NAT, salaus ja purku, käänteinen, suora ja epäsuora välityspalvelin. Grafiikka- ja kuvankäsittelykehykset Paint.NET: Perustuen. .NET on kompakti, joustava ja tehokas grafiikkaprosessointiin keskittyvä avoimen lähdekoodin projekti. Imagemagick.NET: Avoimen lähdekoodin kuvankäsittelykomponentti Imagemagickin kapselointi C#:lla. Skimpt: Avoimen lähdekoodin kuvakaappausohjelmisto, joka perustuu .NET-pohjalle. ImageGlue.NET: Kaupallisilla kuvankäsittelykomponenteilla on laaja lista tuettuja formaatteja. Sprite- ja kuvaoptimointikehys: Microsoft CSS Wizard, monikuva, joka yhdistää suuren kuvan ja CSS-tyylin. Työpöytäsovelluskehys DevExpress: Maailmanlaajuisesti tunnettu käyttöliittymäkontrollikirjasto työpöytäsovelluksiin. Prism: Microsoftin kehittämä MVVM-kehys WPF:lle ja Silverlightille, joka erottaa monimutkaiset liiketoimintatoiminnot ja käyttöliittymän kytkennän toiminnallisen modulaarisuuden idean kautta. WPFToolkit ja Fluent Ribbon Control Suite: Kehitä toimistotyylisiä nauhavalikoita. Testaus ja suorituskyvyn arviointi Faker.Net: Kehys suurten testidatamäärien tuottamiseen. Nunit: Kevyt yksikkötestauskehys. Moq: Erittäin suosittu Mock-kehys, joka tukee LINQ:ta, joustavaa ja suorituskykyä. xUnit: Parempi yksikkötestauskehys kuin NUnit, päivitetty versio Nunit-kehyksestä. MiniProfiler ja Glimpse: Kaksi MVC-pohjaista suorituskykytapahtumien seurantakehystä. Transaktionaalinen ja hajautettu transaktiotuki KtmIntegration: Transaktionaalinen avoimen lähdekoodin luokka, joka tukee NTFS-tiedostojärjestelmää. NET Transactional File Manager: Lisätty transaktiotuki tiedostojärjestelmän operaatioille (kopiointi, siirto ja poisto). Sanansegmentointi, kokotekstihaku ja hakukone Lucene.net: Suosittu suorituskykyinen täystekstiindeksikirjasto, jota voidaan käyttää tarjoamaan tehokkaita hakutoimintoja kaikenlaisille tiedoille. Lucene.Net.Analysis.PanGu: Tukee Pangu Chinese -segmentointilaajennuskirjaston uusinta versiota Lucene.Net. Tietojen validointikomponentin organisaatio FluentValidation . NET: Sujuva rajapinnan varmistuskomponentti, joka perustuu LINQ-lausekkeen menetelmäketjuun. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Microsoft Enterprise Libraryn validointiohjelman lohko. CuttingEdge.Conditions: Sopimusohjelmointikomponentti, joka perustuu Fluent-rajapintamenetelmään. DotNetOpenAuth: Mahdollistaa verkkosivustojen tukevan tunnistautumista OpenID:llä, OAuthilla, InfoCardilla ja muilla. Avoimen lähdekoodin kaavioiden tilastokontrollit: Visifire: Erittäin hyvä sarja WPF-karttaohjaimia, jotka tukevat 3D-piirtämistä, käyriä, polylinjoja, sektoreita, renkaita ja trapetsikuvia. SparrowToolkit: Joukko WPF-karttaohjaimia, jotka tukevat dynaamisten käyrien piirtämistä, mukaan lukien oskilloskoopit, suorittimen käyttö ja aaltomuodot. DynamicDataDisplay: Microsoftin avoimen lähdekoodin WPF-dynaamiset graafit, viivakaaviot, kuplakaaviot ja lämpökartat.
Viestijonon kategorioita voidaan laajentaa, kuten Kafka, joka on hajautettu, julkaisemiseen/tilaamiseen perustuva viestintäjärjestelmä. Pääasialliset suunnittelutavoitteet ovat seuraavat: Viestin pysyvyys saadaan aikamonimutkaisuuden O(1) muodossa, ja vakioaikainen käyttöoikeus voidaan taata jopa yli teratavujen datalle. Korkea läpimeno. Jopa erittäin edullisilla kaupallisilla koneilla se pystyy tukemaan yli 100 000 viestin lähettämistä sekunnissa yhdellä koneella. Se tukee viestien osiointia ja hajautettua kulutusta Kafka-palvelimien välillä sekä varmistaa viestien peräkkäisen siirron kussakin osiossa. Se tukee sekä offline-datan käsittelyä että reaaliaikaista käsittelyä. Laajenna: Tue verkkolaajennusta horisontaalisesti. RabbitMQ RabbitMQ on avoimen lähdekoodin viestijono, joka on kirjoitettu Erlangilla ja tukee monia protokollia: AMQP, XMPP, SMTP, STOMP, minkä vuoksi se on erittäin raskas ja soveltuvampi yritystason kehitykseen. Samaan aikaan on toteutettu välittäjäarkkitehtuuri, mikä tarkoittaa, että viestit jonotetaan ensin keskusjonossa, kun ne lähetetään asiakkaalle. Reititykseen, kuormantasaukseen tai datan pysyvyyteen on hyvä tuki. Redis Redis on NoSQL-tietokanta, joka perustuu avain-arvopareihin, ja sitä kehitetään ja ylläpidetään aktiivisesti. Vaikka se on avainarvo-tietokantatallennusjärjestelmä, se tukee MQ-toiminnallisuutta itsessään, joten sitä voidaan käyttää kevyenä jonopalveluna. RabbitMQ:n ja Redisin käyttöönotto- ja ulkojonottotoiminnoissa kumpikin miljoona kertaa, ja suoritusaika kirjataan joka 100 000 kerta. Testidata on jaettu neljään eri kokoon: 128Bytes, 512Bytes, 1K ja 10K. Kokeellinen taulukko: Tiimiin liittyessä Redisin suorituskyky on korkeampi kuin RabbitMQ:n, kun datavertailu on pieni, ja jos datakoko ylittää 10K, Redis on sietämättömän hidas. Lähdettyään tiimistä Redis osoitti erittäin hyvää suoritusta datan koosta riippumatta, kun taas RabbitMQ:n suorituskyky oli paljon heikompi kuin Redisin. ZeroMQ ZeroMQ väittää olevansa nopein viestijonotusjärjestelmä, erityisesti suuren läpimenon kysyntätilanteissa. ZeroMQ voi toteuttaa edistyneitä/monimutkaisia jonoja, joissa RabbitMQ ei ole hyvä, mutta kehittäjien täytyy yhdistää useita teknisiä kehyksiä yksinään, ja tekninen monimutkaisuus on haaste tämän MQ:n onnistuneelle sovellukselle. ZeroMQ:lla on ainutlaatuinen ei-middleware-tila, jossa sinun ei tarvitse asentaa ja ajaa viestipalvelinta tai middlewarea, koska sovelluksesi toimii tässä palvelinroolissa. Tarvitsee vain viitata ZeroMQ-kirjastoon, jonka voi asentaa NuGetin avulla, ja voit mielellään lähettää viestejä sovellusten välillä. ZeroMQ tarjoaa kuitenkin vain ei-pysyviä jonoja, mikä tarkoittaa, että jos jono menee alas, data katoaa. Näistä Twitterin Storm-versio ennen versiota 0.9.0 käyttää oletuksena ZeroMQ:ta datavirtojen siirtona (Storm tukee sekä ZeroMQ:ta että Nettyä siirtomoduulina versiosta 0.9 alkaen). ActiveMQ ActiveMQ on Apache-alaisprojekti. Samoin kuin ZeroMQ, se mahdollistaa jonot agentti- ja vertaisteknologialla. Samaan aikaan, samoin kuin RabbitMQ, se pystyy tehokkaasti toteuttamaan edistyneitä sovellusskenaarioita pienellä määrällä koodia. Kafka/Jafka Kafka on Apachen, korkean suorituskyvyn hajautetun julkaise/tilaa-viestijonojärjestelmän eri kielten välillä, alaprojekti, ja Jafka on inkuboitu Kafkan päälle, joka on päivitetty versio Kafkasta. Sillä on seuraavat ominaisuudet: nopea pysyvyys, joka voi jatkaa viestejä järjestelmän O(1)-ylikuormituksen alaisena; Korkea läpäisykyky, joka voi saavuttaa 10 W/s nopeuden tavallisella palvelimella; Täysin hajautettu järjestelmä, välittäjä, tuottaja ja kuluttaja tukevat kaikki natiivisti hajautettua ja automaattisesti toteuttavat kuormantasapainotuksen; Tukee Hadoop-datan rinnakkaista latausta, mikä on toimiva ratkaisu lokidatalle ja offline-analyysijärjestelmille, kuten Hadoopille, mutta reaaliaikaisen käsittelyn rajoituksin. Kafka yhdistää online- ja offline-viestinkäsittelyn Hadoopin rinnakkaislatausmekanismin avulla. Apache Kafka on erittäin kevyt viestijärjestelmä verrattuna ActiveMQ:hon, ja hyvän suorituskyvyn lisäksi se on myös hajautettu järjestelmä, joka toimii hyvin. |