Blog
All Blog Posts | Next Post | Previous PostHello, TMS Sparkle
Monday, April 7, 2014
TMS Sparkle is a brand new product released by TMS Software. It is a Delphi framework for network, Internet programming.As stated in the online documentation, TMS Sparkle is the core building block for several other TMS products and technologies, such as upcoming TMS RemoteDB and TMS XData. Such products needed to be built from scratch, and to rely on a robust framework for which TMS could have 100% control and also responsibility. For such products to work flawlessly, we needed to be sure to build such products in a framework that must be properly tested, and have fast response in performance improvement and bug fixing.
It is trustworthy, fresh, modern, cross-platform (Windows, Mac, iOS, Android) and most of it, as much platform native as it can be.
TMS Sparkle is part of TMS Business Subscription, which contains many other products, like TMS Aurelius and TMS Scripter, and will also receive the mentioned upcoming products TMS RemoteDB and TMS XData.
For detailed information you can refer to TMS Sparkle product page and online documentation. In the meanwhile, to illustrate its usage, here is the full source code for a minimal Http Server using TMS Sparkle:
program HelloWorldServer; {$APPTYPE CONSOLE} uses System.SysUtils, Sparkle.HttpServer.Context, Sparkle.HttpServer.Module, Sparkle.HttpSys.Server; type THelloWorldModule = class(THttpServerModule) public procedure ProcessRequest(const C: THttpServerContext); override; end; procedure THelloWorldModule.ProcessRequest(const C: THttpServerContext); begin C.Response.StatusCode := 200; C.Response.ContentType := 'text/plain'; C.Response.Close(TEncoding.UTF8.GetBytes('Hello, World!')); end; const ServerUrl = 'http://localhost:2001/tms/business/hello'; var Server: THttpSysServer; begin Server := THttpSysServer.Create; try Server.AddModule(THelloWorldModule.Create(ServerUrl)); Server.Start; WriteLn('Hello World Server started at ' + ServerUrl); WriteLn('Press Enter to stop'); ReadLn; finally Server.Free; end; end.
Wagner Landgraf
This blog post has received 6 comments.
2. Friday, June 6, 2014 at 10:19:16 AM
Claudio, a arquitetura é aberta, nada impede de se usar dll''s. Dentro um módulo você pode fazer uma "subdivisão" e chamar funções de dll se for o caso. Nada impede também de você criar vários serviços diferentes (criar um outro servidor/executável sem parar o anterior). Mas estamos abertos a sugestões, se tiver algum exemplo específico, é só dizer. Pode enviar para o nosso e-mail (aba suporte) ou, se for usuário registrado, usar nosso fórum.
Wagner Landgraf
3. Thursday, January 15, 2015 at 6:54:15 AM
Estou trabalhando na pesquisa de um framework para desenvolvimento de um produto e achei a facilidade e a clareza na abordagem do Sparkle sua principal vantagem e fiquei bem impressionado com sua performance. Gostaria no entanto, de fazer duas perguntas:
1) Se vocês conhecem a razão pela qual o mORMot framework teve resultados significativamente melhores com testes de 100 threads nestes benchmark ( https://datasnapperformance.wordpress.com/2014/10/15/datasnap-performance-test/ ) mesmo quando ambos, mORMot e Sparkle, utilizam o mesmo motor http (http.sys)?
2) Existe algum planejamento (roadmap) para incluir um motor http alternativo para produção de servidores linux? Algo como “Monkey Http Server” ( https://github.com/monkey/monkey ), uma vez que está no roadmap da embarcadero ( http://edn.embarcadero.com/article/43677 ) o compilador para LINUX servers?
1) Se vocês conhecem a razão pela qual o mORMot framework teve resultados significativamente melhores com testes de 100 threads nestes benchmark ( https://datasnapperformance.wordpress.com/2014/10/15/datasnap-performance-test/ ) mesmo quando ambos, mORMot e Sparkle, utilizam o mesmo motor http (http.sys)?
2) Existe algum planejamento (roadmap) para incluir um motor http alternativo para produção de servidores linux? Algo como “Monkey Http Server” ( https://github.com/monkey/monkey ), uma vez que está no roadmap da embarcadero ( http://edn.embarcadero.com/article/43677 ) o compilador para LINUX servers?
Geziel
4. Thursday, January 15, 2015 at 12:09:16 PM
Geziel,
1) Nâo considero as diferencas relevantes. Ambos sao muito mais rapidos que plataformas consagradas e muito usadas como Wcf e Node.Js então sinceramente a diferenca entre um e outro eh apenas um número que so importa a obcecados com otimizacao. Pode haver uma serie de fatores, nao sei como foram realizados os testes e nao sei se os mesmos resultados seriam encontrados se forem repetidos diversas vezes. E pra ser honesto, nao estamos preocupados em saber. Tendo uma performance boa para uma aplicacao real (melhor que node.js!) estamos mais preocupados em prover funcionalidade, facilidade de uso, produtividade, robustez, etc.
2) Nossa limitacao eh apenas a capacidade da Embarcadero em prover os compiladores. Quando estiver compilando pra Linux, iremos suporta-lo (mas provavelmente sera o Apache Server). Nao temos por enquanto interesse em usar o Lazarus/FreePascal pois a funcionalidade RTTI é muito rudimentar e isso retiraria uma serie de recursos do Aurelius. Tambem vejo atualmente uma menor necessidade de Linux no servidor visto que eh muito facil e barato fazer deploy de servicos windows na nuvem hoje em dia.
1) Nâo considero as diferencas relevantes. Ambos sao muito mais rapidos que plataformas consagradas e muito usadas como Wcf e Node.Js então sinceramente a diferenca entre um e outro eh apenas um número que so importa a obcecados com otimizacao. Pode haver uma serie de fatores, nao sei como foram realizados os testes e nao sei se os mesmos resultados seriam encontrados se forem repetidos diversas vezes. E pra ser honesto, nao estamos preocupados em saber. Tendo uma performance boa para uma aplicacao real (melhor que node.js!) estamos mais preocupados em prover funcionalidade, facilidade de uso, produtividade, robustez, etc.
2) Nossa limitacao eh apenas a capacidade da Embarcadero em prover os compiladores. Quando estiver compilando pra Linux, iremos suporta-lo (mas provavelmente sera o Apache Server). Nao temos por enquanto interesse em usar o Lazarus/FreePascal pois a funcionalidade RTTI é muito rudimentar e isso retiraria uma serie de recursos do Aurelius. Tambem vejo atualmente uma menor necessidade de Linux no servidor visto que eh muito facil e barato fazer deploy de servicos windows na nuvem hoje em dia.
Wagner Landgraf
5. Saturday, April 18, 2015 at 12:27:11 AM
A onde posso encontrar mais informacoes sobre como realizar autenticacao de usuarios utilizando o XData (Sparkle)? Olhei a documentacao do mesmo e o mesmo faz pouca referencia sobre o assunto. Seria possivel disoibilizar um artigo simples sobre o assunto?
Antonio Baceiredo
6. Tuesday, April 21, 2015 at 12:05:06 AM
Antonio, We have received your e-mail about this subject, we can continue the conversation from there.
Wagner Landgraf
All Blog Posts | Next Post | Previous Post
Claudio Ferreira