Desde que aprendi. .NET, estilo de programação elegante, escalabilidade extremamente simples, ferramentas de desenvolvimento suficientemente poderosas e uma curva de aprendizado muito pequena me fizeram ter um grande interesse nessa plataforma, além de acumular alguns componentes open source no meu trabalho e estudo. Framework de cache distribuído: Microsoft Velocity: A própria estrutura de serviço de cache distribuída da Microsoft. Memcahed: Um sistema de cache distribuído que atualmente é usado por muitos sites para melhorar a velocidade de acesso ao site. Redis: é um banco de dados KV de alto desempenho. Sua aparência compensa em grande parte as falhas do Memcached em alguns aspectos. EnyimMemcached: Acesse o melhor cliente .NET do Memcached com um bom algoritmo de equalização distribuída. Código aberto. Recomendação do Sistema .NET: OXITE: Microsoft ASP.NET framework de apresentação de casos MVC. PetShop: Microsoft ASP.NET loja de animais. Orchard: Um sistema de blog estrangeiro de código aberto MVC. SSCLI: O código open source da Microsoft na era do NET Framework 2.0. DasBlog: Um sistema de blogs baseado em ASP.NET no exterior. BlogEngine.NET: Um sistema de blogs gratuito e de código aberto no exterior. Dotnetnuke.NET: Um conjunto muito bom de programas de portal open source baseados em ASP.NET. Discuz.NET: Sistema comunitário de fórum open source doméstico. nopCommerce e Aspxcommerce: Um conjunto de sistemas de sites B2C de alta qualidade e código aberto no exterior. JumboTCMS e DTCMS: Dois sistemas de gerenciamento de sites open source na China: Registro do tratamento de exceções: Log4Net.dll: Um framework de logs .NET leve, gratuito e de código aberto. Aplicativo de Log da Biblioteca Empresarial Preto: Registro da Biblioteca Empresarial Microsoft. Elmah: Implementa o framework de registro de exceções ASP.NET aplicação mais popular. NLog: é uma biblioteca de logging simples e flexível, com desempenho superior ao Log4Net e baixa dificuldade de uso e manutenção. Sobre Bancos de Dados NoSQL: Mongodb: Banco de dados distribuído de armazenamento de arquivos. Membase: Um novo membro de peso pesado da família. Estrutura automatizada de agendamento de tarefas Quartz.NET: Agendamento de tarefas de código aberto e framework automatizado de tarefas. Topshelf: Outro framework open source para criar serviços Windows Framework de contêineres IOC para injeção de dependências: Unity: Um framework de injeção de dependências IOC desenvolvido pela equipe de padrões & praticest da Microsoft que suporta preocupações transversais de AOP. MEF (Managed Extensibility Framework): é uma estrutura para estender aplicações .NET e possibilitar o desenvolvimento de sistemas plug-in. Spring.NET: Injeção de dependências, programação orientada a aspectos (AOP), abstração de acesso a dados e integração ASP.NET. Autofac: O framework de injeção de dependências e IOC mais popular, leve e de alto desempenho, praticamente não intrusivo para o código do projeto. PostSharp: Implementa corte estático AOP de preocupações, é simples de usar, potente e não requer alterações no método de interceptação de alvos. Ninject: Um framework IOC de injeção de dependências baseado em .NET leve e open source Vários frameworks ORM comumente utilizados: EF (ADO.NET Entity Framework): Um framework ORM desenvolvido pela Microsoft baseado em ADO.NET. Nhibernate: Um framework ORM leve para ambientes .NET. SqlMapper.cs: Uma classe genérica de acesso a banco de dados em C# para pequenos projetos. AutoMapper: Um framework popular de mapeamento de objetos que reduz muito o hardcoding, é compacto e flexível, e tem desempenho aceitável. SubSonic: Um excelente framework de mapeamento ORM open-source que oferece um gerador de código que atende às suas necessidades. FluentData: Um framework leve de consulta em cadeia baseado em API do Fluent baseado em API, de código aberto. Dapper: Leve, de alto desempenho, baseado em framework ORM gerado por EMIT. EmitMapper: Um framework ORM de alto desempenho que gera dinamicamente código IL via EMIT em tempo de execução, em vez de usar um mecanismo de reflexão. Conversão de formato e tipo de dado Newtonsoft.Json: A biblioteca de serialização JSON mais popular atualmente em desenvolvimento em .NET, fornecendo a base para a nova versão da biblioteca WebAPI. System.JSON.dll: O próprio componente de serialização JSON da Microsoft (precisa ser baixado separadamente) DataContractJsonSerializer e DataContractXmlSerializer: Serializadores usados pela Microsoft no WCF. Javascrip{filter}tSerializer: Formateador JSON padrão de Microsoft para desenvolvedores WEB. iTextSharp, PDFsharp e PDF.NET: Through. .NET para processar e gerar documentos PDF. SharpZipLib.dll: Componentes de descompressão de arquivos ZIP e GZIP gratuitos e de código aberto. Math.NET: Operações matemáticas fortes, cálculo, resolução de equações e operações científicas. DocX: Não precisa instalar software de Word, operar arquivos Word via C#. SharpSerializer: XML de código aberto e, framework binário, JSON, compressão e otimização. Linguagem reflexiva e dinâmica Dinâmica de argila: O framework dinâmico de código aberto permite criar objetos na forma de javascrip{filtering}t. ExposedObject: Acesse membros privados fora da aula de forma dinâmica em linguagem. PrivateObject: Uma classe no framework de testes unitários da Microsoft que é conveniente para chamar membros privados da classe externamente. Soluções multiplataforma e em tempo de execução MONO.NET: Multiplataforma. .NET, tornando possível a operação multiplataforma em .NET. DotGnu Portable.NET: Tempo de execução multiplataforma semelhante ao MONO.NET. Phalanger: Compilar PHP para .NET possibilita a interoperabilidade entre PHP e .NET. VMDotNet: O runtime .NET usado pelo China Mobile Feixin. Unity3D: Forte suporte da Microsoft para C# e o framework de desenvolvimento de jogos multiplataforma do Javascrip. Cassini, IIS Express e Cassinidev: Ambientes de execução ASP.NET código aberto. Katana: O ASP.NET de embarque não-IIS da Microsoft e MVC baseado na especificação OWIN. IKVM.NET: Baseado em. .NET é uma máquina virtual JAVA que permite que JAVA rode sobre .NET. Desenvolvimento e design WEB Jumony Core: Um motor HTML desenvolvido com base em .NET. Microsoft.mshtml.dll, Winista.HtmlParser.dll e HtmlAgilityPack.dll: Frameworks que analisam e processam documentos HTML. Javascrip{filtering}t.NET e Clearscrip{filtering}t (produzidos pela Microsoft): Baseados em . .NET desenvolveu o motor Javascrip{filter}t. NCrawler: Um rastreador web de código aberto para seu motor de processamento HTML, htmlagilitypack. AntiXSS: Biblioteca oficial de código aberto da Microsoft para prevenir ataques de intrusões de scripts XSS entre sites, que codifica conteúdo por meio de um mecanismo de whitelist. YUICompressor.NET, Microsoft Ajax Minifier e Google Closure Compiler: JavaScrip e CSS Compressor. NancyFx: é um framework .NET WEB leve e open source. Se você quiser criar rapidamente uma aplicação WEB simples. AspNetPager: Um controle de paginação ASP.NET bem conhecido na China, suportando múltiplos métodos de paginação. NOPI.dll: Plugin para exportar relatórios Excel (baseado na implementação Microsoft OpenXml) (estilo nopi.css.dl via CSS) Enterprise Library: O componente de melhores práticas da Microsoft para desenvolvimento de aplicações em nível empresarial. PowerCollections: Uma coleção open source de alto nível escrita por um incrível estrangeiro. Internet móvel e computação em nuvem PushSharp: Enviar mensagens para várias plataformas móveis via .NET. Mono para Android: Use. Desenvolvimento de linguagem .NET Aplicativo Android: MonoTouch: Desenvolver aplicações IOS na linguagem .NET. PhoneGap e AppCan: Plataformas de desenvolvimento móvel multiplataforma baseadas em HTML5. Cordova: Um projeto open source após a contribuição do PhoneGap para o Apache, é o motor central que impulsiona o PhoneGap. Comunicação de rede e protocolos de rede SuperSocket: Um framework de desenvolvimento de sockets leve e escalável baseado em .NET. SuperWebSocket: Implementa o framework TML5 WebSocket via .NET. XProxy: O assembly básico de agentes que suporta plugins, com NAT embutidos, criptografia e descriptografia, proxies reversos, diretos e indiretos. Estruturas gráficas e de processamento de imagens Paint.NET: Baseado em. .NET é um projeto compacto, flexível e poderoso de processamento gráfico de código aberto. Imagemagick.NET: Encapsulamento do componente de processamento de imagens de código aberto Imagemagick em C#. Skimpt: Software de captura de tela open source baseado em .NET. ImageGlue.NET: Componentes comerciais de processamento de imagem possuem uma grande lista de formatos suportados. Sprite and Image Optimization Framework: Microsoft CSS Wizard, multiimagem que combina uma imagem grande e estilo CSS. Framework de aplicação de desktop DevExpress: Uma biblioteca mundialmente renomada de controles de interface para aplicações desktop. Prism: O framework MVVM desenvolvido pela Microsoft para WPF e Silverlight, que separa funções empresariais complexas e acoplamento de UI por meio da ideia de modularidade funcional. WPFToolkit e Fluent Ribbon Control Suite: Desenvolva menus de fita no estilo Office. Testes e avaliação de desempenho Faker.Net: Um framework para gerar grandes lotes de dados de teste. Nunit: Um framework leve de testes unitários. Moq: Um framework de Mock muito popular que suporta LINQ, flexível e de alto desempenho. xUnit: Um framework de testes unitários melhor que o NUnit, uma versão atualizada do framework Nunit. MiniProfiler e Glimpse: Dois frameworks de monitoramento de eventos de desempenho baseados em MVC. Suporte a transações transacionais e distribuídas KtmIntegration: Uma classe transacional de código aberto que suporta o sistema de arquivos NTFS. NET Transactional File Manager: Adicionado suporte transacional para operações do sistema de arquivos (copiar, mover e excluir). Segmentação de palavras, busca em texto completo e mecanismo de busca Lucene.net: Uma popular biblioteca de índice de texto completo de alto desempenho que pode ser usada para fornecer poderosas funções de busca para todos os tipos de informações. Lucene.Net.Analysis.PanGu: Suporta a versão mais recente da biblioteca de extensão de segmentação chinesa Pangu Lucene.Net. Organização dos componentes de validação de dados FluentValidation para . NET: Componente de verificação de interface fluente baseado na cadeia de métodos de expressão LINQ. Microsoft.Practices.EnterpriseLibrary.Validation.dll: O bloco do programa de validação Microsoft Enterprise Library. CuttingEdge.Conditions: Um componente de programação contratada baseado no método de interface Fluent. DotNetOpenAuth: Permite que sites suportem autenticação com OpenID, OAuth, InfoCard e outros. Controle de Estatísticas de Gráficos de Código Aberto: Visifire: Um conjunto muito bom de controles de gráfico WPF que suportam desenho 3D, curvas, polilinhas, setores, anéis e trapézios. SparrowToolkit: Um conjunto de controles de gráficos WPF que suportam desenhar curvas dinâmicas, incluindo osciloscópios, uso de CPU e formas de onda. DynamicDataDisplay: Gráficos dinâmicos WPF open-source da Microsoft, gráficos lineares, gráficos de bolhas e mapas de calor.
Categorias de fila de mensagens podem ser estendidas, como Kafka, que é um sistema de mensagens distribuído baseado em publicação/assinatura. Os principais objetivos de design são os seguintes: A persistência das mensagens é fornecida na forma de complexidade temporal O(1), e o desempenho de acesso com complexidade de tempo constante pode ser garantido mesmo para dados acima de terabytes. Alta produção. Mesmo em máquinas comerciais muito baratas, ele pode suportar a transmissão de mais de 100 mil mensagens por segundo em uma única máquina. Ele suporta particionamento de mensagens e consumo distribuído entre servidores Kafka, e garante a transmissão sequencial de mensagens em cada partição. Ele suporta tanto processamento de dados offline quanto processamento de dados em tempo real. Amplie: Apoie a expansão horizontal online. RabbitMQ RabbitMQ é uma fila de mensagens de código aberto escrita em Erlang que suporta muitos protocolos: AMQP, XMPP, SMTP, STOMP, por isso é muito pesada e mais adequada para desenvolvimento em nível empresarial. Ao mesmo tempo, a arquitetura do corretor é implementada, o que significa que as mensagens são colocadas na fila central primeiro quando enviadas ao cliente. Há bom suporte para roteamento, balanceamento de carga ou persistência de dados. Redis Redis é um banco de dados NoSQL baseado em pares Chave-Valor, e é desenvolvido e mantido ativamente. Embora seja um sistema de armazenamento de banco de dados chave-valor, ele suporta funcionalidades MQ em si, podendo ser usado como um serviço de fila leve. Para as operações de onboarding e out-queue do RabbitMQ e do Redis, 1 milhão de vezes cada, e o tempo de execução é registrado a cada 100.000 vezes. Os dados do teste são divididos em quatro tamanhos diferentes: 128Bytes, 512Bytes, 1K e 10K. Tabela experimental: Ao entrar na equipe, o desempenho do Redis é maior que o do RabbitMQ quando a comparação de dados é pequena, e se o tamanho dos dados ultrapassar 10K, o Redis fica insuportavelmente lento. Ao sair da equipe, Redis apresentou desempenho muito bom independentemente do tamanho dos dados, enquanto o desempenho do RabbitMQ foi muito menor que o do Redis. ZeroMQ O ZeroMQ afirma ser o sistema de fila de mensagens mais rápido, especialmente para cenários de demanda de alta produtividade. O ZeroMQ pode implementar filas avançadas/complexas que o RabbitMQ não é bom em fazer, mas os desenvolvedores precisam combinar múltiplos frameworks técnicos sozinhos, e essa complexidade técnica é um desafio para a aplicação bem-sucedida desse MQ. O ZeroMQ tem um modo único, não middleware, onde você não precisa instalar nem rodar um servidor de mensagens ou middleware porque sua aplicação desempenha esse papel de servidor. Tudo o que você precisa fazer é simplesmente consultar a biblioteca ZeroMQ, que pode ser instalada usando NuGet, e você pode enviar mensagens entre aplicativos com prazer. No entanto, o ZeroMQ fornece apenas filas não persistentes, o que significa que, se ele cair, os dados serão perdidos. Entre elas, a versão Storm do Twitter antes da 0.9.0 usa o ZeroMQ como transmissão de fluxos de dados por padrão (o Storm suporta tanto o ZeroMQ quanto o Netty como módulo de transmissão a partir da versão 0.9). ActiveMQ ActiveMQ é um subprojeto do Apache. Semelhante ao ZeroMQ, ele permite filas com tecnologia agente e peer-to-peer. Ao mesmo tempo, semelhante ao RabbitMQ, ele pode implementar cenários avançados de aplicação de forma eficiente com uma pequena quantidade de código. Kafka/Jafka Kafka é um subprojeto do Apache, um sistema distribuído de alta performance de fila de publicação/assinatura de mensagens em vários idiomas, e Jafka é incubado sobre Kafka, que é uma versão atualizada de Kafka. Possui as seguintes características: persistência rápida, que pode persistir mensagens sob a sobrecarga do sistema de O(1); alta taxa de throughput, que pode atingir uma taxa de 10W/s em um servidor comum; Sistema totalmente distribuído, Corretor, Produtor e Consumidor suportam nativamente distribuido e realizam automaticamente balanceamento de carga; Suporta carregamento paralelo de dados Hadoop, que é uma solução viável para dados de log e sistemas de análise offline como o Hadoop, mas com as limitações do processamento em tempo real. Kafka unifica o processamento de mensagens online e offline por meio do mecanismo de carregamento paralelo do Hadoop. Apache Kafka é um sistema de mensagens muito leve em relação ao ActiveMQ e, além de ter um desempenho muito bom, também é um sistema distribuído que funciona bem. |