Odkar se je to naučil. .NET, eleganten programerski slog, izjemno preprosta razširljivost, dovolj zmogljiva razvojna orodja in zelo majhna učna krivulja so me močno pritegnili k tej platformi, poleg tega pa sem v svojem delu in študiju nabral nekaj odprtokodnih komponent. Okvir za distribuirano predpomnjenje: Microsoft Velocity: Microsoftov lasten okvir za porazdeljene storitve predpomnilnika. Memcahed: Porazdeljen sistem predpomnjenja, ki ga trenutno uporablja veliko spletnih strani za izboljšanje dostopa do spletnih strani. Redis: je visoko zmogljiva podatkovna baza KV. Njegov videz v veliki meri nadomesti pomanjkljivosti Memcacheda na nekaterih področjih. EnyimMemcached: Dostop do najboljšega .NET odjemalca Memcached z dobrim algoritmom za porazdeljeno izenačevanje. Odprta koda. Priporočilo za .NET sistem: OXITE: Microsoft ASP.NET okvir za predstavitev primerov MVC. PetShop: Microsoftova ASP.NET trgovina s hišnimi ljubljenčki. Orchard: Tuji odprtokodni blog sistem MVC. SSCLI: Microsoftova odprtokodna koda v obdobju NET Framework 2.0. DasBlog: Blogerski sistem v tujini, ki temelji na ASP.NET. BlogEngine.NET: Brezplačen in odprtokodni blogerski sistem v tujini. Dotnetnuke.NET: Zelo dober nabor odprtokodnih portalnih programov na osnovi ASP.NET. Discuz.NET: Domači odprtokodni forum skupnostni sistem. nopCommerce in Aspxcommerce: Nabor visokokakovostnih odprtokodnih B2C spletnih sistemov v tujini. JumboTCMS in DTCMS: Dva odprtokodna sistema za upravljanje spletnih strani na Kitajskem: Obravnava izjem pri beleženju: Log4Net.dll: Lahkoten, brezplačen in odprtokodni .NET okvir za beleženje. Aplikacija za dnevnik podjetniške knjižnice črna: Beleženje Microsoft Enterprise knjižnice. Elmah: Implementira najbolj priljubljen okvir za beleženje izjem ASP.NET aplikacij. NLog: je preprosta in prilagodljiva knjižnica za beleženje podatkov z višjo zmogljivostjo kot Log4Net ter z nizko zahtevnostjo uporabe in vzdrževanja. O NoSQL bazah podatkov: Mongodb: Porazdeljena podatkovna baza za shranjevanje datotek. Membase: Nov težkokategornik v družini. Okvir za avtomatizirano razporejanje nalog Quartz.NET: odprtokodno razporejanje nalog in avtomatizirani okvir za naloge. Topshelf: Še en odprtokodni okvir za ustvarjanje Windows storitev IOC okvir za vbrizgavanje odvisnosti: Unity: Okvir za vbrizgavanje odvisnosti IOC, ki ga je razvila Microsoftova ekipa za vzorce in prakse ter podpira presečne zahteve AOP. MEF (Managed Extensibility Framework): je okvir za razširitev .NET aplikacij in omogočanje razvoja vtičnikov. Spring.NET: Vbrizgavanje odvisnosti, aspektno usmerjeno programiranje (AOP), abstrakcija dostopa do podatkov in integracija ASP.NET. Autofac: Najbolj priljubljen okvir za injekcijo odvisnosti in IOC, lahek in zmogljiv, praktično neškodljiv za projektno kodo. PostSharp: Implementira statično prečkanje AOP skrbi, je enostaven za uporabo, zmogljiv in ne zahteva sprememb v metodi prestrezanja ciljev. Ninject: IOC okvir za injekcijo odvisnosti, ki temelji na .NET lahkem in odprtokodnem Več pogosto uporabljenih ORM ogrodij: EF (ADO.NET Entity Framework): ORM ogrodje, ki ga je razvil Microsoft na podlagi ADO.NET. Nhibernate: Lahek ORM okvir za .NET okolja. SqlMapper.cs: Generični C# razred dostopa do podatkovnih baz za manjše projekte. AutoMapper: Priljubljen okvir za preslikavo objektov, ki zmanjša veliko trdega kodiranja, je kompakten in prilagodljiv ter ima sprejemljivo zmogljivost. SubSonic: Odličen odprtokodni ORM okvir za kartiranje, ki zagotavlja generator kode, prilagojen vašim potrebam. FluentData: Odprtokodni verižni ORM okvir za verižne poizvedbe na osnovi Fluent API. Dapper: Lahek, visoko zmogljiv, temelji na EMIT-generiranem ORM okviru. EmitMapper: Visoko zmogljiv ORM okvir, ki dinamično generira IL kodo prek EMIT med izvajanjem, namesto da bi uporabljal mehanizem refleksije. Pretvorba formatov in podatkovnih tipov Newtonsoft.json: Najbolj priljubljena JSON knjižnica za serializacijo, ki je trenutno v razvoju .NET in predstavlja osnovo za novo različico WebApi knjižnice. System.JSON.dll: Microsoftova lastna komponenta za serializacijo JSON (potrebno je prenesti ločeno) DataContractJsonSerializer in DataContractXmlSerializer: Serializatorji, ki jih Microsoft uporablja v WCF. Javascrip{filter}tSerializer: Microsoftov privzeti JSON formatter za WEB razvijalce. iTextSharp, PDFsharp in PDF.NET: Skozi. .NET za obdelavo in generiranje PDF dokumentov. SharpZipLib.dll: Brezplačne in odprtokodne komponente za dekompresijo datotek ZIP in GZIP. Math.NET: Močne matematične operacije, račun, reševanje enačb in znanstvene operacije. DocX: Ni potrebe po nameščanju Wordove programske opreme, upravljanju Word datotek preko C#. SharpSerializer: odprtokodni XML in binarni okvir za stiskanje in optimizacijo. Refleksivni in dinamični jezik Glinena dinamika: Odprtokodno dinamično ogrodje omogoča ustvarjanje objektov v obliki javascrip{filtering}t. ExposedObject: Dostop do zasebnih članov zunaj razreda na dinamičen jezikovni način. PrivateObject: Razred v Microsoftovem ogrodju za enotsko testiranje, ki je priročen za zunanje klice zasebnih članov razreda. Večplatformske in runtime rešitve MONO.NET: Večplatformsko. .NET okolje za izvajanje, ki omogoča delovanje .NET na več platformah. DotGnu Portable.NET: Večplatformski čas izvajanja podoben kot MONO.NET. Phalanger: Prevajanje PHP v .NET omogoča interoperabilnost PHP in .NET. VMDotNet: .NET runtime, ki ga uporablja China Mobile Feixin. Unity3D: Microsoftova močna podpora za C# in Javascripov večplatformni razvojni okvir za igre. Cassini, IIS Express in Cassinidev: odprtokodna okolja za izvajanje ASP.NET. Katana: Microsoftov ASP.NET vkrcanja brez IIS in prometnega prometa na podlagi specifikacije OWIN. IKVM.NET: Na osnovi. .NET je JAVA virtualni stroj, ki omogoča delovanje JAVA na vrhu .NET. Razvoj in oblikovanje spletnih strani Jumony Core: HTML pogon, razvit na osnovi .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll in HtmlAgilityPack.dll: Ogrodja, ki analizirajo in obdelujejo HTML dokumente. Javascrip{filtering}t.NET in Clearscrip{filtering}t (produkcija Microsoft): Na osnovi . .NET je razvil pogon Javascrip{filter}t. NCrawler: Odprtokodni spletni pajek za njegov HTML procesorski pogon, htmlagilitypack. AntiXSS: Microsoftova uradna odprtokodna knjižnica za preprečevanje napadov vdorov XSS skript med različnimi stranmi, ki vsebino kodira preko mehanizma za belo listo. YUICompressor.NET, Microsoft Ajax Minifier in Google Closure Compiler: JavaScrip in CSS kompresor. NancyFx: je prijeten, lahek odprtokodni .NET WEB okvir. Če želite hitro narediti preprosto spletno aplikacijo. AspNetPager: Znana ASP.NET kontrola straničenja na Kitajskem, ki podpira več načinov straničenja. NOPI.dll: Vtičnik za izvoz Excelovih poročil (temelji na implementaciji Microsoft OpenXml) (nopi.css.dl, oblikovan preko css) Enterprise Library: Microsoftova komponenta najboljših praks za razvoj aplikacij na ravni podjetij. PowerCollections: Visokonivojska odprtokodna zbirka, ki jo je napisal tuji izjemec. Mobilni internet in računalništvo v oblaku PushSharp: Potiskajte sporočila na različne mobilne platforme preko .NET. Mono za Android: Uporabi. Razvoj aplikacije za razvoj jezika .NET za Android: MonoTouch: Razvijajte IOS aplikacije v jeziku .NET. PhoneGap in AppCan: Večplatformske platforme za razvoj mobilnih aplikacij na osnovi HTML5. Cordova: Odprtokodni projekt po tem, ko je PhoneGap prispeval k Apacheu, je jedro pogona, ki poganja PhoneGap. Omrežna komunikacija in omrežni protokoli SuperSocket: Lahek in razširljiv razvojni okvir za sockete, ki temelji na .NET. SuperWebSocket: Implementira TML5 WebSocket ogrodje preko .NET. XProxy: Osnovna sestava agentov, ki podpira vtičnike, z vgrajenim NAT-om, šifriranjem in dešifriranjem, obratnimi, neposrednimi in posrednimi proxyji. Ogrodja za grafiko in obdelavo slik Paint.NET: Na osnovi. .NET je kompakten, prilagodljiv in zmogljiv odprtokodni projekt za obdelavo grafike. Imagemagick.NET: Enkapsulacija odprtokodne komponente za obdelavo slik Imagemagick v C#. Skimpt: Odprtokodna programska oprema za posnemanje posnetkov zaslona, ki temelji na .NET. ImageGlue.NET: Komercialne komponente za obdelavo slik imajo obsežen seznam podprtih formatov. Okvir za optimizacijo sličic in slik: Microsoft CSS Wizard, večslikovni slog, ki združuje veliko sliko in CSS slog. Namizno aplikacijsko ogrodje DevExpress: Svetovno znana knjižnica uporabniških kontrol za namizne aplikacije. Prism: MVVM ogrodje, ki ga je Microsoft razvil za WPF in Silverlight, ki ločuje kompleksne poslovne funkcije in povezovanje uporabniškega vmesnika z idejo funkcionalne modularnosti. WPFToolkit in Fluent Ribbon Control Suite: Razvijte menije Ribbon v slogu Office. Testiranje in ocenjevanje zmogljivosti Faker.Net: Okvir za generiranje velikih paketov testnih podatkov. Nunit: Lahki enotni testni okvir. Moq: Zelo priljubljen Mock okvir, ki podpira LINQ, prilagodljiv in visokozmogljiv. xUnit: Boljši okvir za enotno testiranje kot NUnit, nadgrajena različica Nunitovega ogrodja. MiniProfiler in Glimpse: Dva okvirja za spremljanje dogodkov uspešnosti, ki temeljita na MVC. Podpora transakcijskim in distribuiranim transakcijam KtmIntegration: Transakcijski odprtokodni razred, ki podpira datotečni sistem NTFS. NET Transactional File Manager: Dodana podpora transakcijam za operacije datotečnega sistema (kopiranje, premikanje in brisanje). Segmentacija besed, iskanje po celotnem besedilu in iskalniki Lucene.net: Priljubljena visokozmogljiva knjižnica za indeks polnega besedila, ki omogoča zmogljive iskalne funkcije za vse vrste informacij. Lucene.Net.Analysis.PanGu: Podpira najnovejšo različico Pangu kitajske razširitvene knjižnice za segmentacijo Lucene.Net. Organizacija komponent validacije podatkov FluentValidation za . NET: Komponenta za preverjanje tekočih vmesnikov, ki temelji na verigi metod izražanja LINQ. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Blok programa za validacijo Microsoft Enterprise Library. CuttingEdge.Conditions: Komponenta pogodbenega programiranja, ki temelji na metodi vmesnika Fluent. DotNetOpenAuth: Omogoča spletnim stranem podporo za avtentikacijo z OpenID, OAuth, InfoCard in drugimi. Nadzor statistike odprtokodnih grafov: Visifire: Zelo dober nabor WPF kontrol za karte, ki podpirajo 3D risanje, krivulje, polilinije, sektorje, obroče in trapeze. SparrowToolkit: Nabor kontrol za WPF karte, ki podpirajo risanje dinamičnih krivulj, vključno z osciloskopi, porabo procesorja in valovnimi oblikami. DynamicDataDisplay: Microsoftovi odprtokodni WPF dinamični grafi, linijski diagrami, mehurčki in toplotni zemljevidi.
Kategorije čakalnih vrst sporočil je mogoče razširiti, na primer Kafka, ki je distribuiran, na osnovi objave/naročnine sistem za sporočanje. Glavni oblikovalski cilji so naslednji: Obstojnost sporočil je zagotovljena v obliki časovne zahtevnosti O(1), dostopna zmogljivost s konstantno časovno zahtevnostjo pa je zagotovljena tudi za podatke nad terabajti. Visoka prepustnost. Tudi na zelo poceni komercialnih napravah lahko podpira prenos več kot 100.000 sporočil na sekundo na eni napravi. Podpira razdeljevanje sporočil in porazdeljeno porabo med Kafka strežniki ter zagotavlja zaporedni prenos sporočil v vsaki particiji. Podpira tako obdelavo podatkov brez povezave kot tudi obdelavo podatkov v realnem času. Razširitev obsega: Podprite spletno horizontalno širitev. RabbitMQ RabbitMQ je odprtokodna vrsta sporočil, napisana v Erlangu, ki podpira številne protokole: AMQP, XMPP, SMTP, STOMP, zato je zelo zahtevna in bolj primerna za razvoj na ravni podjetij. Hkrati je implementirana arhitektura posrednika, kar pomeni, da so sporočila najprej postavljena v osrednjo čakalno vrsto, ko so poslana odjemalcu. Dobro podpira usmerjanje, uravnoteženje obremenitve ali ohranjanje podatkov. Redis Redis je NoSQL podatkovna baza, ki temelji na parih ključ-vrednost in je aktivno razvijana ter vzdrževana. Čeprav gre za sistem za shranjevanje podatkovnih baz s ključno vrednostjo, podpira funkcionalnost MQ sam, zato se lahko uporablja kot lahka storitev čakalne vrste. Pri uvajanju in odhodu v čakalno vrsto RabbitMQ in Redis vsak milijonkrat, čas izvedbe pa se beleži vsakih 100.000-krat. Testni podatki so razdeljeni na štiri različne velikosti: 128 bajtov, 512 bajtov, 1K in 10K. Eksperimentalna tabela: Ko se pridružite ekipi, je zmogljivost Redisa višja kot pri RabbitMQ, kadar je primerjava podatkov majhna, in če velikost podatkov presega 10K, je Redis neznosno počasen. Ob odhodu iz ekipe je Redis pokazal zelo dobre rezultate ne glede na velikost podatkov, medtem ko je bil RabbitMQ precej nižji od Redisovega. ZeroMQ ZeroMQ trdi, da je najhitrejši sistem za čakalno vrsto sporočil, še posebej za scenarije z visoko prepustnostjo povpraševanja. ZeroMQ lahko implementira napredne/kompleksne vrste, v katerih RabbitMQ ni dober, vendar morajo razvijalci sami združiti več tehničnih okvirov, kar predstavlja izziv za uspešno uporabo tega MQ. ZeroMQ ima edinstven način brez vmesne programske opreme, kjer ni treba nameščati in zaganjati strežnika sporočil ali vmesne programske opreme, ker bo vaša aplikacija igrala to strežniško vlogo. Vse, kar morate storiti, je, da preprosto preverite knjižnico ZeroMQ, ki jo lahko namestite z NuGetom, in lahko brez težav pošiljate sporočila med aplikacijami. Vendar pa ZeroMQ zagotavlja le netrajne vrste, kar pomeni, da se ob izpadu izgubijo podatki. Med njimi Twitterjeva različica Storm pred različico 0.9.0 privzeto uporablja ZeroMQ za prenos podatkovnih tokov (Storm podpira tako ZeroMQ kot Netty kot prenosni modul od različice 0.9). ActiveMQ ActiveMQ je podprojekt pod okriljem Apache. Podobno kot ZeroMQ omogoča vrste z agentno in peer-to-peer tehnologijo. Hkrati lahko, podobno kot RabbitMQ, učinkovito implementira napredne aplikacijske scenarije z majhno količino kode. Kafka/Jafka Kafka je podprojekt Apache, visokozmogljivega distribuiranega sistema za objavljanje/naročanje sporočil v vrstnem redu sporočil med različnimi jeziki, Jafka pa je inkubirana na vrhu Kafke, ki je nadgrajena različica Kafke. Ima naslednje značilnosti: hitro vztrajnost, ki lahko vztraja sporočila pod obremenitvijo sistema O(1); Visoka prepustnost, ki lahko doseže prepustnost 10W/s na običajnem strežniku; Popolnoma distribuirani sistemi, Broker, Producer in Consumer vsi nativno podpirajo distribuirano in samodejno uresničujejo uravnoteženje obremenitve; Podpira vzporedno nalaganje Hadoop podatkov, kar je izvedljiva rešitev za loge in offline analitične sisteme, kot je Hadoop, vendar z omejitvami obdelave v realnem času. Kafka združuje spletno in nespletno obdelavo sporočil preko Hadoopovega mehanizma za vzporedno nalaganje. Apache Kafka je zelo lahek sistem za sporočanje v primerjavi z ActiveMQ, poleg zelo dobre zmogljivosti pa je tudi porazdeljen sistem, ki dobro deluje. |