.NET
Cloud Native e Cloud Agnostic
para rodar .NET em qualquer Cloud
ou sem Cloud sempre de forma profissional!
Últimas publicações
Enfim Generally Available do WSL2 que chega ao Windows 10 na versão 2004
A maior expectativa que eu tinha nos últimos anos era esse lançamento: WSL2 em Generally Available. Ficou fantástico! Antes de falarmos de WSL2 precisamos falar de WSL e do WSL1 e sua história na Microsoft. Um pouco da história do WSL WSL1 chega no Microsoft Build 2016 para explodir a cabeça de...
Tesseract OCR + ASP.NET Core
Esse projeto nasceu de uma iniciativa de combate a SPAM. Spammers no telegram usam novas táticas todos os dias e corrida de gato-e-rato nos faz usar tecnologia para sanar e bloquear as iniciativas desses spammers. Eu particularmente sou extremamente ativo no telegram, e lidero alguns vários...
A mecânica das decisões
Chegou a hora de avaliarmos o mercado, a situação na qual estamos e entender quais movimentos são possíveis. Entender friamente o que pode acontecer e quais são os movimentos possíveis nesse tabuleiro, nos permite antecipar ações para minimizar os efeitos de sermos atingidos de surpresa. Esse...
Live Coding – Coravel Application Framework
Pessoal, vamos animar essa quarentena? Essa é a primeira vez que vamos fazer isso e vamos construir essa dinâmica juntos. Eu preciso da sua participação e sua ajuda para definir o roadmap, mas por hora vamos falar sobre tecnologia e ver no que dá! Não tem pauta definida, vamos ver no que vai dar!...
Jornada DevHero – REPRISE
Em janeiro de 2019 produzi um evento chamado Jornada Dev Hero. A jornada do desenvolvedor, mostrando o caminho que eu e diversos amigos trilhamos para chegar onde chegamos. Eu achei o conteúdo tão rico e tão importante em termos de mensagem e capacidade de transformação que tinha reais planos de...
.NET no Linux, vale a pena?
A gente está a tanto tempo nessa batida, que nem nos questionamos mais, mas há muita gente que ainda tem dúvidas ou precisa de argumentos. Enquanto de um lado sequer cogitamos fazer deploy de aplicações .NET Core no Windows, por outro há quem ainda tenha medo de sair do windows. Uma carreira...
O dado é do usuário, não é seu, nem do sistema!
Parece um conceito banal, mas vou contar uma história atual, muito recente e vou contar o reflexo disso operacionalmente. É mais um daqueles casos em que a "boa vontade" é traduzida em processo e procedimentos equivocados que geram mais problemas do que soluções. O contexto Recentemente lancei um...
Do WCF para ASP.NET Core Web API com Docker no Linux 2/2
Agora é hora de mostrar como podemos tirar proveito dos contratos (interfaces) existentes para promover essa migração. Esse é o momento em que a "SOPA de LETRINHAS" ou melhor, os design patterns fazem sentido. Graças a eles, essa migração que poderia ser dolorosa e desastrosa, se torna algo fácil....
Do WCF para ASP.NET Core Web API com Docker no Linux 1/2
Não sei se você conhece WCF, rodando uma enquete eu percebi que uma parcela considerável sequer conhece WCF. Hoje vamos costurar o assunto com um outro post para que eu possa mostrar como fazer uma migração de WCF pra Web API no ASP.NET Core, rodando em containers Linux. Nosso cenário de teste é...
Sobre 1° de Agosto e o Fim do Hangouts On Air – Como resolvemos com Docker, NGINX e RTMP no Azure Container Instances
1° de agosto de 2019 foi um dia agitado. Fomos surpreendidos com a ausência do Google Hangouts On Air, mas logo reagimos às mudanças com uma solução baseada em Azure Container Instances, NGINX, Docker para fazer streaming a 60FPS em 1080p!!! Streaming gamer para live de código 😎!!! Confira...
Docker Definitivo – Janela de Inscrição – JAN/2020
Todo os dias tomamos decisões das mais variadas. Dormir mais 5 minutos, pegar o celular antes de dar bom dia, fazer café? Será que dá tempo? Tomar café na rua? Ah! Maldito café de máquina! Que caminho tomar? Carro, metro, trem ou ônibus? Prestar atenção na paisagem ou ler um livro? Escutar uma...
Troubleshooting Comentado – Docker – ASP.NET Core – NGINX
Já faz muito tempo que eu queria fazer esse formato. Documentar uma ação qualquer de troubleshooting na comunidade para poder transformar em conteúdo, fazendo pausas didáticas e interrupções para poder contextualizar no formato de quebra da 4ª parede. O Felipe Bossolani, que também é moderador de...
Projetos Open Source
projetos ativos e projetos antigos disponíveis para estudo
Nenhum resultado encontrado
A página que você solicitou não foi encontrada. Tente refinar sua pesquisa, ou use a navegação acima para localizar a postagem.
Entender | Analisar | Projetar | Desenvolver | Implantar | Manter
A segurança que você busca não está em um tutorialPara entender uma tecnologia é importante entender o que influenciou sua criação, o que ela faz de fato, como ela faz. Para que então se sinta seguro e confiante a respeito das decisões que está prestes a tomar.
De um lado precisamos compreender o que está sendo feito por baixo dos panos para descobrir como extrair o máximo de uma tecnologia ou, ao menos, não atrapalhar o bom funcionamento dela.
O Cloud Native .NET é uma jornada de descoberta sobre tecnologias e patterns que fazem parte da maioria dos softwares que usamos, que somos usuários e que suportam e toleram altas cargas de trabalho, de forma eficaz, eficiente e sustentável.
É primeiro entendendo o que eles fazem, que podemos descobrir oportunidades e evoluir no que fazemos…
Conheça nosso Podcast
DevShow PodcastEm 2019 resolvemos criar um podcast, o DevShow Podcast, desde lá são mais de 40 episódios com muito assunto legal, sempre com essa pegada pessoal, falando coisas sérias, mas sem o menor compromisso com a formalidade.
.NET
Nenhum resultado encontrado
A página que você solicitou não foi encontrada. Tente refinar sua pesquisa, ou use a navegação acima para localizar a postagem.
Arquitetura
[deprecated]Oragon.BuildTools.NugetTools – Utilitário de linha de comando para sincronizar arquivos NuSpec
[deprecated]
Olá, como vai você?
a partir da seguintes demandas, criei um executável utilizável de linha de comando que ajuda na atualização de Nuspec files.
Premissas
- Minha solution tem uns 25 projetos e são todas bibliotecas publicáveis no NuGet.
- Se tentar gerar os pacotes com base no CSPROJ, faltam metadados (assemblyInfo) para preencher todos os campos de metadados do Nuspec
- Além da falta de metadados no assemblyInfo, para alguns dos projetos, preciso de mais complexos (o csproj não contempla as informações que preciso) embora sejam poucos, eles existem.
Problemas endereçados
- Quando adiciono referências no meu projeto, isso não se reflete no nuspec do projeto, mesmo que estas sejam oriundas de pacotes nuget e atualizem o packages.config
- Os utilitários de linha de comando do Nuspec sabem gerar um novo nuspec, mas não sabem que meus projetos serão dependências nuspec dos próprios projetos, pois na mesma solution, é preferimos adicionar referências por projetos.
- Gosto de refactoring, e me proponho a cada funcionalidade revalidar o posicionamento e estratégia de empacotamento dos projetos, assim os projetos mudam. Funcionalidades são quebradas em novos projetos, e esse é o dia-a-dia. Ao começar a gerar pacotes nuget, percebi que perdi essa flexibilidade, por causa do esforço de atualização.
Oragon.BuildTools.NugetTools
Endereçando esses problemas, criei um projeto, bem simples. Não passam de 10 classes, está disponível em https://github.com/luizcarlosfaria/Oragon.BuildTools
Executando:
Oragon.BuildTools.NugetTools.exe /mergenuspec /solution="D:ProjetosOragon.Architecture[Source]OragonArchitecture.sln" /convertSolutionProjectsInNugetReferences /createNuspecIfNeed=".nugetNuGet.exe"
1) /mergenuspec
Obrigatório
Hoje é a única operação conhecida pelo projeto. Determina que será feito um merge entre seu CSPROJ e seu NUSPEC respectivo.
2) /solution=“D:ProjetosOragon.Architecture[Source]OragonArchitecture.sln”
Obrigatório
Determina o path completo do arquivo de solução. É com base nele que seus projetos serão identificados.
3) /convertSolutionProjectsInNugetReferences
Opcional
Referências de projetos são consideradas referências nuget com a mesma versão do seu projeto.
<dependencies> <dependency id="Common.Logging" version="2.2.0" /> <dependency id="Common.Logging.Core" version="2.2.0" /> <dependency id="Microsoft.AspNet.Cors" version="5.1.2" /> <dependency id="Microsoft.AspNet.SignalR.Core" version="2.0.3" /> <dependency id="Microsoft.AspNet.SignalR.SelfHost" version="2.0.3" /> <dependency id="Microsoft.AspNet.WebApi.Client" version="5.1.2" /> <dependency id="Microsoft.AspNet.WebApi.Core" version="5.1.2" /> <dependency id="Microsoft.AspNet.WebApi.Owin" version="5.1.2" /> <dependency id="Microsoft.Owin" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.Cors" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.Diagnostics" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.Host.HttpListener" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.Hosting" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.Security" version="3.0.0-beta1" /> <dependency id="Microsoft.Owin.SelfHost" version="3.0.0-beta1" /> <dependency id="Newtonsoft.Json" version="6.0.3" /> <dependency id="Oragon.Architecture.Bootstrap" version="7.0.0-alpha1" /> <dependency id="Oragon.Architecture.External.db4o" version="7.0.0-alpha1" /> <dependency id="Oragon.Architecture.ExtJS" version="7.0.0-alpha1" /> <dependency id="Oragon.Architecture.Icons" version="7.0.0-alpha1" /> <dependency id="Owin" version="1.0" /> <dependency id="Spring.Core" version="2.0.0-RC1" /> <dependency id="Spring.Services" version="2.0.0-RC1" /> <dependency id="Topshelf" version="3.1.3" /> <dependency id="Oragon.Architecture.ApplicationHosting" version="$version$" /> <dependency id="Oragon.Architecture.Serialization" version="$version$" /> <dependency id="Oragon.Architecture.Services.SpringFramework" version="$version$" /> <dependency id="Oragon.Architecture.Services" version="$version$" /> <dependency id="Oragon.Architecture.Web.Owin.OMvc" version="$version$" /> <dependency id="Oragon.Architecture.Web.SignalR.SpringFramework" version="$version$" /> <dependency id="Oragon.Architecture" version="$version$" /> </dependencies>
4) /createNuspecIfNeed=”.nugetNuGet.exe”
Se seu projeto ainda não contém um nuspec file, um será criado na pasta “PROPERTIES” de seu projeto.
O endereço do nuget.exe deve ser relativo ao endereço da solução.
Não se preocupe, O executável tanta achar seu arquivo nuspec do projeto dentro da pasta do projeto e dentro da pasta properties do projeto. Com qualquer nome. Se existir somente 1 arquivo, automaticamente assumo que esse é o nuspec do projeto, independente de suas configurações e nomes.
Quando um projeto não possui um arquivo nuspec e esse é criado (usando o parâmetro /createNuspecIfNeed), o arquivo nuspec será criado com o mesmo texto do AssemblieName definido no projeto (Project/PropertyGroup/AssemblyName). Esse mesmo nome será usado como ID e Title. E pode ser mudado a qualquer momento. Essas propriedades não são gerenciadas, apenas criadas quando não existe nuspec para o projeto.
4) /debug
Ao iniciar a execução, um prompt do visual studio será aberto para que você possa realizar o debug. Semelhante à janela de erro não gerenciado, quando executamos apps fora do ambiente de debug.
Informações adicionais
- O merge será realizado com base nas referências de seu projeto e nas referências explícitas no packages.config.
- Ao optar por usar o parâmetro “/convertSolutionProjectsInNugetReferences”, as referências de outros projetos da mesma solução serão marcados como nuget references (como exemplo, as linhas em vermelho do passo 2)
- Ao optar por usar o parâmetro “/createNuspecIfNeed”, será criado um pacote padrão, com algumas automações como:
- ID
- Title
- Authors
- Owners
- Version (será usado $version$, saiba mais sobre “Replacement Tokens” em http://docs.nuget.org/docs/reference/nuspec-reference)
- Seu arquivo NUSPEC antigo não é comprometido. Apenas as dependências são recriadas (com base no packages.config e dependendo do parâmetro /convertSolutionProjectsInNugetReferences também das referências do projeto). Demais atributos, valores e propriedades não são gerenciados.
Restrições
- Testado com soluções baseadas no Visual Studio 2013 (acredito que funcione em soluções do VS2010 e VS2012 também).
- Suporta apenas arquivo de projeto CSPROJ
- Suporta NUSPEC 2011/08.
O projeto é bem simples, mas ajuda bastante. Principalmente porque senti muita falta dessas features nativas no nuget.
Depois eu falo de integração contínua com jenkins, gerando pacotes e publicando-os! Esse assunto também é muito interessante
[deprecated]Apresentação Oragon Architecture
[deprecated]
Olá,
como vai você? Bom, espero que nesse dia das mães não esteja enfurnado no computador. Bom, do meu lado a minha fica distante de mais, em muitos os sentidos, portanto, lá vamos nós!
Hoje não vou falar muito, vou compartilhar apenas uma apresentação que fiz sobre algumas features do Oragon Architecture. A maioria já é bem conhecida, mas algumas outras são novinhas. Abaixo temos a apresentação, espero que goste. ler mais…
[deprecated]Oragon Architecture – Application Hosting – Suporte para Nijnect e SimpleInjector e qualquer outro container
[deprecated]
Bom, tenho escrito o bastante para nem precisar perguntar como você está! Né?!
Já estamos íntimos e agora vou contar uma novidade! Implementei o suporte a dois containers bem conceituados no mercado e simplifiquei o modelo para que você possa implementar facilmente uma nova extensão para qualquer IoC container que tenha o interesse de trabalhar.
Só para mostrar como é simples, está aqui todo o código para estender o Oragon Architecture Application Hosting para o Ninject.
public interface INinjectFactory : IContainerFactory<IKernel> { } public class NinjectApplicationHostController : ApplicationHostController<INinjectFactory, IKernel> { } public class NinjectApplicationHost : ApplicationHost<NinjectApplicationHostController, INinjectFactory, IKernel> { }
Se não se convenceu ainda, aqui está o código para criar uma integração nova com o SimpleInjector
public interface ISimpleInjectorFactory : IContainerFactory<Container> { } public class SimpleInjectorApplicationHostController : ApplicationHostController<ISimpleInjectorFactory, Container> { } public class SimpleInjectorApplicationHost : ApplicationHost<SimpleInjectorApplicationHostController, ISimpleInjectorFactory, Container> { }
Simples né?!
A escolha dos dois frameworks se deu pelas suas características enquanto o SimpleInjector é o mais rápido em diversos benchmarks, o Ninject é de cara o mais procurado. ler mais…
[deprecated]Oragon Architecture – Application Hosting – Criando uma nova aplicação baseada em Spring.Net
[deprecated]
Olá, como vai você?
Por aqui tudo bem! No post anterior fiz um overview do Oragon Architecture Application Hosting, falando no que foi feito, agora vou demonstrar como hospedar aplicações baseadas em Spring.Net.
[deprecated]Oragon Architecture – Application Hosting
[deprecated]
Olá, como foi sua páscoa?
Espero que tenha sido muito boa, com muitos doces e família. Já por aqui essa páscoa teve muito doce e muito trabalho. Consegui implementar algumas mudanças no Oragon Architecture, espero que goste! Nesse post vou falar um pouco sobre o novo host de aplicações, o subsistema Application Hosting. Muita coisa mudou nessa versão, e agora não exigimos mais que use Spring.Net, embora tenha suporte prioritário.
Containers
Nenhum resultado encontrado
A página que você solicitou não foi encontrada. Tente refinar sua pesquisa, ou use a navegação acima para localizar a postagem.
Mensageria
Nenhum resultado encontrado
A página que você solicitou não foi encontrada. Tente refinar sua pesquisa, ou use a navegação acima para localizar a postagem.
Conteúdo e Posicionamento
.NET + Cloud Native + Cloud Agnostic
.NET | DevOps | Microservices | Containers | Continuous Delivery
.NET muito além do .NET
O mínimo de infra que todo dev e/ou arquiteto deveria saber
Aplicações distribuídas e comunicação entre serviços (RabbitMQ / gRPC)
Containers, Docker e Kubernetes
RabbitMQ e Mensageria e comunicação assíncrona entre aplicações e serviços
Arquitetura de Software e Arquitetura de Solução com foco no melhor aproveitamento em projetos .NET
Nossos números
Desde 2002 trabalhando com desenvolvimento de software
Desde 2002 ajudando outros devs
Desde 2010 trabalhando exclusivamente como arquiteto
Contas atingidas no telegram/facebook
Alunos
Microsoft MVP
Conteúdo Gratuito
Tudo que está aqui no gaGO.io é conteúdo gratuito, feito para ajudar desenvolvedores dos mais variados níveis.
Cursos
Tenho também alguns programas de acompanhamento. Esses programas tem a função de ajudar desenvolvedores em áreas específicas ou de forma mais abrangente na jornada do arquiteto.