Od czasu nauki. .NET, elegancki styl programowania, niezwykle prosta skalowalność, wystarczająco potężne narzędzia programistyczne i bardzo krótka krzywa uczenia się sprawiły, że bardzo zainteresowałem się tą platformą, a także zgromadziłem kilka open source komponentów w mojej pracy i nauce. Framework rozproszonego buforowania: Microsoft Velocity: Własny framework usługi usługi rozproszonej pamięci podręcznej Microsoftu. Memcahed: Rozproszony system buforowania, który jest obecnie używany przez wiele stron internetowych do poprawy szybkości dostępu do nich. Redis: to wysokowydajna baza danych KV. Jego wygląd w dużej mierze rekompensuje niedoskonałości Memcached w niektórych aspektach. EnyimMemcached: Dostęp do najlepszego klienta .NET Memcached z dobrym algorytmem rozproszonej korekty. Open source. Rekomendacja systemu .NET: OXITE: Microsoft ASP.NET framework prezentacji spraw MVC. PetShop: sklep zoologiczny ASP.NET Microsoft. Orchard: zagraniczny system blogów open source MVC. SSCLI: Otwarty kod Microsoftu w erze NET Framework 2.0. DasBlog: System blogowy oparty na asp.net za granicą. BlogEngine.NET: Darmowy i otwartoźródłowy system blogowania za granicą. Dotnetnuke.NET: Bardzo dobry zestaw otwartych portali oparty na ASP.NET. Discuz.NET: Krajowy system społeczności open source. nopCommerce i Aspxcommerce: zestaw wysokiej jakości, otwartych systemów stron internetowych B2C dostępnych za granicą. JumboTCMS i DTCMS: Dwa otwartoźródłowe systemy zarządzania stronami internetowymi w Chinach: Obsługa logowania wyjątków: Log4Net.dll: Lekki, darmowy i otwartoźródłowy framework logowania .NET. Aplikacja logowania biblioteki Enterprise: Logowanie biblioteki Microsoft Enterprise. Elmah: Implementuje najpopularniejszy framework ASP.NET logowania wyjątków aplikacji. NLog: to prosta i elastyczna biblioteka logowania o wyższej wydajności niż Log4Net oraz niskiej trudności w użyciu i utrzymaniu. O bazach danych NoSQL: Mongodb: Rozproszona baza danych do przechowywania plików. Membase: Nowy członek rodziny ważnej wagi. Zautomatyzowany framework harmonogramowania zadań Quartz.NET: Open-source do planowania zadań i zautomatyzowany framework zadań. Topshelf: Kolejny open source framework do tworzenia usług Windows Framework kontenera IOC z wstrzykiwaniem zależności: Unity: Framework IOC do wstrzykiwania zależności opracowany przez zespół ds. wzorców i praktyk Microsoftu, wspierający przekrojowe zagadnienia AOP. MEF (Managed Extensibility Framework): to framework do rozszerzania aplikacji .NET i umożliwiania tworzenia systemów wtyczek. Spring.NET: Zastrzyk zależności, programowanie aspektowe (AOP), abstrakcji dostępu do danych oraz integracja ASP.NET. Autofac: Najpopularniejszy framework dependency injection i IOC, lekki i wydajny, praktycznie nieinwazyjny dla kodu projektowego. PostSharp: Implementuje statyczne przecięcie AOP w kwestiach, jest proste w użyciu, wydajne i nie wymaga żadnych zmian w metodzie przechwytywania celów. Ninject: Framework IOC do wstrzykiwania zależności, oparty na lekkim i open source .NET Kilka powszechnie stosowanych frameworków ORM: EF (ADO.NET Entity Framework): Framework ORM opracowany przez Microsoft na bazie ADO.NET. Nhibernate: Lekki framework ORM dla środowisk .NET. SqlMapper.cs: Ogólny kurs dostępu do bazy danych w C# dla małych projektów. AutoMapper: popularny framework do mapowania obiektów, który redukuje dużo twardego kodowania, jest kompaktowy i elastyczny oraz ma akceptowalną wydajność. SubSonic: Doskonały open-source framework do mapowania ORM, który zapewnia generator kodu spełniający Twoje potrzeby. FluentData: otwartoźródłowy, łańcuchowy framework zapytań ORM oparty na otwartym API. Dapper: Lekki, wysokowydajny, oparty na ramach ORM generowanych przez EMIT. EmitMapper: Wysokowydajny framework ORM, który dynamicznie generuje kod IL poprzez EMIT w czasie działania, zamiast korzystać z mechanizmu odbicia. Konwersja formatu i typu danych Newtonsoft.json: Najpopularniejsza biblioteka serializacji JSON obecnie w fazie rozwoju .NET, stanowiąca podstawę nowej wersji biblioteki WebAPI. System.JSON.dll: Własny komponent serializacji JSON Microsoftu (wymaga pobrania osobno) DataContractJsonSerializer i DataContractXmlSerializer: Serializatory używane przez Microsoft w WCF. Javascrip{filter}tSerializer: Domyślny formatter JSON firmy Microsoft dla deweloperów WEB. iTextSharp, PDFsharp i PDF.NET: Through. .NET do przetwarzania i generowania dokumentów PDF. SharpZipLib.dll: Darmowe i otwartoźródłowe komponenty do dekompresji plików ZIP i GZIP. Math.NET: Silne operacje matematyczne, rachunek różniczkowy, rozwiązywanie równań oraz operacje naukowe. DocX: Nie trzeba instalować oprogramowania Word, obsługiwać pliki Word przez C#. SharpSerializer: otwartoźródłowy framework XML oraz binarny, JSON, kompresji i optymalizacji. Język refleksyjny i dynamiczny Dynamika gliny: Open-source framework dynamiczny pozwala tworzyć obiekty w formie javascrip{filtering}t. ExposedObject: Dostęp do członków prywatnych poza klasą w sposób dynamiczny. PrivateObject: Klasa w frameworku testów jednostkowych Microsoft, wygodna do zewnętrznego wywoływania prywatnych członków klasy. Rozwiązania międzyplatformowe i runtime MONO.NET: Cross-platform. środowisko uruchomieniowe .NET, umożliwiające działanie .NET na różnych platformach. DotGnu Portable.NET: Wieloplatformowy runtime podobny do MONO.NET. Phalanger: Kompilacja PHP do .NET umożliwia interoperacyjność PHP i .NET. VMDotNet: .NET runtime używany przez China Mobile Feixin. Unity3D: Silne wsparcie Microsoftu dla C# oraz wieloplatformowego frameworka do tworzenia gier Javascrip. Cassini, IIS Express i Cassinidev: Środowiska wykonawcze ASP.NET open-source. Katana: ASP.NET boardingu Microsoftu bez IIS oraz pojazd MVC oparty na specyfikacji OWIN. IKVM.NET: Na podstawie. .NET to maszyna wirtualna JAVA, która pozwala na działanie JAVA na bazie .NET. Tworzenie i projektowanie stron internetowych Jumony Core: Silnik HTML opracowany na bazie .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll i HtmlAgilityPack.dll: Frameworki analizujące i przetwarzające dokumenty HTML. Javascrip{filtering}t.NET oraz Clearscrip{filtering}t (produkowane przez Microsoft): Na podstawie . .NET rozwinął silnik Javascrip{filter}t. NCrawler: Open-source narzędzie do przeglądania stron internetowych dla silnika przetwarzania HTML, htmlagilitypack. AntiXSS: Oficjalna biblioteka open source Microsoftu do zapobiegania atakom skryptów XSS na różnych stronach, kodująca treść za pomocą mechanizmu białej listy. YUICompressor.NET, Microsoft Ajax Minifier i Google Closure Compiler: JavaScrip i CSS Compressor. NancyFx: to ładny, lekki, open source framework .NET WEB. Jeśli chcesz szybko stworzyć prostą aplikację WEB. AspNetPager: Znana kontrola stronicowania ASP.NET w Chinach, obsługująca wiele metod stronicowania. NOPI.dll: Wtyczka do eksportu raportów Excel (oparta na implementacji Microsoft OpenXml) (nopi.css.dl stylizowana przez css) Biblioteka Enterprise: Komponent najlepszych praktyk Microsoftu do tworzenia aplikacji na poziomie korporacyjnym. PowerCollections: Wysokopoziomowa kolekcja open source napisana przez zagranicznego gwiazdora z zagranicy. Internet mobilny i chmura obliczeniowa PushSharp: Wysyłaj wiadomości na różne platformy mobilne przez .NET. Mono na Androida: Użycie. Aplikacja do tworzenia języka .NET na Androida: MonoTouch: Rozwijaj aplikacje IOS w języku .NET. PhoneGap i AppCan: Wieloplatformowe platformy do tworzenia urządzeń mobilnych opartych na HTML5. Cordova: Projekt open source po tym, jak PhoneGap przyczynił się do rozwoju Apache, jest głównym silnikiem napędzającym PhoneGap. Komunikacja sieciowa i protokoły sieciowe SuperSocket: Lekki i skalowalny framework do tworzenia gniazd oparty na .NET. SuperWebSocket: Implementuje framework TML5 WebSocket za pośrednictwem .NET. XProxy: Podstawowy zestaw agentów wspierający wtyczki, z wbudowanym NAT, szyfrowaniem i deszyfrowaniem, odwrotnymi, bezpośrednimi i pośrednimi proxy. Frameworki graficzne i przetwarzania obrazu Paint.NET: Na podstawie. .NET to kompaktowy, elastyczny i wydajny projekt open source z zakresu przetwarzania grafiki. Imagemagick.NET: Enkapsulacja otwartoźródłowego komponentu przetwarzania obrazów Imagemagick w C#. Skimpt: Oprogramowanie do robienia zrzutów ekranu open source oparte na .NET. ImageGlue.NET: Komercyjne komponenty do przetwarzania obrazu mają szeroką listę obsługiwanych formatów. Framework optymalizacji sprite'ów i obrazów: Microsoft CSS Wizard, wieloobrazowy model łączący duży obraz i styl CSS. Framework aplikacji desktopowych DevExpress: Światowej sławy biblioteka kontrolerów UI dla aplikacji desktopowych. Prism: framework MVVM opracowany przez Microsoft dla WPF i Silverlight, który rozdziela złożone funkcje biznesowe i sprzężenie interfejsu poprzez koncepcję funkcjonalnej modułowości. WPFToolkit i Fluent Ribbon Control Suite: Opracuj menu wstążkowe w stylu Office. Testowanie i ocena wydajności Faker.Net: Framework do generowania dużych partii danych testowych. Nunit: Lekki framework do testów jednostkowych. Moq: Bardzo popularny framework Mock wspierający LINQ, elastyczny i wysokowydajny. xUnit: Lepszy framework do testów jednostkowych niż NUnit, ulepszona wersja frameworka Nunit. MiniProfiler i Glimpse: Dwa frameworki monitorujące zdarzenia wydajności oparte na MVC. Wsparcie transakcyjne i rozproszone KtmIntegration: Transakcyjna klasa open-source obsługująca system plików NTFS. NET Transactional File Manager: Dodano wsparcie transakcyjne dla operacji systemu plików (kopiowanie, przenoszenie i usuwanie). Segmentacja tekstu, wyszukiwanie pełnotekstowe i wyszukiwarka Lucene.net: Popularna, wydajna biblioteka indeksów tekstowych, która może być wykorzystana do zapewnienia zaawansowanych funkcji wyszukiwania wszelkiego rodzaju informacji. Lucene.Net.Analysis.PanGu: Obsługuje najnowszą wersję biblioteki rozszerzenia segmentacji chińskiej Pangu Lucene.Net. Organizacja komponentu walidacji danych FluentValidation dla . NET: Komponent weryfikacji interfejsu płynnego oparty na łańcuchu metod ekspresji LINQ. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Blok programu walidacyjnego Microsoft Enterprise Library. CuttingEdge.Conditions: Komponent programowania kontraktowego oparty na metodzie interfejsu Fluent. DotNetOpenAuth: Umożliwia stronom wspieranie uwierzytelniania za pomocą OpenID, OAuth, InfoCard i innych. Kontrola statystyk wykresów open source: Visifire: Bardzo dobry zestaw kontrolerów WPF obsługujących rysowanie 3D, krzywe, polinie, sektory, pierścienie i trapezy. SparrowToolkit: Zestaw kontrolerów wykresów WPF wspierających rysowanie dynamicznych krzywych, w tym oscyloskopów, wykorzystania CPU i przebiegów. DynamicDataDisplay: Dynamiczne wykresy WPF Microsoftu open-source, wykresy liniowe, wykresy bąbelkowe oraz mapy cieplne.
Kategorie kolejek wiadomości mogą być rozszerzane, na przykład Kafka, która jest rozproszonym systemem wiadomości opartym na publikacjach/subskrypcjach. Główne cele projektowe są następujące: Trwałość wiadomości zapewnia się w postaci złożoności czasowej O(1), a wydajność dostępu o stałej złożoności czasowej może być gwarantowana nawet dla danych powyżej terabajtów. Wysoka przepustowość. Nawet na bardzo tanich komputerach komercyjnych może obsłużyć przesyłanie ponad 100 tys. wiadomości na sekundę na jednej maszynie. Obsługuje partycjonowanie wiadomości i rozproszone zużycie pomiędzy serwerami Kafka oraz zapewnia sekwencyjną transmisję wiadomości w każdej partycji. Obsługuje zarówno przetwarzanie danych offline, jak i przetwarzanie danych w czasie rzeczywistym. Skalowanie na skalę: Wspieraj ekspansję poziomą online. RabbitMQ RabbitMQ to otwartoźródłowa kolejka wiadomości napisana w języku Erlang, która obsługuje wiele protokołów: AMQP, XMPP, SMTP, STOMP, dlatego jest bardzo wymagająca i bardziej odpowiednia do rozwoju na poziomie korporacyjnym. Jednocześnie implementowana jest architektura brokera, co oznacza, że wiadomości są najpierw kolejkowane w centralnej kolejce po wysłaniu do klienta. Jest dobre wsparcie dla routingu, load balancing lub utrzymywania danych. Redis Redis to baza danych NoSQL oparta na parach klucz-wartość, która jest aktywnie rozwijana i utrzymywana. Chociaż jest to system przechowywania danych key-value, sam obsługuje funkcjonalność MQ, dzięki czemu może być używany jako lekka usługa kolejkowa. Dla operacji onboardingu i out-queue RabbitMQ i Redis każdy z nich wykonuje się po milion razy, a czas wykonania jest rejestrowany co 100 000 razy. Dane testowe dzielą się na cztery różne rozmiary: 128 bajtów, 512 bajtów, 1K i 10K. Tabela eksperymentalna: Po dołączeniu do zespołu wydajność Redis jest wyższa niż RabbitMQ, gdy porównanie danych jest małe, a jeśli rozmiar danych przekracza 10K, Redis jest nieznośnie wolny. Po odejściu z zespołu Redis wykazał się bardzo dobrą wydajnością niezależnie od wielkości danych, podczas gdy RabbitMQ był znacznie niższy niż Redisa. ZeroMQ ZeroMQ twierdzi, że jest najszybszym systemem kolejkowania wiadomości, zwłaszcza w scenariuszach o wysokiej przepustowości. ZeroMQ może implementować zaawansowane/złożone kolejki, w których RabbitMQ nie radzi sobie dobrze, ale deweloperzy muszą samodzielnie łączyć wiele frameworków technicznych, a złożoność techniczna stanowi wyzwanie dla skutecznego zastosowania tego MQ. ZeroMQ ma unikalny tryb nie-middleware, w którym nie musisz instalować i uruchamiać serwera wiadomości ani middleware, ponieważ twoja aplikacja będzie odgrywać tę rolę serwera. Wystarczy po prostu odwołać się do biblioteki ZeroMQ, którą można zainstalować za pomocą NuGet, i bez problemu wysyłasz wiadomości między aplikacjami. Jednak ZeroMQ udostępnia tylko kolejki nietrwałe, co oznacza, że jeśli przestanie działać, dane zostaną utracone. Wśród nich wersja Storm Twittera przed 0.9.0 domyślnie używa ZeroMQ jako transmisji strumieni danych (Storm obsługuje zarówno ZeroMQ, jak i Netty jako moduł transmisyjny od wersji 0.9). ActiveMQ ActiveMQ to podprojekt działający w ramach Apache. Podobnie jak ZeroMQ, umożliwia kolejki dzięki technologii agentów i peer-to-peer. Jednocześnie, podobnie jak RabbitMQ, potrafi efektywnie wdrażać zaawansowane scenariusze aplikacyjne przy użyciu niewielkiej ilości kodu. Kafka/Jafka Kafka jest podprojektem Apache, wydajnego rozproszonego systemu kolejek komunikatów publikujących/subskrybujących w różnych językach, a Jafka jest inkubowana na Kafce, która jest ulepszoną wersją Kafki. Posiada następujące cechy: szybkie utrzymywanie wiadomości, które może utrzymywać wiadomości pod narzutem systemu O(1); Wysoka przepustowość, która może osiągnąć przepustowość 10W/s na zwykłym serwerze; Całkowicie rozproszony system, Broker, Producer i Consumer – natywnie wspierają rozproszone i automatycznie realizują równoważenie obciążenia; Obsługuje równoległe ładowanie danych Hadoop, co jest wykonalnym rozwiązaniem dla danych logowych i systemów analizy offline, takich jak Hadoop, ale z ograniczeniami przetwarzania w czasie rzeczywistym. Kafka jednoczy przetwarzanie wiadomości online i offline za pomocą mechanizmu równoległego ładowania Hadoop. Apache Kafka to bardzo lekki system komunikacji w porównaniu do ActiveMQ, a oprócz bardzo dobrej wydajności, jest także systemem rozproszonym, który działa dobrze. |