Microservices com Delphi — Parte 3

Podemos utilizar diretamente uma instância de TMicroServiceClient, passar um XML como parâmetro e obter a resposta. Mas isso não seria o ideal. Devemos ter Classes de Negócio, com suas próprias Regras e entrada/saída de informações.

Vamos codificar uma Classe de Negócio, que construa seu próprio XML e utilize, internamente, uma instância do Client.

Continue →

Microservices com Delphi — Parte 2

Não basta apenas utilizar um Protocolo HTTP para fazer a comunicação com os Microservices. É necessário, também, codificar um Localizador de Microservices.

Veja como um implementar um Localizador simples, utilizando um SGBD, e também a implementação de um Client para fazer a comunicação com qualquer Microservice no nosso framework.

Continue →

Microservices com Delphi — Parte 1

Imagine um grande Sistema ERP codificado em Delphi 7, com Regras de Negócio rigidamente codificadas para serem utilizadas somente numa aplicação Desktop.

Se você tivesse que evoluir esse sistema para proporcionar uma interoperabilidade com outros Sistemas, versões Web ou mesmo simplificar sua manutenção, o que você faria?

Minha resposta, Microservices.

Continue →

Classes de Dados

Objetos são constituídos de Estado e Comportamento, enviam mensagens uns aos outros e devem representar Entidades reais de tudo que existe fora do Contexto do Software.

E os Dados, onde estão os Dados?

Continue →

Nomeando Variáveis e Métodos

A nomenclatura correta de Variáveis e Métodos simplifica e melhora o entendimento do código.

Basicamente há uma única Regra para nomear ambos: Não utilize prefixos.

Continue →

Nomeando Unidades

Acredito que todos os nomes de Unidades em um Projeto Object Pascal, quiça em qualquer outra linguagem, deveriam ser hierárquicos do mais genérico para o mais específico.

Neste artigo irei escrever sobre a lógica em utilizar uma nomenclatura hieraquizada para deixar seu projeto mais coeso e elegante.

Continue →

Assinatura Digital em Arquivos XML

A Assinatura Digital é cada vez mais utilizada devido a segurança de integridade que ela proporciona. Nesse artigo vou demostrar como Assinar Digitalmente um arquivo XML utilizando o framework ACBr.

Continue →

Objetos Imutáveis

Objetos Imutáveis são seguros, são thread-safe, simples de entender, construir e testar. Evitam acoplamento temporal, previnem a referencia nil/NULL e não precisam utilizar “cópia defensiva”.

Continue →

Métodos Getters e Setters

Seus Objetos representam alguma Entidade real ou são apenas um “balde de dados e funções”? Classes que possuem somente métodos Get/Set não geram Objetos reais seguindo o real conceito da Orientação a Objetos.

Continue →

Herança pode ser o Mal da Orientação a Objetos — Parte Final

No artigo anterior falei sobre Forte Acoplamento. Nesse artigo irei falar sobre Hierarquias Complexas e concluir a série.

Continue →

Herança pode ser o Mal da Orientação a Objetos — Parte 4

No artigo anterior falei sobre Duplicação de Código. Nesse artigo irei falar sobre o Forte Acoplamento que ocorre ao utilizarmos a Herança de Classe.

Continue →

Herança pode ser o Mal da Orientação a Objetos — Parte 3

No artigo anterior falei sobre Violação de Encapsulamento. Nesse artigo irei falar sobre a Duplicação de Código ao utilizarmos a Herança de Classe.

Continue →

Herança pode ser o Mal da Orientação a Objetos — Parte 2

No artigo anterior citei alguns males ao utilizarmos Herança de Classe. Nesse artigo irei falar sobre um deles, a Violação de Encapsulamento ao utilizarmos Subclasses.

Continue →

Herança pode ser o Mal da Orientação a Objetos — Parte 1

Se você utiliza Herança em seu código, especificamente Herança de Classe, pode estar cometendo um erro terrível.

Com o uso da Herança você viola o encapsulamento de suas Classes, deixa seu código menos flexível e mais complexo.

Herança de Classe deve ser evitada a todo custo.

Continue →

Singleton é um anti-padrão?

O padrão Singleton garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu Objeto.

O conceito do Singleton não está errado, mas sua implementação clássica está.

Continue →