С тех пор, как я узнал. .NET, элегантный стиль программирования, чрезвычайно простая масштабируемость, достаточно мощные инструменты разработки и очень маленькая кривая обучения сделали меня сильным интересом к этой платформе, а также я накопил некоторые компоненты с открытым исходным кодом в работе и учёбе. Фреймворк распределённого кэширования: Microsoft Velocity: собственный фреймворк распределённого кэша от Microsoft. Memcahed: распределённая система кэширования, которая в настоящее время используется многими сайтами для повышения скорости доступа к сайту. Redis: это высокопроизводительная база данных KV. Его внешний вид в значительной степени компенсирует недостатки Memcached в некоторых аспектах. EnyimMemcached: Получите доступ к лучшему .NET-клиенту Memcached с хорошим распределённым алгоритмом эквализации. Открытый исходный код. Рекомендация по системе .NET: OXITE: Microsoft ASP.NET фреймворк презентации кейсов MVC. PetShop: Microsoft ASP.NET зоомагазин. Orchard: Иностранная система блогов с открытым исходным кодом MVC. SSCLI: Открытый исходный код Microsoft в эпоху NET Framework 2.0. DasBlog: Система блогинга на базе asp.net за рубежом. BlogEngine.NET: Бесплатная и открытая система ведения блогов за рубежом. Dotnetnuke.NET: Очень хороший набор открытых порталов на базе ASP.NET. Discuz.NET: Внутренняя система форумов с открытым исходным кодом. nopCommerce и Aspxcommerce: набор высококачественных открытых B2C веб-сайтов за рубежом. JumboTCMS и DTCMS: две открытые системы управления сайтами в Китае: Обработка логирования исключений: Log4Net.dll: лёгкий бесплатный и открытый фреймворк для .NET-логирования. Журнал журнала корпоративной библиотеки Приложение Чёрный: Логирование корпоративной библиотеки Microsoft. Элма: реализует самый популярный фреймворк для регистрации исключений ASP.NET приложениях. NLog: это простая и гибкая библиотека логирования с более высокой производительностью, чем Log4Net, и низкой сложностью использования и обслуживания. О базах данных NoSQL: Mongodb: Распределённая база данных файлов. Мембейс: новый тяжеловес семьи. Автоматизированный фреймворк планирования задач Quartz.NET: Открытое планирование заданий и автоматизированная структура задач. Topshelf: ещё один фреймворк с открытым исходным кодом для создания сервисов Windows Фреймворк контейнера IOC для инъекции зависимостей: Unity: Фреймворк инъекции зависимостей в IOC, разработанный командой Microsoft по шаблонам и практике, который поддерживает вопросы AOP с пересечениями. MEF (Managed Extensiability Framework): представляет собой фреймворк для расширения .NET-приложений и обеспечения разработки плагин-систем. Spring.NET: инъекция зависимостей, аспектно-ориентированное программирование (AOP), абстракция доступа к данным и интеграция ASP.NET. Autofac: Самый популярный фреймворк для инжекции зависимостей и IOC, лёгкий и высокопроизводительный, практически не навязчивый для проектного кода. PostSharp: реализует статическое пересечение задач по AOP, прост в использовании, мощен и не требует изменений в методе перехвата целей. Ninject: Фреймворк IOC с инъекцией зависимостей, основанный на лёгком и открытом исходном коде на .NET Несколько часто используемых фреймворков ORM: EF (ADO.NET Entity Framework): ORM-фреймворк, разработанный Microsoft на основе ADO.NET. Nhibernate: лёгкий фреймворк ORM для .NET-сред. SqlMapper.cs: Общий класс доступа к базе данных на C# для небольших проектов. AutoMapper: Популярный фреймворк для объектного отображения, который значительно снижает жёсткое кодирование, компактен и гибок, а также обеспечивает приемлемой производительности. SubSonic: отличный открытый фреймворк для картографирования ORM, который предоставляет генератор кода, соответствующий вашим потребностям. FluentData: Открытый фреймворк на основе Fluent API с цепочным запросом ORM. Dapper: Лёгкий, высокопроизводительный, основанный на фреймворке ORM, созданной EMIT. EmitMapper: Высокопроизводительный фреймворк ORM, который динамически генерирует код IL через EMIT во время выполнения, а не использует механизм отражения. Преобразование форматов и типов данных Newtonsoft.Json: самая популярная библиотека сериализации JSON, которая сейчас находится в разработке .NET, служит основой для новой версии библиотеки WebApi. System.JSON.dll: собственный компонент сериализации JSON от Microsoft (нужно скачать отдельно) DataContractJsonSerializer и DataContractXmlSerializer: сериализаторы, используемые Microsoft в WCF. Javascrip{filter}tSerializer: стандартный JSON-форматор Microsoft для веб-разработчиков. iTextSharp, PDFsharp и PDF.NET: Through. .NET для обработки и генерации PDF-документов. SharpZipLib.dll: Бесплатные и открытые компоненты распаковки файлов ZIP и GZIP. Math.NET: Сильные математические операции, исчисление, решение уравнений и научные операции. DocX: Нет необходимости устанавливать программное обеспечение Word, управляйте файлами Word через C#. SharpSerializer: фреймворк для сжатия и оптимизации с открытым исходным кодом XML и, бинарных, JSON-форматов. Рефлексивный и динамический язык Clay dynamic: Открытый динамический фреймворк позволяет создавать объекты в виде javascrip{filtering}t. ExposedObject: Доступ к частным участникам вне класса динамическим языком. PrivateObject: класс в фреймворке модульного тестирования Microsoft, удобный для вызова приватных членов класса внешне. Кроссплатформенные и runtime решения MONO.NET: Кроссплатформенный. Среда выполнения .NET, что сделало возможным кроссплатформенное управление .NET. DotGnu Portable.NET: Кроссплатформенное время выполнения, похожее на MONO.NET. Фалангер: Компиляция PHP в .NET обеспечивает совместимость PHP и .NET. VMDotNet: .NET-среда выполнения, используемая China Mobile Feixin. Unity3D: Сильная поддержка Microsoft C# и кроссплатформенной платформенной платформы для разработки игр от Javascrip. Cassini, IIS Express и Cassinidev: открытые среды ASP.NET выполнения. Katana: ASP.NET посадки и MVC от Microsoft без IIS, основанные на спецификации OWIN. IKVM.NET: Основано на. .NET — это виртуальная машина на базе JAVA, которая позволяет JAVA работать поверх .NET. Веб-разработка и дизайн Jumony Core: HTML-движок, разработанный на базе .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll и HtmlAgilityPack.dll: фреймворки, которые парсируют и обрабатывают HTML-документы. Javascrip{filtering}t.NET и Clearscrip{filtering}t (произведён Microsoft): На основе . .NET разработал движок Javascrip{filter}t. NCrawler: Открытый веб-краулер для своего движка обработки HTML htmlagilitypack. AntiXSS: официальная открытая библиотека Microsoft для предотвращения межсайтовых атак с использованием скриптов XSS, которая кодирует контент через механизм белого списка. YUICompressor.NET, Microsoft Ajax Minifier и Google Closure Compiler: JavaScrip и CSS Compressor. NancyFx: это лёгкий open WEB фреймворк с открытым исходным кодом. Если хотите быстро создать простое ВЕБ-приложение. AspNetPager: Известный ASP.NET контроля пейджинга в Китае, поддерживающий несколько методов пейджинга. NOPI.dll: Плагин для экспорта отчётов Excel (на основе реализации Microsoft OpenXml) (стилизован nopi.css.dl через css) Enterprise Library: компонент лучших практик Microsoft для корпоративной разработки приложений. PowerCollections: Высокоуровневая открытая коллекция, написанная иностранным мастером. Мобильный интернет и облачные вычисления PushSharp: отправляйте сообщения на различные мобильные платформы через .NET. Моно для Android: Используй. Разработка языка .NET для Android: MonoTouch: разработка IOS-приложений на языке .NET. PhoneGap и AppCan: кроссплатформенные мобильные платформы на базе HTML5. Cordova: Проект с открытым исходным кодом после того, как PhoneGap внес вклад в Apache, является основным движком, который движет PhoneGap. Сетевая коммуникация и сетевые протоколы SuperSocket: лёгкий и масштабируемый фреймворк для разработки сокетов на базе .NET. SuperWebSocket: реализует фреймворк TML5 WebSocket через .NET. XProxy: базовый ассемблер агентов, поддерживающий плагины, с встроенными NAT, шифрованием и расшифровкой, обратной, прямой и косвенной прокси. Графические и кадровые рамки для обработки изображений Paint.NET: Основано на. .NET — это компактный, гибкий и мощный проект с открытым исходным кодом в области графической обработки. Imagemagick.NET: Инкапсуляция компонента обработки изображений с открытым исходным кодом Imagemagick на C#. Skimpt: Открытое программное обеспечение для скриншотов на базе .NET. ImageGlue.NET: Коммерческие компоненты обработки изображений имеют большой список поддерживаемых форматов. Фреймворк оптимизации спрайтов и изображений: мастер Microsoft CSS, мульти-образ, сочетающий большой образ и стиль CSS. Фреймворк настольных приложений DevExpress: всемирно известная библиотека управления интерфейсом для настольных приложений. Prism: фреймворк MVVM, разработанный Microsoft для WPF и Silverlight, который разделяет сложные бизнес-функции и интерфейсное взаимодействие с помощью идеи функциональной модульности. WPFToolkit и Fluent Ribbon Control Suite: Разработка ленточных меню в стиле Office. Тестирование и оценка производительности Faker.Net: Фреймворк для генерации больших партий тестовых данных. Nunit: лёгкий фреймворк для модульного тестирования. Moq: очень популярный фреймворк Mock, поддерживающий LINQ, гибкий и высокопроизводительный. xUnit: Лучший фреймворк для модульного тестирования, чем NUnit, усовершенствованная версия фреймворка Nunit. MiniProfiler и Glimpse: два фреймворка для мониторинга событий производительности на базе MVC. Поддержка транзакционных и распределённых транзакций KtmIntegration: Транзакционный класс с открытым исходным кодом, поддерживающий файловую систему NTFS. NET Transactional File Manager: Добавлена транзакционная поддержка операций с файловой системой (копирование, перемещение и удаление). Сегментация слов, полнотекстовый поиск и поисковая система Lucene.net: Популярная высокопроизводительная полнотекстовая индексная библиотека, которая может использоваться для обеспечения мощных поисковых функций для любой информации. Lucene.Net.Analysis.PanGu: поддерживает последнюю версию китайской библиотеки сегментации Pangu Lucene.Net. Организация компонентов валидации данных FluentВалидация для . NET: Компонент проверки свободного интерфейса на основе цепочки методов выражений LINQ. Microsoft.Practices.EnterpriseLibrary.Validation.dll: Блок программы проверки Microsoft Enterprise Library. CuttingEdge.Conditions: компонент контрактного программирования, основанный на методе интерфейса Fluent. DotNetOpenAuth: позволяет веб-сайтам поддерживать аутентификацию с помощью OpenID, OAuth, InfoCard и других. Управление статистикой диаграмм с открытым исходным кодом: Visifire: Очень хороший набор WPF-схем управления, поддерживающий 3D-рисование, кривые, полилинии, сектора, кольца и трапеции. SparrowToolkit: набор WPF-схем управления, поддерживающих рисование динамических кривых, включая осциллографы, использование процессора и формы волн. DynamicDataDisplay: открытые динамические графики WPF, линейные диаграммы, пузырьковые диаграммы и тепловые карты Microsoft с открытым исходным кодом.
Категории очереди сообщений могут расширяться, например, Kafka — это распределённая система сообщений на основе публикации/подписки. Основные цели проектирования следующие: Сохранение сообщений обеспечивается в виде временной сложности O(1), а производительность доступа с постоянной временной сложностью может быть гарантирована даже для данных выше терабайт. Высокая пропускная способность. Даже на очень недорогих коммерческих устройствах он может поддерживать передачу сообщений с частотой более 100 тысяч сообщений в секунду на одном устройстве. Он поддерживает разделение сообщений и распределённое потребление между серверами Kafka, а также обеспечивает последовательную передачу сообщений в каждом разделе. Он поддерживает как офлайн-обработку данных, так и обработку данных в реальном времени. Масштабирование: поддержка онлайн-горизонтального расширения. RabbitMQ RabbitMQ — это открытая очередь сообщений, написанная на Erlang, которая поддерживает множество протоколов: AMQP, XMPP, SMTP, STOMP, поэтому она очень тяжёлая и более подходящая для корпоративной разработки. Одновременно реализуется архитектура брокера, то есть сообщения сначала ставятся в центральную очередь при отправке клиенту. Есть хорошая поддержка маршрутизации, балансировки нагрузки или сохранения данных. Redis Redis — это база данных NoSQL, основанная на парах ключ-значение, которая активно разрабатывается и поддерживается. Хотя это система хранения баз данных с ключевыми значениями, она поддерживает функциональность MQ, поэтому может использоваться как легкий сервис очереди. Для операций вхождения и выхода в очередь RabbitMQ и Redis — по 1 миллион раз каждая, а время выполнения записывается каждые 100 000 раз. Тестовые данные делятся на четыре разных размера: 128 байт, 512 байт, 1K и 10K. Экспериментальная таблица: При присоединении к команде производительность Redis выше, чем у RabbitMQ, когда сравнение данных небольшое, а если объём данных превышает 10K, Redis работает невыносимо медленно. Выходя из команды, Redis показал очень хорошие результаты независимо от объёма данных, тогда как RabbitMQ был значительно ниже, чем у Redis. ZeroMQ ZeroMQ утверждает, что является самой быстрой системой очереди сообщений, особенно для сценариев с высоким спросом на производительность. ZeroMQ может реализовать продвинутые и сложные очереди, в которых RabbitMQ не очень хорош, но разработчикам нужно объединять несколько технических фреймворков самостоятельно, и техническая сложность создаёт вызов для успешного применения этого MQ. В ZeroMQ есть уникальный режим без промежуточного ПО, где не нужно устанавливать и запускать сервер сообщений или промежуточное ПО, потому что ваше приложение выполняет эту серверную роль. Всё, что нужно сделать — просто ссылаться на библиотеку ZeroMQ, которую можно установить через NuGet, и вы сможете спокойно отправлять сообщения между приложениями. Однако ZeroMQ предоставляет только непостоянные очереди, что означает, что при отключении данных будут потеряны. Среди них версия Twitter для Storm до версии 0.9.0 по умолчанию использует ZeroMQ для передачи потоков данных (Storm поддерживает как ZeroMQ, так и Netty как модуль передачи с версии 0.9). ActiveMQ ActiveMQ — это подпроект в рамках Apache. Аналогично ZeroMQ, он позволяет создавать очереди с помощью технологии агента и peer-to-peer. В то же время, подобно RabbitMQ, он может эффективно реализовывать продвинутые сценарии приложений с небольшим объёмом кода. Кафка/Яфка Kafka — это подпроект Apache, высокопроизводительной распределённой системы очереди для публикации/подписки на сообщения на разных языках, а Jafka инкубируется поверх Kafka, которая является усовершенствованной версией Kafka. Он обладает следующими характеристиками: быстрая устойчивость, позволяющая сохранять сообщения при системных накладных расходах O(1); Высокая пропускная способность, которая может достигать скорости пропускной способности 10 Вт/с на обычном сервере; Полностью распределённая система, брокер, производитель и потребитель нативно поддерживают распределённую систему и автоматически реализуют балансировку нагрузки; Поддерживает параллельную загрузку данных Hadoop, что является жизнеспособным решением для лог-журналов и офлайн-систем анализа, таких как Hadoop, но с ограничениями обработки в реальном времени. Kafka объединяет онлайн- и офлайн-обработку сообщений с помощью механизма параллельной загрузки Hadoop. Apache Kafka — это очень лёгкая система обмена сообщениями по сравнению с ActiveMQ, и помимо высокой производительности, это также распределённая система, которая хорошо работает. |