It is a behavioral project pattern that transform a order to an independent object that contains all the necessary information.

Characteristics

  • Command: The own command, that contains the instructions and references.
  • Receiver: The thing that the command will execute.
  • Invoker: Responsible to execute the commands.
  • Client: The beginning of all. It decides what command will execute.

An important observation is that the command has all the data to process the request.

Hands-On

I will not do specifics implementations like ClientRepository. Instead of this, I will just use the interface.

Commands Implementation

First we need to create the interface ICommand, which will contain all the…


Well, let’s start from the beginning! Sir Tony Hoare is who created the null reference, in 1965. Unitl now, Null checks is completly a requirement when we develop something.

Normal Situation

It is usually that we very commom we see null checks, like this:

public void CreateClient(IClient client)
{
if (client == null) throw new NullReferenceException();
if (client.Name == null) throw new NullReferenceException();
// ... do something
}

But, what if you could guarantee that the object was never null?

For this, watch below:

Null Object Pattern

First, we need to define a default object:

public class NullClient : IClient
{
public int Id =>…


Ir para Parte 02

Vamos então falar de um “side effect” específico?

Exceções são um tipo de “side effects”, onde, muitas vezes, não conseguimos controlar o que será disparado como exceção em uma aplicação.

Diante disso, vamos falar sobre as técnicas/preferências com relação a utilização do bloco try…catch:

  • Comumente, podemos notar a utilização do bloco try…catch em camadas de níveis mais alto, como em controllers. Isso se faz na intenção de garantir que nenhuma exceção será estourada, em um determinado fluxo, onde poderá fazer com que sua aplicação “morra”.
  • E, algumas vezes, podemos perceber a utilização do bloco try…catch em…


Ir para Parte 01

Agora, vamos ver alguns exemplos comuns, que esboçam pontos de “falhas”, onde não atendem a esse paradigma e como alterá-los para estar em conformidade com a Programação Funcional.

Atendendo os princípios da imutabilidade


Fala pessoal, tudo joia 😁? Resolvi escrever este artigo como forma de compartilhar o que eu puder aprender no curso Aplicando Princípios Funcionais em C#, do professor Vladimir Khorikov, no Pluralsight 🤓.

Bom, vamos lá 🚀!

Programação funcional é mais um conceito de paradigma de desenvolvimento, assim como outros que já existem como Orientação a Objetos e Estruturada. Mas o que isso significa? Basicamente, paradigmas de desenvolvimento é uma forma de expressar como é organizado o código.

Bom, no paradigma funcional, em modo geral, quebramos nossos processamentos em várias funções menores onde cada uma é executada após outra, em sequência…


Vamos falar um pouco de Azure DevOps?

Quem aí trabalha com esta ferramenta, seja na sua empresa ou equipe, deve ter percebido o valor e o poder dela. Você consegue fazer basicamente tudo nesta ferramenta, como gerenciamento de equipe, controle de repositórios de código e Continuous Integration/Continuous Deployment (CI/CD).

Com relação ao CI/CD, conseguimos criar nossas Pipelines utilizando tanto o modo clássico (arrastar caixinhas) quanto em YAML, além de poder fazer pipelines diferentes ou juntas. E é sobre isso que vamos aprofundar hoje!

O CI/CD é, simplesmente, a criação de pipelines que ficam responsáveis por analisar a integração de sua…


Many times we have some situations that require our application to attend to many clients. In this context, we have some techniques to attend this, but we will talk about three architectural strategies:

Single-Tenant

This technique consists of providing all of the new infrastructure necessary to stand-up an application. So, this signifies that you create a new instance of applications, a new database, and all other necessary things.

Clearly, you can note that the new client wins a new and completely isolated application. …


Go to Part 01

For this article, we will focus on Hybrid-Tenant, according to the before part of this article. So, let’s see our scenario that we will build:

  • First, about the business rules: we will register many users in a different database, according to the register number of the company.
  • Second: all the data will store in MongoDB, so we will manipulate more than one database on it.
  • Third: we will build an API using .NET Core
  • Fourth and last: we will implement the tenancy technique in our project, according to request.

The complete solution will be:


— Ir para Parte 01 —

Agora que sabemos, teoricamente, o que é uma Arquitetura Hexagonal, vamos a parte prática 🚀!

Para isso, desenvolveu-se uma API em .NET Core 3.1 e utilizou-se o Visual Studio 2019 Community.

O modelo de negócio será simples. Teremos, apenas, algumas operações referentes a times de futebol, tais como:

  • Cadastro de um time de futebol e notificação por email
  • Recuperação de todos os times de futebol

Antes de inciarmos, vale ressaltar um ponto. Para desenvolver esse tipo de aplicação é importante saber, muito bem, o que é S.O.L.I.D., Injeção de Dependência e Inversão de Controle.

Show me the Code! 💻


Antes de começarmos a adentrar no assunto de arquitetura hexagonal, vamos, primeiro, entender alguns conceitos antes 📚.

Arquitetura de Software

Acredito ser interessante sabermos, antes de tudo, o que é Arquitetura de Software e no que isso nos auxilia. Por trás de todo sistema há uma estrutura organizacional envolvida, a qual chamamos de Arquitetura de Software. Tal conceito serve para poder ajudar a compreender a diferença entre linguagens, sistemas operacionais, ambientes, experiência de seu time tecnológico e qualquer outro componente tecnológico que possa fazer parte de uma solução. …

Alex Alves

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store