Fala ai Radizeiros e Radizeiras, tudo bom com vocês?

Você que tem um servidor RestFull Delphi talvez já tenha tido dificuldades na manutenção do seu servidor, ou até mesmo em futuras implementações.

Você acabou aprendendo e criando o seu servidor de aplicação usando um monte de serverMethod, coloca um monte de componente, e vai usando que ta tudo lindo, te digo que isso não é legal, comece a organizar o seu código e você verá que sua manutenção será muito menos trabalhoso.

Então pensando nisso estou criando esse artigo onde você poderá aplicar o padrão MVC dentro do teu servidor de aplicação de uma forma prática e RAD.

Criando meu servidor de aplicação REST com Datasnap

Primeiro vamos criar nosso servidor de aplicação, no menu NEW > Other > DataSnap Server, onde iremos escolher o servidor DataSnap Rest Application.

Ao seguir a criação pela wizard, nós iremos criar o Stand-alone GUI application.

Na próxima opção que se segue iremos deixar marcado as seguintes opções:

Deixamos desta forma para que possamos criar um servidor realmente rest com tudo.

E vamos deixar marcado a opção TDSServerModule.

Essas são apenas algumas configurações que iremos deixar como padrão.

Após isso temos toda a estrutura do nosso servidor pronta para que possamos trabalhar.

MVC no DataSnap

Agora que vem o que muita gente tem dúvida sobre arquitetura MVC quando vai para 3 camadas.

Tudo é devido a questão do Model, View e Control, onde muitos entendem que a aplicação no cliente é a View, e o controller e Model dentro do servidor de aplicação.

Não é bem assim, cada projeto seu irá possuir a arquitetura MVC.

Dentro da arquitetura do DataSnap ou de qualquer servidor de aplicação, também pode implementar o MVC.

Na aplicação cliente, você terá o MVC, onde a View é seus formulários onde seu cliente irá interagir, o controller irá fazer o meio de campo, e o Model vai ser tudo o que irá se comunicar com o mundo externo, seja ler um arquivo INI, seja ler um documento XML, comunicar-se com o banco de dados, ou até mesmo com o servidor de aplicação.

Dentro de nossa estrutura do servidor DataSnap podemos criar o MVC, tudo que vier de requisição irá chegar através do ServerMethod, onde ele será nossa View, porque ele é a porta de entrada do servidor da aplicação, no ServerMethod ele poderá chamar uma ação que irá requisitar o controller, que irá requisitar o model que se comunica com o banco de dados.

Implementando MVC RAD

Dentro do nosso servidor de aplicação iremos criar nossa conexão com o banco de dados de forma RAD mesmo, onde você poderá ver que dá pra seguir o MVC usando o melhor do mundo Delphi.

Nós criamos um Data Module, que será nosso Model.

Nossa arquitetura encontra-se desta forma.

Dentro do nosso Model iremos ter tudo que é de requisição a ser feita dentro de nossas tabelas do banco, precisamos espelhar dentro do nosso servidor de aplicação as nossa entidades, que é tudo que iremos fazer relacionado as nossas tabelas do banco.

Iremos criar um novo Data Module, e iremos por o componente FDQuery, e salva-lo dentro da nossa pasta Model /Entidades.

Com essa estrutura.

Agora nós temos a conexão e nossa entidade da nossa estrutura MVC, de uma forma bem simples já criamos o modo que possamos trabalhar.

Agora que já temos o Model iremos criar o nosso controller, que é o cara que irá dar acesso às opções em nosso Model.

Antes de criar nosso controller devemos criar nossa classe factory,  que será nossa fabrica de entidades.

Dentro de nossa camada de entidades iremos criar uma Unit com uma classe bem simples, que será nossa fábrica de entidades.


type
    TModelEntidadeFactory = class
    private
    public
        function Produto : TModelEntidadeProduto;
    end;

implementation

{ TModelEntidadeFactory }

function TModelEntidadeFactory.Produto : TModelEntidadeProduto;
begin
    Result := ModelEntidadeProduto;
end;

E iremos salvar na pasta Model/Entidades.

Neste primeiro momento com essa estrutura você já consegue trabalhar com DataSnap da forma que talvez você já esteja acostumando a desenvolver, se você não usa POO afundo, se você tem seu DataSnap já pronto, se você não tem sua estrutura MVC nele, dessa forma você já consegue colocar MVC dentro de uma arquitetura 3 camadas.

Agora eu já tenho uma fabrica para criar nossas entidades.

Iremos criar agora nossa classe de controle na camada de controle do MVC.

Onde nossa classe irá chamar a fabrica de entidades do model.


type
    TController = class
    private
        FEntidades : TModelEntidadeFactory;
    public
        constructor Create;
        destructor Destroy; override;
        function Entidades : TModelEntidadeFactory;
    end;
implementation
{ TController }
constructor TController.Create;
begin
    FEntidades := TModelEntidadeFactory.Create;
end;
destructor TController.Destroy;
begin
    FreeAndNil(FEntidades);
    inherited;
end;
function TController.Entidades : TModelEntidadeFactory;
begin
    Result := FEntidades;
end;

end.

Como podemos observar na nossa classe de controller, nós ja deixamos instanciado a nossa fabrica de entidades,  quando for destruir nós damos um FreeAndNil, e quando pedir para retornar nós simplesmente em nosso método Entidades retornamos o objeto FEntidades.

Neste ponto já iremos conseguir organizar nosso servidor de aplicação, para que tenhamos uma arquitetura MVC, e que não fique tudo dentro do ServerMethod, os programadores Delphi tem um péssimo habito de jogar tudo dentro do ServerMethod, coloca um monte de componentes de conexão,e muito mais, e depois fica uma salada para dar manutenção.

A mesma preocupação que você tem em organizar seus código na sua aplicação client, tenha também em sua camada de servidor de aplicação, porque é lá que está sua regra de negócio agora.

Agora temos uma arquitetura MVC em nosso servidor de aplicação totalmente RAD.

 

Este post foi retirado de um dos meus treinamento, o de RestFull com DataSnap.

O que você irá aprender?

O treinamento de Datasnap Restfull dará a você a oportunidade de melhorar seu desenvolvimento, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes.

Desenvolver um servidor de aplicação RestFull com Datasnap e utilizar todos os seus benefícios irá facilitar muito a sua vida,  quando seu cliente disser “preciso dos meus dados na web hoje mesmo” você estará preparado para entregar uma solução robusta e eficaz.

Nesse treinamento você irá aprender de forma prática a criar as principais rotinas de CRUD e Segurança para servidores RestFul Datasnap que podem ser consumidos de qualquer aplicação front-end.

CLIQUE AQUI E SAIBA MAIS SOBRE O TREINAMENTO RESTFULL COM DATASNAP.