Conhecimento mORMot Framework

Delphi

11/01/2013

Olá,

Alguém tem conhecimento sobre desenvolvimento com o mORMot Framework ([url]http://synopse.info/fossil/wiki/Synopse+OpenSource[/url])?
Victor Bianchi

Victor Bianchi

Curtidas 0

Melhor post

Aparecido Silva

Aparecido Silva

30/06/2015

olha só quem me deu uma ajuda muito valida foi o Ednei,
construí o meu modelo usando o sequinte exemplo
e até agora tem funcionado bem
http://synopse.info/forum/viewtopic.php?pid=12973#p12973
http://synopse.info/forum/viewtopic.php?pid=12621#p12621
implementei esses exemplos, e a partir dele fui criando os meu métodos,
uso como front-end o extjs

abraços

cido
GOSTEI 2

Mais Respostas

Questor Sistemas

Questor Sistemas

11/01/2013

Estou estudando, mas não tem um exemplo para dbx
GOSTEI 0
Edinei Colli

Edinei Colli

11/01/2013

Desenvolvi alguns códigos.
Se precisar de alguma dica me avise.
GOSTEI 0
Gerasoft Ltda

Gerasoft Ltda

11/01/2013

Edinei, você continua testando o mORMot ?
GOSTEI 0
Edinei Colli

Edinei Colli

11/01/2013

Boa noite Joel,

Ultimamente não tenho utilizado tanto, mas já utilizei o mORMot para persistência com SQLite, para serviços Rest e também como servidor para uma página criada com AngularJS.

Abraço
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Boa Noite Edinei, eu estou precisando do mormot pra um projeto com o extjs. DataSnap tens uns paus inacreditáveis, e fiz um teste basico com o mormot e sqlite foi perfeito,
minha dificuldade esta em outros DB como por exemplo o firebird, nao acho nada entendivel para meu nivel de connhecimento de appserver, se tiver alguma indicacao o modelo de fontes ajuda a gente...
GOSTEI 0
Edinei Colli

Edinei Colli

11/01/2013

Boa noite Aparecido,

Somente utilizei com SQLite.

Pelo que procurei, firebird pode funcionar com mORMot utilizando FireDac.
Você está utilizando com qual versão do Delphi?

Vou tentar fazer um exemplo funcionar.

Abraço
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Puxa, Cara obrigado!
Se tiver algum custo, terei o maior prazer em contribuir,
o Delphi que estou usando é o XE6 e o XE7
estou estudando full time o mormot me simpatizei muito com ele.

o exemplo ideal pra mim que resolveria os meus problemas usando o Firebird 2.5
e um exemplo que vem com o FrameWork.

18 - AJAX ExtJS Grid, é a forma como uso com o Php

Obrigado por responder.

cido
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

meu email se precisar em PVT é : suporte@samos.com.br

abraços

cido
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Alguem tem ideia do que fiz de errado, apresenta o erro 404

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, SynDBFireDAC,
Dialogs, StdCtrls, SynCommons, SynLog, mORMotDB,SynDB,FireDAC.Phys.IB, mORMot, mORMotSQLite3,
SynSQLite3Static, mORMotHttpServer,
SynCrtSock,SynSQLite3,mORMotMVC,SynDBZEOS;
type
TSQLSampleRecord = class(TSQLRecord)
private
fName: RawUTF8;
fQuestion: RawUTF8;
fTimeD: TDateTime;
public
published
property TimeD : TDateTime read fTimeD write fTimeD;
property Name : RawUTF8 read fName write fName;
property Question: RawUTF8 read fQuestion write fQuestion;
end;

TForm1 = class(TForm)
Label1: TLabel;
btnQuit: TButton;
Label2: TLabel;
btnShowLogs: TButton;
procedure btnQuitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnShowLogsClick(Sender: TObject);
private
public
Model: TSQLModel;
DB: TSQLRestServerDB;
Server: TSQLHttpServer;
end;

var
Form1 : TForm1;
implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.btnQuitClick(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
aProps : TSQLDBZEOSConnectionProperties;
begin

aProps := TSQLDBZEOSConnectionProperties.Create(
TSQLDBZEOSConnectionProperties.URI(
dFirebird,
'localhost:3050',
'C:\fbclient.dll',
False),
'c:\webserver\basefirebird\dados\samosdb.fdb',
'SYSDBA',
'masterkey');

Model := TSQLModel.Create([TSQLSampleRecord], 'contact');
DB := TSQLRestServerDB.Create(Model);

VirtualTableExternalRegisterAll(Model, aProps);

// customize RESTful URI parameters as expected by our ExtJS client

DB.URIPagingParameters.StartIndex := 'START=';
DB.URIPagingParameters.Results := 'LIMIT=';
DB.URIPagingParameters.SendTotalRowsCountFmt := ',"total":%';

// initialize and launch the server
// DB.CreateMissingTables;
Server := TSQLHttpServer.Create('8090',[DB],'+',useHttpApiRegisteringURI);
Server.AccessControlAllowOrigin := '*';

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Server.Free;
DB.Free;
Model.Free;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Label1.Caption := Caption;
end;

procedure TForm1.btnShowLogsClick(Sender: TObject);
begin
AllocConsole;
TextColor(ccLightGray); // to force the console to be recognized
with TSQLLog.Family do begin
Level := LOG_VERBOSE;
EchoToConsole := LOG_VERBOSE; // log all events to the console
end;
btnShowLogs.Hide;
end;

end.
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

11/01/2013

Aparecido dos Santos Silva resolveu o problema do erro 404?
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

consegui sim, tenho usado o mormot, sem problemas,
to usando o DelphiXE8 com FireDac e Firebird 2.5
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

11/01/2013

Tem alguma dica, indicação de tutorial pra passar.
GOSTEI 0
Almir Sousa.

Almir Sousa.

11/01/2013

Bom dia Aparecido/Edinei,

Poderiam postar um exemplo com o Firebird. Ajudaria bastante a galera que está com dúvida.

Agradeço desde já.
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

se for de ajuda, ta ai um link no dropbox do exemplo, feito no Delphi XE8
to usando com o extjs (sencha) mas nao coloquei em producao ainda,
apenas tenho testando.

https://www.dropbox.com/s/udozap9xdjm0k1z/AppMormotSample.rar?dl=0

abraços

cido
GOSTEI 1
Paulo Monteiro

Paulo Monteiro

11/01/2013

Aparecido,

Obrigado pelo exemplo.
Estou usando o datasnap gerando json padrão para integrar com o extjs ou outro tipo de Ria, mas estou tempo muito problema, acho que vou mudar para o Mormot ou TMS Sparkle.
No lugar do extjs puro, estou usando o unigui, gostei muito do resultado, faz um teste, vai reduzir bastante o tempo de desenvolvimento.

Abraços

Paulo
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Muito bom !!!

testei bastante o DataSnap, e achei o Mormot Melhor na performace, uso da memoria e
simplicidade na comunicacao com o ExtJs.
com o DataSnap tive que usar os recursos do http://enable-cors.org/ no Mormot cumunicou puro.
tudo que tenho feito funciona sempre de primeira, acho que vale mais a pena o MorMot.

Abraços
GOSTEI 0
Paulo Monteiro

Paulo Monteiro

11/01/2013

Bom dia Aparecido

Não sei se a estrutura que envio como exemplo é a mesma da que está trabalhando, se não se importar vou deixar uns pontos para revisar, conforme os teste que fiz:
Os TFDQuery estão acumulando na memoria;
Sugiro criar um FDConection por conexão, caso contrário irá ter problema com múltiplos acesso, tive esse problema, use o FDManager para gerenciar http://docwiki.embarcadero.com/RADStudio/XE6/en/Multithreading_(FireDAC)
Estou usando o JMeter para testar a carga, se fizer o teste na sua aplicação, vai consegui observar o que estou explicando.

Aproveitando, sabe como tirar o result:[], e só aparecer o json que gerou? No datasnap, precisei mudar a forma de retorno.

Abraços,
Paulo
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

eu nao fiz nenhum monitoramente até agora, mas vou verificar
sobre tirar o result fiz da sequinte forma
Texto := StrSubst(json,'{"result":[','',999);
Texto := StrSubst(Texto,'}]}','}',999);
contatei até o forum do mormot mas nao me deram solucao

http://synopse.info/forum/viewtopic.php?id=2400

// StrSubst
//******************************************************************//
function StrSubst(const S, Del, Ins: string; Count: Integer): string;
//*******//**********************************************************//
var
I, Found: Integer;
R: string;
begin
R := S;
if (S = '') or (Del = '') or (Del = Ins) then
R := ''
else
begin
Found := 0;
I := 1;
while ((Count = 0) or (Found < Count)) and (I <= Length(R)) do
begin
if Copy(R, I, Length(Del)) = Del then
begin
Inc(Found);
Delete(R, I, Length(Del));
Insert(Ins, R, I);
Inc(I, Length(Ins));
end
else
Inc(I);
end;
end;
Result := R;
end;
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Boa noite Paulo

tem como voce me mostrar como fez o FDConection por conexão ?
tentei fazer aqui e ele nao traz mais dados
retorna uma query vazia.

abraços
GOSTEI 0
Paulo Monteiro

Paulo Monteiro

11/01/2013

Bom dia Aparecido.

Como não conheço o mormot, não sei como ele trata essa parte, vi no blog deles que parece que tem um classe do mormot para usar com firedac.
No datasnap fiz da seguinte forma:
Criei um data module, com o FDManger, no create, carrego as configurações de conexão.


procedure TDMConexao.FormCreate(Sender: TObject);
var
  oParams: TStrings;
begin
  oParams := TStringList.Create;
  oParams.Add('Database=localhost:C:\FireBird\EMPLOYEE.FDB');
  oParams.Add('User_Name=SYSDBA');
  oParams.Add('Password=masterkey');
  oParams.Add('Pooled=True');
  FDManager.AddConnectionDef('Fenix_Pooled', 'FB', oParams);
  FreeAndNil(oParams);
  FDManager.Open;
end;

function TDMConexao.getSFConn: TFDConnection;
var
  SFConn: TFDConnection;
begin
  SFConn := TFDConnection.Create(nil);
  SFConn.ConnectionDefName := 'Fenix_Pooled';
  SFConn.Open();
  Result := SFConn;
end;

//na classe que será consumidas os metodos, coloque algo parecido com isso

procedure TCliente.getQtde:Integer;
var
  qry: TFDQuery;
  con: TFDConnection;
begin
  result := -1;
  con := FDConecao.getSFConn;
  qry := TFDQuery.Create(nil);
  qry.Connection := con;
 Try
   Try
        qry.SQL.text := 'select count(*) as Qtde from EMPLOYEE';
        con.Open();
        qry.Open();
         Result := qry.fieldbyname('Qtde').AsInteger;
        con.Close;
    Except
        on e: exception do
            addLog(e.message);
        End;
      end;
    end;
  finally
    con.Free();
    qry.Free();
  end;
end; 


Depois atualiza o seu exemplo e me envio o link, assim que acalmar um pouco as coisas aqui, vou fazer um implementação nele e te devolvo, mas vai me passando as atualizações, por favor.
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Legal,
tava no caminho certo, ja tinha alterado pra essa forma depois que vc me avisou...
achei uns modelos na NET

obrigado.
GOSTEI 1
Paulo Monteiro

Paulo Monteiro

11/01/2013

Então, no seu exemplo só está usando rest, mas o correto é o restful.
Sendo assim deveria está tragando o envio através do get/post/put/delete (restful), desta forma que fez, irá ter problema quando enviar bastante dados e tem a questão de segurança.
GOSTEI 1
Vitorino Almeida

Vitorino Almeida

11/01/2013

Olá Aparecido.
Por favor, tem como você postar o código de conexão do mORMot com Firebird que conseguiu?

Agradeço antecipadamente
GOSTEI 0
Adriano Dias

Adriano Dias

11/01/2013

Olá Aparecido!

Para personalizar o retorno do teu metodo, mude o tipo do retorno para TServiceCustomAnswer (com ele você pode especificar um conteúdo personalizado).

Exemplo:


function ReverseString(AText: RawJSON): TServiceCustomAnswer;
begin
  Result.Header := TEXT_CONTENT_TYPE_HEADER;
  Result.Content := FormatUTF8('%',[SO(System.StrUtils.ReverseString(AText)).AsJSon]);
end;

GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

obrigado pela resposta , vou implementar aqui..
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

o que seria o metodo SO() ??
GOSTEI 0
Adriano Dias

Adriano Dias

11/01/2013

Eu uso "Superobject" para fazer o parser JSON
GOSTEI 1
Aparecido Silva

Aparecido Silva

11/01/2013

deu certo, obrigado
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

estou tentando implementar nesse modelo o RestFul dizem que eh melhor e mais rapido
mas nao tenho muita experiencia em OOP, podem me dar uma dica

https://www.dropbox.com/s/udozap9xdjm0k1z/AppMormotSample.rar?dl=0
GOSTEI 0
Adriano Sérgio

Adriano Sérgio

11/01/2013

Aparecido, desculpa não ter respondido é que esta bem corrido as coisas por aqui.

Abri teu exemplo e esta rodando, quais seria tuas dúvidas e no que você precisa de ajuda, mais especificamente?
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

pessoal, alguem pode me dar uma forca em como enviar um OBJETO JSON no mormot via post ?
via get faço com uma mão nas costas.

ja pesquisei muito na net e nao consigo entender as explicacoes e no forum ninguem responde

Abraços
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

podia me dar uma força em como enviar OBJETOS JSON via POST ??
ja pesquisei muito e nao consigo achar nada que eu entenda o que fizeram

abraços
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

podia me dar uma força em como enviar OBJETOS JSON via POST ??
ja pesquisei muito e nao consigo achar nada que eu entenda o que fizeram

abraços
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

na realidade meu dados estao sendo enviados via url que tem limite de tamanho,
enviando os dado via POST pelo ExtJs 6.01, e meu problema tem sido como pegar
esses dados no mormot, ele até passa pelo metodo mas como os dados vem pelo
request payload nao consigo entender como faço para pega-lo e deserializar.
tenho sentido muita firmeza no mormot, esse acredito tem sido o meu ultimo
carma com ele, resolvendo to feliz.

Abraços

cido
GOSTEI 0
Leugim Legna

Leugim Legna

11/01/2013

Melhores cumprimentos.
Estou muito interessado em aprender Mormot / Delphi, até agora tenho trabalhado bem com DataSnap , mas como eu entendo Mormot é muito melhor, gostaria de criar um aplicativo cliente / servidor conectado a Firebird e não sabe como fazê-lo com Mormot ,
Cooperação ¿ poderia me dar uma mão , por favor?
Agradeço a atenção e ajudar
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

você chegou a baixar um modelo que deixei no site ??
senao solicite pelo email suporte@samos.com.br
que te envio.
GOSTEI 0
Aparecido Silva

Aparecido Silva

11/01/2013

Excelente exemplo de AppServer

https://github.com/GitStorageOne/mORMot.REST
GOSTEI 0
POSTAR