.NET

Cloud Native e Cloud Agnostic

para rodar .NET em qualquer Cloud
ou sem Cloud sempre de forma profissional!

Últimas publicações

Aqui estão os últimos 12 posts de mais de 500…

Docker – de A a Z – 13 – Bridge Network

Docker – de A a Z – 13 – Bridge Network

Olá pessoal, nesse vídeo vou abordar as diferenças entre Default Bridge Network e redes User Defined Bridge Networks, as redes que geralmente criamos para nossos containers. As diferenças entre as redes bridge padrão e as que você cria é a capacidade de realizar descoberta de containers com base...

ler mais
Docker – de A a Z – 12 – Demo MongoDB no Docker

Docker – de A a Z – 12 – Demo MongoDB no Docker

Pessoal, uma das demos mais pedidas, MongoDB no Docker. Nessa demo vou apresentar o setup do MongoDB com e sem autenticação. Ficou muito legal! https://youtu.be/wpz8zUZW3kk O MongoDB se destaca com um dos bancos NoSQL mais utilizados no mundo, em projetos das mais distintas naturezas. É um projeto...

ler mais

Fique por dentro e não perca nada

Menos de 10% da audiência recebe o conteúdo publicado

A newsletter é o meio mais eficiente de furar o bloqueio dos algoritmos das redes sociais e fazer o conteúdo chegar até você.

Assim evitamos poluir as comunidades com chamadas para eventos e lives.

Essa é forma mais eficiente de receber meu conteúdo.

Somos mais de 6k inscritos

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 tutorial

Para 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…

Conteúdo

DevOps & Tests Hack Nights – Microsoft Fakes

DevOps & Tests Hack Nights – Microsoft Fakes

Pessoal, daqui a pouco 19 horas vou falar sobre Microsoft Fakes no Canal .Net. Para quem não conhece, Microsoft Fakes é uma infraestrutura de Mocking que suporta teste de artefatos "intestáveis", seja comportamentos do .Net Framework ou métodos estáticos, esse recurso é extremamente útil quando...

ler mais
Todo WebDev deveria saber: Infraestrutura

Todo WebDev deveria saber: Infraestrutura

Nós trabalhamos com projetos web, serviços, apis, conversamos e definimos soluções, desenhamos projetos pequenos, médios, mas e quando o bicho pega e você precisa de algo maior? Estar pronto para administrar e resolver problemas do dia-a-dia no desenvolvimento web, consiste em conhecer também...

ler mais
Windows Subsystem for Linux – O que é?

Windows Subsystem for Linux – O que é?

Windows Subsystem for Linux Esse é o nome da recém lançada feature do Windows que permite executarmos pacotes e binários nativos do Linux em um ambiente Windows. A Microsoft está investindo pesado em Open Source e na interoperabilidade. As novidades surgem a cada dia, como o ASP.NET Core, já...

ler mais
Simplificando tudo

Simplificando tudo

Esse é um post rápido, uma crítica a aqueles que querem sempre simplificar tudo, de forma indiscriminada, e no final criam frankensteins conceituais. A ideia que refuto é: Vamos implantar SCRUM, mas sem ... pq não precisamos. Vamos usar RUP, mas sem... pq não é necessário. Vamos implementar SOA,...

ler mais

Conheça nosso Podcast

DevShow Podcast

Em 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.

Saiba mais...

.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]Be welcome, now boarding, Oragon Architecture 7

[deprecated]Be welcome, now boarding, Oragon Architecture 7

[deprecated]

Bom,

a freqüência de posts está bem reduzida, e isso acontece em virtude da refatoração que estou fazendo no projeto. Nem lancei a release 7, e as features solicitadas já sugerem uma grande reestruturação.

What’s new

  • Reestruturação dos metadados de troca de mensagem para tornar mais flexível e dinâmico. Permite estender a interface de management permitindo que sua aplicação hospedada envie parâmetros próprios para o Application Server.
  • Novo e robusto deshboard!
Oragon Aaron .Net Aplication Server

Oragon Aaron .Net Aplication Server

  • English Content! Bom, minha intenção inicial era criar uma wiki em PT-BR, mas tenho motivos e empolgação suficiente para anunciar que o material será em inglês!
  • Um site próprio, será hospedado contendo uma extensa documentação para utilização e extensão.
  • Algumas features movidas de Sprint:
    • Toda a camada de abstração com RabbitMQ será recriada no novo Sprint. Embora já esteja pronta no iMusica, há questões de ética e design envolvidas, portanto será toda reescrita do zero.
  • Oragon Architecture Application Server a partir de agora se chamará Oragon Aaron, .Net Application Server.

Um dia eu penso com calma se o projeto deve perder o termo “Architecture” do nome. De fato, se olharmos para o Brasil e a comunidade brasileira, fato que o nome é uma barreira por sí só!

Bom, o projeto segue, bombando. Com muita coisa interessante. Em breve, mais notícias!

[deprecated]Oragon.BuildTools.NugetTools – Utilitário de linha de comando para sincronizar arquivos NuSpec

[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.

 Nuget-600x300[1]

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:
  • 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]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]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…

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

2018-2020

2020-2021

2021-2022

2022-2023

2023-2024

2024-2025

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.