Blog
All Blog Posts | Next Post | Previous PostTMS XData está chegando
Monday, August 26, 2013
Uma nova framework chamada TMS XData está prestes a ser lançada pela TMS. É difícil definir uma framework com poucas palavras, especialmente se essa framework é modular e muitas partes dela podem ser usadas separadamente. Porém, usando uma definição bem abrangente, poderia dizer que TMS XData é uma framework que permite fornecer e consumir dados da sua aplicação através de serviços Rest. Mas talvez ao invés de tentar definir, o melhor é dar um exemploO XData pode ser bastante integrado ao TMS Aurelius, nossa framework ORM. Já postei aqui alguns artigos sobre o Aurelius com alguns exemplos simples. Sendo assim, caso você ainda não conheça o Aurelius, pode começar pelos primeiros passos, ou ainda, relacionado a este artigo, como criar associações simples.
Agora iremos criar um servidor XData bem simples que fornece objetos Aurelius:
program SimpleXDataServer; {$APPTYPE CONSOLE} uses Aurelius.Drivers.Interfaces, Aurelius.Engine.ObjectManager, XData.Http.Server, XData.Http.AureliusHandler, Utils, Customer; procedure CreateCustomer(const CustomerName, CountryName: string); var Manager: TObjectManager; Customer: TCustomer; Country: TCountry; begin Manager := TObjectManager.Create(SQLiteConnection); Country := TCountry.Create; Country.Name := CountryName; Customer := TCustomer.Create; Customer.Name := CustomerName; Customer.Country := Country; Manager.Save(Customer); Manager.Free; end; var Conn: IDBConnection; Server: THttpServer; begin ReportMemoryLeaksOnShutdown := true; Conn := SQLiteConnection; BuildDatabase(Conn); CreateCustomer('Paul', 'United States'); CreateCustomer('Jonas', 'Germany'); CreateCustomer('Hiroto', 'Japan'); CreateCustomer('Jian', 'China'); CreateCustomer('Sergei', 'Russia'); Server := THttpServer.Create; Server.Port := 2001; Server.RegisterHandler( TAureliusHttpHandler.Create( 'http://aurelius:2001/tms/xdata', SQLiteConnection)); Server.Start; WriteLn('Running Simple XData Server'); ReadLn; Server.Free; DestroyDatabase(Conn); end.
O programa acima é uma aplicação "normal" usando TMS Aurelius, que conecta ao banco de dados, cria as tabelas necessárias e insere alguns dados. A parte diferente é a que cria uma instância de um THttpServer e registra um request handler no endereço "/tms/xdata". O que acontece aqui é que os objetos Aurelius estão agora sendo fornecidos através de uma API Rest bem definida.
O XData usa como default o protocolo OData, que permite uma grande compatibilidade com outros clientes e plataformas. Também permite que o XData faça muitas coisas automaticamente: os objetos TCustomer, por exemplo, estão disponíveis no endereço "http://aurelius:2001/tms/xdata/TCustomer" (Os nomes são configuráveis).
Outro ponto interessante é como os dados são facilmente acessíveis de qualquer lugar. Para ilustrar, apresento aqui o código completo de uma aplicação console .NET em C# que conecta ao servidor acima e obtém os objetos TCustomer, usando Linq:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Services.Client; namespace DotNetClient { class Program { static void Main(string[] args) { DataServiceContext context = new DataServiceContext(new Uri(@"http://aurelius:2001/tms/xdata")); IQueryable<TCustomer> customers = context.CreateQuery<TCustomer>("TCustomer"); foreach (TCustomer customer in customers) Console.WriteLine("Customer {0} from {1}", customer.FName, customer.FCountry.FName); Console.ReadLine(); } } public class TCustomer { public int FId { get; set; } public string FName { get; set; } public TCountry FCountry { get; set; } } public class TCountry { public int FId { get; set; } public string FName { get; set; } } }
Mais informações em breve!
Wagner Landgraf
This blog post has not received any comments yet.
All Blog Posts | Next Post | Previous Post