De când am învățat. .NET, stilul elegant de programare, scalabilitatea extrem de simplă, uneltele de dezvoltare suficient de puternice și o curbă de învățare foarte mică m-au făcut să am un interes puternic pentru această platformă și, de asemenea, am acumulat câteva componente open source în munca și studiul meu. Cadru de cache distribuit: Microsoft Velocity: Propriul cadru de servicii cache distribuite al Microsoft. Memcahed: Un sistem de cache distribuit care este folosit în prezent de multe site-uri web pentru a îmbunătăți viteza de acces la site-uri. Redis: este o bază de date KV de înaltă performanță. Aspectul său compensează în mare măsură neajunsurile Memcached în unele privințe. EnyimMemcached: Accesează cel mai bun client .NET de la Memcached cu un algoritm bun de egalizare distribuită. Open source. Recomandarea sistemului .NET: OXITE: Microsoft ASP.NET cadrul de prezentare a cazurilor MVC. PetShop: Microsoft ASP.NET magazin de animale. Orchard: Un sistem extern de bloguri open source pentru MVC. SSCLI: Codul open source al Microsoft în era NET Framework 2.0. DasBlog: Un sistem de blogging bazat pe ASP.NET în străinătate. BlogEngine.NET: Un sistem de blogging gratuit și open source în străinătate. Dotnetnuke.NET: Un set foarte bun de programe open source bazate pe ASP.NET. Discuz.NET: Sistem comunitar intern open source forum. nopCommerce și Aspxcommerce: Un set de sisteme web B2C open source de înaltă calitate, disponibile în străinătate. JumboTCMS și DTCMS: Două sisteme open source de gestionare a site-urilor web în China: Gestionarea excepțiilor prin înregistrare: Log4Net.dll: Un cadru de logare .NET ușor, gratuit și open-source. Enterprise Library Log Application Black: Microsoft Enterprise Library Logging. Elmah: Implementează cel mai popular framework de înregistrare a excepțiilor ASP.NET aplicații. NLog: este o bibliotecă simplă și flexibilă de jurnalizare, cu performanțe superioare decât Log4Net și dificultăți scăzute în utilizare și întreținere. Despre bazele de date NoSQL: Mongodb: Bază de date de stocare distribuită a fișierelor. Membase: Un nou membru greu al familiei. Cadru automatizat pentru programarea sarcinilor Quartz.NET: Programarea sarcinilor open-source și cadrul automatizat al sarcinilor. Topshelf: Un alt cadru open source pentru crearea serviciilor Windows Cadru container IOC pentru injectarea dependențelor: Unity: Un cadru de injectare a dependențelor IOC dezvoltat de echipa de modele și cea mai practică echipă Microsoft care susține preocupările transversale AOP. MEF (Managed Extensibility Framework): este un cadru pentru extinderea aplicațiilor .NET și facilitarea dezvoltării sistemelor plug-in. Spring.NET: Injectarea de dependențe, programarea orientată pe aspect (AOP), abstracția accesului la date și integrarea ASP.NET. Autofac: Cel mai popular cadru de injectare de dependențe și IOC, ușor și de înaltă performanță, practic neintruziv pentru codul proiectului. PostSharp: Implementează tăierea statică AOP a preocupărilor, este simplu de folosit, puternic și nu necesită modificări ale metodei de interceptare a țintelor. Ninject: Un cadru IOC pentru injecția dependențelor bazat pe .NET ușor și open source Câteva cadre ORM utilizate frecvent: EF (ADO.NET Entity Framework): Un cadru ORM dezvoltat de Microsoft bazat pe ADO.NET. Nhibernate: Un framework ORM ușor pentru medii .NET. SqlMapper.cs: O clasă generică de acces la baze de date C# pentru proiecte mici. AutoMapper: Un framework popular de mapare a obiectelor care reduce mult hardcoding-ul, este compact și flexibil și are performanțe acceptabile. SubSonic: Un excelent framework open-source de mapare ORM care oferă un generator de cod ce îți satisface nevoile. FluentData: Un framework open-source bazat pe API Fluent pentru interogări în lanț, ORM. Dapper: Ușor, de înaltă performanță, bazat pe cadrul ORM generat de EMIT. EmitMapper: Un cadru ORM de înaltă performanță care generează dinamic cod IL prin EMIT la rulare, în loc să folosească un mecanism de reflexie. Conversia formatului și tipurilor de date Newtonsoft.Json: Cea mai populară bibliotecă de serializare JSON aflată în prezent în dezvoltare .NET, oferind baza pentru noua versiune a bibliotecii WebAPI. System.JSON.dll: componenta de serializare JSON a Microsoft (trebuie descărcată separat) DataContractJsonSerializer și DataContractXmlSerializer: Serializatoare folosite de Microsoft în WCF. Javascrip{filter}tSerializer: formatorul JSON implicit al Microsoft pentru dezvoltatorii WEB. iTextSharp, PDFsharp și PDF.NET: Prin. .NET pentru procesarea și generarea documentelor PDF. SharpZipLib.dll: Componente gratuite și open-source de decompresie a fișierelor ZIP și GZIP. Math.NET: Operații matematice puternice, calcul, rezolvarea ecuațiilor și operații științifice. DocX: Nu e nevoie să instalezi software Word, să folosești fișiere Word prin C#. SharpSerializer: Cadru open-source XML și, binar, JSON, compresie și optimizare. Limbaj reflexiv și dinamic Clay dynamic: Framework-ul dinamic open-source îți permite să creezi obiecte sub forma javascrip{filtering}t. ExposedObject: Accesează membri privați din afara clasei într-un mod dinamic al limbajului. PrivateObject: O clasă din cadrul Microsoft de testare unitară care este convenabilă pentru a chema membri specți ai clasei extern. Soluții cross-platform și runtime MONO.NET: Cross-platform. .NET, făcând posibilă operarea cross-platform în .NET. DotGnu Portable.NET: Runtime cross-platform similar cu MONO.NET. Phalanger: Compilarea PHP în .NET permite interoperabilitatea dintre PHP și .NET. VMDotNet: runtime-ul .NET folosit de China Mobile Feixin. Unity3D: Sprijinul puternic al Microsoft pentru C# și cadrul de dezvoltare de jocuri cross-platform al Javascrip. Cassini, IIS Express și Cassinidev: Medii open-source ASP.NET execuție. Katana: Sistemul de îmbarcare non-IIS ASP.NET și MVC al Microsoft, bazat pe specificația OWIN. IKVM.NET: Bazat pe. .NET este o mașină virtuală JAVA care permite JAVA să ruleze peste .NET. Dezvoltare și design WEB Jumony Core: Un motor HTML dezvoltat pe baza .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll și HtmlAgilityPack.dll: Cadre care analizează și procesează documente HTML. Javascrip{filtering}t.NET și Clearscrip{filtering}t (produse de Microsoft): Bazate pe . .NET a dezvoltat motorul Javascrip{filter}t. NCrawler: Un crawler web open-source pentru motorul său de procesare HTML, htmlagilitypack. AntiXSS: Biblioteca oficială open-source a Microsoft pentru prevenirea atacurilor de intruziune a scripturilor XSS cross-site, care codifică conținutul printr-un mecanism de listă albă. YUICompressor.NET, Microsoft Ajax Minifier și Google Closure Compiler: JavaScrip și CSS Compressor. NancyFx: este un framework open-source .NET WEB ușor. Dacă vrei să faci rapid o aplicație WEB simplă. AspNetPager: Un control ASP.NET de paging bine cunoscut în China, care suportă multiple metode de paginare. NOPI.dll: Plugin pentru exportul rapoartelor Excel (bazat pe implementarea Microsoft OpenXml) (nopi.css.dl stilizat prin css) Enterprise Library: componenta de bune practici a Microsoft pentru dezvoltarea aplicațiilor de nivel enterprise. PowerCollections: O colecție open source de nivel înalt scrisă de un genial străin. Internet mobil și cloud computing PushSharp: Trimite mesaje push către diverse platforme mobile prin .NET. Mono pentru Android: Utilizare. Dezvoltarea limbajului .NET aplicație Android: MonoTouch: Dezvoltarea aplicațiilor IOS în limbajul .NET. PhoneGap și AppCan: Platforme de dezvoltare mobilă bazate pe HTML5, pe platforme cross-platform. Cordova: Un proiect open source după ce PhoneGap a contribuit la Apache, este motorul de bază care conduce PhoneGap. Comunicare de rețea și protocoale de rețea SuperSocket: Un cadru de dezvoltare socket ușor și scalabil bazat pe .NET. SuperWebSocket: Implementează cadrul TML5 WebSocket prin .NET. XProxy: Asamblarea agentului de bază care suportă pluginuri, cu NAT integrat, criptare și decriptare, reverse și proxy-uri directe și indirecte. Cadre grafice și de procesare a imaginilor Paint.NET: Bazat pe. .NET este un proiect open source de procesare grafică compact, flexibil și puternic. Imagemagick.NET: Încapsularea componentei open-source de procesare a imaginilor Imagemagick în C#. Skimpt: Software open source pentru capturi de ecran bazat pe .NET. ImageGlue.NET: Componentele comerciale de procesare a imaginilor au o listă largă de formate suportate. Sprite and Image Optimization Framework: Microsoft CSS Wizard, multi-imagine care combină o imagine mare și stilul CSS. Cadru pentru aplicații desktop DevExpress: O bibliotecă de renume mondial de controale UI pentru aplicații desktop. Prism: Cadrul MVVM dezvoltat de Microsoft pentru WPF și Silverlight, care separă funcțiile complexe de business și cuplarea interfeței prin ideea de modularitate funcțională. WPFToolkit și Fluent Ribbon Control Suite: Dezvoltă meniuri Ribbon în stil Office. Testare și evaluarea performanței Faker.Net: Un cadru pentru generarea unor loturi mari de date de testare. Nunit: Un cadru ușor de testare unitare. Moq: Un framework Mock foarte popular care suportă LINQ, flexibil și de înaltă performanță. xUnit: Un cadru de testare unitară mai bun decât NUnit, o versiune îmbunătățită a framework-ului Nunit. MiniProfiler și Glimpse: Două cadre de monitorizare a evenimentelor de performanță bazate pe MVC. Suport pentru tranzacții tranzacționale și distribuite KtmIntegration: O clasă open-source tranzacțională care suportă sistemul de fișiere NTFS. NET Transactional File Manager: A fost adăugat suport tranzacțional pentru operațiunile sistemului de fișiere (copiere, mutare și ștergere). Segmentarea cuvintelor, căutarea textului integral și motoarele de căutare Lucene.net: O bibliotecă populară de index full-text de înaltă performanță, care poate fi folosită pentru a oferi funcții puternice de căutare pentru tot felul de informații. Lucene.Net.Analysis.PanGu: Suportă cea mai recentă versiune a bibliotecii de extensii de segmentare chineză Pangu Lucene.Net. Organizarea componentelor de validare a datelor FluentValidation pentru . NET: Componentă de verificare a interfeței fluente bazată pe lanțul de metode de expresie LINQ. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Blocul programului de validare Microsoft Enterprise Library. CuttingEdge.Conditions: O componentă de programare pe bază de contract bazată pe metoda interfeței Fluent. DotNetOpenAuth: Permite site-urilor să suporte autentificarea cu OpenID, OAuth, InfoCard și altele. Controlul statisticilor grafice open source: Visifire: Un set foarte bun de controale WPF care suportă desenul 3D, curbe, polilinii, sectoare, inele și trapezoide. SparrowToolkit: Un set de controale grafice WPF care suportă desenarea curbelor dinamice, inclusiv osciloscoape, utilizarea CPU-ului și forme de undă. DynamicDataDisplay: Grafice dinamice WPF open-source Microsoft, diagrame liniare, grafice cu bule și hărți termice.
Categoriile de coadă de mesaje pot fi extinse, cum ar fi Kafka, care este un sistem de mesagerie distribuit, bazat pe publicare/abonament. Principalele obiective de design sunt următoarele: Persistența mesajelor este asigurată sub forma complexității temporale O(1), iar performanța accesului cu complexitate constantă de timp poate fi garantată chiar și pentru date peste terabytes. Debit mare. Chiar și pe mașini comerciale foarte ieftine, poate suporta transmiterea a peste 100.000 de mesaje pe secundă pe o singură mașină. Suportă partiționarea mesajelor și consumul distribuit între serverele Kafka și asigură transmiterea secvențială a mesajelor în fiecare partiție. Suportă atât procesarea datelor offline, cât și procesarea datelor în timp real. Scalare: Susține extinderea orizontală online. RabbitMQ RabbitMQ este o coadă de mesaje open-source scrisă în Erlang care suportă multe protocoale: AMQP, XMPP, SMTP, STOMP, motiv pentru care este foarte grea și mai potrivită pentru dezvoltarea la nivel enterprise. În același timp, este implementată arhitectura brokerului, ceea ce înseamnă că mesajele sunt puse în coadă centrală mai întâi când sunt trimise către client. Există un suport bun pentru rutare, echilibrare a încărcării sau persistența datelor. Redis Redis este o bază de date NoSQL bazată pe perechi cheie-valoare și este dezvoltată și întreținută activ. Deși este un sistem de stocare a bazei de date cheie-valoare, suportă funcționalitatea MQ în sine, astfel încât poate fi folosit ca un serviciu de coadă ușor. Pentru operațiunile de onboarding și out-queue ale RabbitMQ și Redis, de 1 milion de ori fiecare, iar timpul de execuție este înregistrat la fiecare 100.000 de ori. Datele de test sunt împărțite în patru dimensiuni diferite: 128Bytes, 512Bytes, 1K și 10K. Tabel experimental: Când se alătură echipei, performanța Redis este mai mare decât cea a RabbitMQ atunci când comparația datelor este mică, iar dacă dimensiunea datelor depășește 10K, Redis este insuportabil de lent. La ieșirea din echipă, Redis a arătat performanțe foarte bune indiferent de dimensiunea datelor, în timp ce performanța RabbitMQ a fost mult mai scăzută decât cea a lui Redis. ZeroMQ ZeroMQ susține că este cel mai rapid sistem de coadă pentru mesaje, în special pentru scenarii cu cerere cu debit ridicat. ZeroMQ poate implementa cozi avansate/complexe la care RabbitMQ nu este bun, dar dezvoltatorii trebuie să combine singuri mai multe cadre tehnice, iar complexitatea tehnică reprezintă o provocare pentru aplicarea cu succes a acestui MQ. ZeroMQ are un mod unic, non-middleware, unde nu trebuie să instalezi și să rulezi un server de mesaje sau middleware pentru că aplicația ta va juca acest rol de server. Tot ce trebuie să faci este să consulți biblioteca ZeroMQ, care poate fi instalată folosind NuGet, și poți trimite cu plăcere mesaje între aplicații. Totuși, ZeroMQ oferă doar cozi nepersistente, ceea ce înseamnă că, dacă se dezactivează, datele se vor pierde. Dintre acestea, versiunea Storm a Twitter înainte de 0.9.0 folosește ZeroMQ ca transmisie implicită a fluxurilor de date (Storm suportă atât ZeroMQ, cât și Netty ca modul de transmisie din versiunea 0.9). ActiveMQ ActiveMQ este un subproiect sub Apache. Similar cu ZeroMQ, permite cozi cu tehnologie agent și peer-to-peer. În același timp, similar cu RabbitMQ, poate implementa eficient scenarii avansate de aplicație cu o cantitate mică de cod. Kafka/Jafka Kafka este un subproiect al Apache, un sistem distribuit de înaltă performanță de coadă pentru publicare/abonare a mesajelor în limbi diferite, iar Jafka este incubat peste Kafka, care este o versiune îmbunătățită a lui Kafka. Are următoarele caracteristici: persistență rapidă, care poate persista mesajele sub costul sistemului O(1); Debit ridicat, care poate atinge o rată de 10W/s pe un server obișnuit; Sistem complet distribuit, Broker, Producător și Consumator susțin nativ distribuirea și realizează automat echilibrarea încărcării; Suportă încărcarea paralelă a datelor Hadoop, care este o soluție viabilă pentru date de jurnal și sisteme de analiză offline precum Hadoop, dar cu limitările procesării în timp real. Kafka unifică procesarea mesajelor online și offline prin mecanismul de încărcare paralelă al Hadoop. Apache Kafka este un sistem de mesagerie foarte ușor comparativ cu ActiveMQ și, pe lângă performanțe foarte bune, este și un sistem distribuit care funcționează bine. |