SlideShare una empresa de Scribd logo
1 de 46
www.elmalabarista.com
      Mario Montoya

  Jefe Desarrollo apps web & móviles (iPad,iPhone)
Objetivo ?

Presentación herramienta para “web-enable” cualquier app
RETOS
(comunes en Latinoamérica)
Internet / Cloud
  “Necesitamos una app web”
Experiencia



“No se nada/poco de web”
Interoperabilidad



“Como dar acceso a nuestro sistema/crear un API?”
Obsolescencia


“Nuestra app/gente se quedo atrás!”
“Nos dicen que tenemos que usar (.NET/Java/PHP/LoQueSea)

               o no podemos competir :(”

                           Pre
                                 sió
                                       n!
Ventaja



“ES HORA DE HACER EL SALTO”
RemObjects
  Multi-Todo !
RemObjects Software
•   Herramientas para desarrolladores

•   Especializados en infraestructura

•   Data Abstract : Bases de datos multi-nivel

•   RemObjects SDK: Framework para hacer “remoting” (pero
    por mucho la mejor implementacion existente!)

•   Creadores de Delphi Prism & mas

•   remobjects.com
Multi-Todo


   ?
Multi-Lenguaje *
                       Desarrollo servidor & clientes




.NET        Delphi              Prism                   Mono     FreePascal
                        Ademas desarrollo clientes




Obj-C        JavaScript            PHP                  Python     Ruby
 * Se puede usar cualquier otro lenguaje para acceder a los servidores
Multi-Lenguaje *
                       Desarrollo servidor & clientes




.NET        Delphi              Prism                   Mono     FreePascal
                        Ademas desarrollo clientes




Obj-C        JavaScript            PHP                  Python     Ruby
 * Se puede usar cualquier otro lenguaje para acceder a los servidores
Multi-OS



OSX / iOS           Windows                     Linux

            Despliegue servidor donde quiera!
Multi-OS



OSX / iOS           Windows                     Linux

            Despliegue servidor donde quiera!
Multi-DB *



Firebird

           SQLite

           * Muchas mas sin mencionar
Multi-Protocolo*
           Comunicación


UDP       PIPES               TCP/IP     HTTP
              Transporte


  BIN               JSON               XML
           * Otros mas sin mencionar
Iluminación

       elmalabarista.com
App Web <> Sitio Web
      Use PHP/Python/Ruby/ASP
             Sitios web, paginas
      Use RemObjects
             Servidor App Web

                      elmalabarista.com
App Web?
Servidor ERP/ Facturacion
Servidor Web
Servidor Juegos
Servidor Datos
Servidor Documentos
Servidor!

                elmalabarista.com
HTML <> HTTP!
   HTML Es presentación
         Sitios web, paginas
   HTTP Es comunicación
         Servidor App Web

                   elmalabarista.com
HTTP + JSON + XML
     Universal
       Compatible con todo
     App Web sin traumas
      No tienes que cambiar de
      lenguaje!

                     elmalabarista.com
JSON + XML+SOAP
    Lentos. “Pesados”
Agrege BINARY
     jo!     Recuerda? Multi-todo
Cone
                No elija entre estándar & lento o
                propietario & rápido.

                RO puede publicar el servidor simultaneamente en
                multiples canales (TCP/HTTP, etc) y formatos (Bin,
                XML SOAP, XML-RPC, JSON, etc)
Aplicaciones 2 niveles




    Inflexible. No reutilizable. No escalable
Aplicaciones N niveles

                      Multiplique * N para escalar




       Flexible. Reutilizable. Escalable
App clientes como sea!




    No reescriba todo cuando sale un nuevo dispositivo de moda
Como funciona (Servidor)
Con el “Service Builder” se define el servicio (funciones, métodos, etc)




              http://wiki.remobjects.com/wiki/Service_Builder
Como funciona (Servidor)
Con el “Schema modeler” se define una BD virtual (abstracta) conectada a N-BD




            http://wiki.remobjects.com/wiki/Schema_Modeler
Como funciona (Servidor)
Elija Transporte + formato (típicamente HTTP + BIN + (JSON o SOAP o XML-RPC))


 var
   ROMessage: TROBinMessage;
   ROServer: TROIndyHTTPServer;
 begin
   Writeln('RemObjects SDK for Delphi - Command Line Server');
   ROMessage := TROBinMessage.Create(TComponent(nil));
   ROServer := TROIndyHTTPServer.Create(nil);
   TROMessageDispatcher(ROServer.Dispatchers.Add).Message := ROMessage;
   try
      ROServer.Active := true;
      WriteLn('Server is active, press Enter to stop.');
      Readln;
   finally
      ROServer.Free;
      ROMessage.Free;
   end;
 end.
Como funciona (Servidor)
Implementa los métodos, de forma similar a cualquier otro

uses
  {Generated:} NewLibrary_Invk;

procedure Create_NewService(out anInstance : IUnknown);
begin
  anInstance := TNewService.Create;
end;

{ NewService }
function TNewService.Sum(const A: Integer; const B: Integer): Integer;
begin
  Result := a + b;
end;

function TNewService.GetServerTime: DateTime;
begin
  result := Now;
end;
Como funciona (Servidor)
Listo. Accesible por HTTP. NO necesita IIS o Apache. Corre en linux con Freepascal
Relativity
Publica BD. Servidor N-Tier inmediato, sin codigo. Gratuito (con restricciones)




                   http://www.remobjects.com/da/relativity.aspx
Relativity
Publica BD. Servidor N-Tier inmediato, sin codigo. Gratuito (con restricciones)




                   http://www.remobjects.com/da/relativity.aspx
Como funciona (Cliente - Delphi/FPC)
 Conectase al servidor, invoque los métodos

uses
  NewLibrary_Intf;

{$R *.dfm}

function CallSum:integer;
var
  myservice: INewService;
begin
  myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
  result := myservice.Sum(1, 2);
end;

function GetDate:TDateTime;
var
  myservice : INewService;
begin
  myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
  res := myservice.GetServerTime;
  result:= res;
end;

      http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(Delphi)
Como funciona (Cliente - Delphi/FPC)
 Conectase al servidor, invoque los métodos

uses
  NewLibrary_Intf;

{$R *.dfm}

function CallSum:integer;
var
  myservice: INewService;
begin
  myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
  result := myservice.Sum(1, 2);
end;

function GetDate:TDateTime;
var
  myservice : INewService;
begin
  myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1);
  res := myservice.GetServerTime;
  result:= res;
end;

      http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(Delphi)
Como funciona (Cliente - XCode/iOS)
Conectase al servidor, invoque los métodos

//Conectarse
- (MyROService_Proxy *)getProxy
{
    ROClientChannel *clientChannel = [ROHTTPClientChannel channelWithTargetUrl:
[serverCombo stringValue]];
    ROMessage *message = [ROBinMessage message];
    return [MyROService_Proxy proxyWithMessage:message channel:clientChannel];
}

//Invocar
- (IBAction) sum:(id)sender
{
    int a = [aField intValue];
    int b = [bField intValue];
    int result = [[self getProxy] Sum:a:b];
    [resultField setStringValue:[NSString stringWithFormat:@"%d", result]];
}
                            http://wiki.remobjects.com/wiki/
             Writing_a_RemObjects_SDK_for_.NET_Server_and_Mac_Client_-
                           _Start_to_Finish_(Xcode_(Mac))
Como funciona (Cliente - XCode/iOS)
Conectase al servidor, invoque los métodos

//Conectarse
- (MyROService_Proxy *)getProxy
{
    ROClientChannel *clientChannel = [ROHTTPClientChannel channelWithTargetUrl:
[serverCombo stringValue]];
    ROMessage *message = [ROBinMessage message];
    return [MyROService_Proxy proxyWithMessage:message channel:clientChannel];
}

//Invocar
- (IBAction) sum:(id)sender
{
    int a = [aField intValue];
    int b = [bField intValue];
    int result = [[self getProxy] Sum:a:b];
    [resultField setStringValue:[NSString stringWithFormat:@"%d", result]];
}
                            http://wiki.remobjects.com/wiki/
             Writing_a_RemObjects_SDK_for_.NET_Server_and_Mac_Client_-
                           _Start_to_Finish_(Xcode_(Mac))
Como funciona (Cliente - NET/Mono)
Conectase al servidor, invoque los métodos



private void bSum_Click(object sender, System.EventArgs e)
{
  // Creates a IROWindowsFormsServerService proxy
  ROWindowsFormsServer.IROWindowsFormsServerService myService;
  myService = ROWindowsFormsServer.CoROWindowsFormsServerService.Create(
                                                        message, clientChannel);

    // Calls the Sum method
    int myResult = myService.Sum(1,2);

    // Displays the result
    MessageBox.Show("The server returned "+myResult.ToString());
}




      http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(.NET)
Como funciona (Cliente - NET/Mono)
Conectase al servidor, invoque los métodos



private void bSum_Click(object sender, System.EventArgs e)
{
  // Creates a IROWindowsFormsServerService proxy
  ROWindowsFormsServer.IROWindowsFormsServerService myService;
  myService = ROWindowsFormsServer.CoROWindowsFormsServerService.Create(
                                                        message, clientChannel);

    // Calls the Sum method
    int myResult = myService.Sum(1,2);

    // Displays the result
    MessageBox.Show("The server returned "+myResult.ToString());
}




      http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(.NET)
Como funciona (Cliente - JS/HTML)
 Conectase al servidor, invoque los métodos
<html>
  <head>
    <script type="text/javascript" src="RemObjectsSDK.js"></script>
    <script type="text/javascript" src="NewLibrary_intf.js"></script>
  </head>
  <body>
    <h1>RemObjects SDK client</h1>
    <a href="#" onclick="getTime();">Get time</a><br />
    <textarea id="log" rows=10 cols=60></textarea>
    <script type="text/javascript">
       var channel = new RemObjects.SDK.HTTPClientChannel("http://" + window.location.host + "/
BIN"); //IE users use JSON
       var message = new RemObjects.SDK.BinMessage();
       var service = new NewService(channel, message);

      function getTime() {
        service.GetServerTime(function(result) {
            document.getElementById("log").value += result + "n";
        }, RemObjects.UTIL.showError);
      }
    </script>
  </body>
</html>



  http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(JavaScript)
Como funciona (Cliente - JS/HTML)
 Conectase al servidor, invoque los métodos
<html>
  <head>
    <script type="text/javascript" src="RemObjectsSDK.js"></script>
    <script type="text/javascript" src="NewLibrary_intf.js"></script>
  </head>
  <body>
    <h1>RemObjects SDK client</h1>
    <a href="#" onclick="getTime();">Get time</a><br />
    <textarea id="log" rows=10 cols=60></textarea>
    <script type="text/javascript">
       var channel = new RemObjects.SDK.HTTPClientChannel("http://" + window.location.host + "/
BIN"); //IE users use JSON
       var message = new RemObjects.SDK.BinMessage();
       var service = new NewService(channel, message);

      function getTime() {
        service.GetServerTime(function(result) {
            document.getElementById("log").value += result + "n";
        }, RemObjects.UTIL.showError);
      }
    </script>
  </body>
</html>



  http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(JavaScript)
Baterías incluidas
Si lo imagina, ya lo tiene




      Balanceo Cargas        Seguridad       Encriptacion
      Failover               Código Fuente   Notificaciones
      IIS                    Ejemplos        servidor->cliente

      CGI                    Bonjour         Mas...

      Compresión             oData
Quiere saber mas?
Lista de Recursos



  Descargue trial             http://www.remobjects.com

  Vídeos            http://www.remobjects.com/tv/da.aspx

  Documentación                http://wiki.remobjects.com

  Soporte/Foros            http://connect.remobjects.com/
Gracias!
www.elmalabarista.com

Más contenido relacionado

La actualidad más candente

Web Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPWeb Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPElwin Huaman
 
introduccion al Lenguaje php
introduccion al Lenguaje phpintroduccion al Lenguaje php
introduccion al Lenguaje phprmonago
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)Pedro J. Molina
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails000ari2014
 
MAnual de php básico
MAnual de php básicoMAnual de php básico
MAnual de php básicoCleote
 
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTestingUy
 
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto? melvin9wheeler19
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)Domingo Suarez Torres
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
00 Php. Paginas Web Dinamicas
00 Php. Paginas Web Dinamicas00 Php. Paginas Web Dinamicas
00 Php. Paginas Web DinamicasJosé M. Padilla
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosSimoney Llamas
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 

La actualidad más candente (19)

Manual de PHP Basico
Manual de PHP BasicoManual de PHP Basico
Manual de PHP Basico
 
Web Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPWeb Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAP
 
introduccion al Lenguaje php
introduccion al Lenguaje phpintroduccion al Lenguaje php
introduccion al Lenguaje php
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails
 
MAnual de php básico
MAnual de php básicoMAnual de php básico
MAnual de php básico
 
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
 
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
¿Me Afirmaron Que Sql No Es Un Lenguaje De Programacion, Eso Es Cierto?
 
PHP IUTE
PHP IUTEPHP IUTE
PHP IUTE
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
00 Php. Paginas Web Dinamicas
00 Php. Paginas Web Dinamicas00 Php. Paginas Web Dinamicas
00 Php. Paginas Web Dinamicas
 
Introduccion a php
Introduccion a phpIntroduccion a php
Introduccion a php
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datos
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Guiacursophp sql
Guiacursophp sqlGuiacursophp sql
Guiacursophp sql
 

Similar a Presentacion remobjects

Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Modulo13 Web Services
Modulo13 Web ServicesModulo13 Web Services
Modulo13 Web ServicesEduardo
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando phpvictdiazm
 
Generacion de web sites dinamico
Generacion de web sites dinamicoGeneracion de web sites dinamico
Generacion de web sites dinamicoJose Luis Crespo
 
M1 introduccion a php
M1   introduccion a phpM1   introduccion a php
M1 introduccion a phpEDUARDLARA1
 
Servidor web present formal
Servidor web present formalServidor web present formal
Servidor web present formalsaytubb
 
Apuntes materia entorno cliente servidor
Apuntes materia entorno cliente servidorApuntes materia entorno cliente servidor
Apuntes materia entorno cliente servidorMalteadas
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 

Similar a Presentacion remobjects (20)

Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Modulo13 Web Services
Modulo13 Web ServicesModulo13 Web Services
Modulo13 Web Services
 
Servidor web
Servidor webServidor web
Servidor web
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Generacion de web sites dinamico
Generacion de web sites dinamicoGeneracion de web sites dinamico
Generacion de web sites dinamico
 
M1 introduccion a php
M1   introduccion a phpM1   introduccion a php
M1 introduccion a php
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Servidor web present formal
Servidor web present formalServidor web present formal
Servidor web present formal
 
Servidores web
Servidores webServidores web
Servidores web
 
servidores web
servidores webservidores web
servidores web
 
APIs REST
APIs RESTAPIs REST
APIs REST
 
Pdfwebservices
PdfwebservicesPdfwebservices
Pdfwebservices
 
Web service
Web serviceWeb service
Web service
 
Web service
Web serviceWeb service
Web service
 
Servicios web
Servicios webServicios web
Servicios web
 
Servidores
ServidoresServidores
Servidores
 
Apuntes materia entorno cliente servidor
Apuntes materia entorno cliente servidorApuntes materia entorno cliente servidor
Apuntes materia entorno cliente servidor
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 

Último

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (12)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Presentacion remobjects

  • 1. www.elmalabarista.com Mario Montoya Jefe Desarrollo apps web & móviles (iPad,iPhone)
  • 2. Objetivo ? Presentación herramienta para “web-enable” cualquier app
  • 4. Internet / Cloud “Necesitamos una app web”
  • 6. Interoperabilidad “Como dar acceso a nuestro sistema/crear un API?”
  • 8. “Nos dicen que tenemos que usar (.NET/Java/PHP/LoQueSea) o no podemos competir :(” Pre sió n!
  • 9. Ventaja “ES HORA DE HACER EL SALTO”
  • 11. RemObjects Software • Herramientas para desarrolladores • Especializados en infraestructura • Data Abstract : Bases de datos multi-nivel • RemObjects SDK: Framework para hacer “remoting” (pero por mucho la mejor implementacion existente!) • Creadores de Delphi Prism & mas • remobjects.com
  • 13. Multi-Lenguaje * Desarrollo servidor & clientes .NET Delphi Prism Mono FreePascal Ademas desarrollo clientes Obj-C JavaScript PHP Python Ruby * Se puede usar cualquier otro lenguaje para acceder a los servidores
  • 14. Multi-Lenguaje * Desarrollo servidor & clientes .NET Delphi Prism Mono FreePascal Ademas desarrollo clientes Obj-C JavaScript PHP Python Ruby * Se puede usar cualquier otro lenguaje para acceder a los servidores
  • 15. Multi-OS OSX / iOS Windows Linux Despliegue servidor donde quiera!
  • 16. Multi-OS OSX / iOS Windows Linux Despliegue servidor donde quiera!
  • 17. Multi-DB * Firebird SQLite * Muchas mas sin mencionar
  • 18. Multi-Protocolo* Comunicación UDP PIPES TCP/IP HTTP Transporte BIN JSON XML * Otros mas sin mencionar
  • 19. Iluminación elmalabarista.com
  • 20. App Web <> Sitio Web Use PHP/Python/Ruby/ASP Sitios web, paginas Use RemObjects Servidor App Web elmalabarista.com
  • 21. App Web? Servidor ERP/ Facturacion Servidor Web Servidor Juegos Servidor Datos Servidor Documentos Servidor! elmalabarista.com
  • 22. HTML <> HTTP! HTML Es presentación Sitios web, paginas HTTP Es comunicación Servidor App Web elmalabarista.com
  • 23. HTTP + JSON + XML Universal Compatible con todo App Web sin traumas No tienes que cambiar de lenguaje! elmalabarista.com
  • 24. JSON + XML+SOAP Lentos. “Pesados”
  • 25. Agrege BINARY jo! Recuerda? Multi-todo Cone No elija entre estándar & lento o propietario & rápido. RO puede publicar el servidor simultaneamente en multiples canales (TCP/HTTP, etc) y formatos (Bin, XML SOAP, XML-RPC, JSON, etc)
  • 26. Aplicaciones 2 niveles Inflexible. No reutilizable. No escalable
  • 27. Aplicaciones N niveles Multiplique * N para escalar Flexible. Reutilizable. Escalable
  • 28. App clientes como sea! No reescriba todo cuando sale un nuevo dispositivo de moda
  • 29. Como funciona (Servidor) Con el “Service Builder” se define el servicio (funciones, métodos, etc) http://wiki.remobjects.com/wiki/Service_Builder
  • 30. Como funciona (Servidor) Con el “Schema modeler” se define una BD virtual (abstracta) conectada a N-BD http://wiki.remobjects.com/wiki/Schema_Modeler
  • 31. Como funciona (Servidor) Elija Transporte + formato (típicamente HTTP + BIN + (JSON o SOAP o XML-RPC)) var ROMessage: TROBinMessage; ROServer: TROIndyHTTPServer; begin Writeln('RemObjects SDK for Delphi - Command Line Server'); ROMessage := TROBinMessage.Create(TComponent(nil)); ROServer := TROIndyHTTPServer.Create(nil); TROMessageDispatcher(ROServer.Dispatchers.Add).Message := ROMessage; try ROServer.Active := true; WriteLn('Server is active, press Enter to stop.'); Readln; finally ROServer.Free; ROMessage.Free; end; end.
  • 32. Como funciona (Servidor) Implementa los métodos, de forma similar a cualquier otro uses {Generated:} NewLibrary_Invk; procedure Create_NewService(out anInstance : IUnknown); begin anInstance := TNewService.Create; end; { NewService } function TNewService.Sum(const A: Integer; const B: Integer): Integer; begin Result := a + b; end; function TNewService.GetServerTime: DateTime; begin result := Now; end;
  • 33. Como funciona (Servidor) Listo. Accesible por HTTP. NO necesita IIS o Apache. Corre en linux con Freepascal
  • 34. Relativity Publica BD. Servidor N-Tier inmediato, sin codigo. Gratuito (con restricciones) http://www.remobjects.com/da/relativity.aspx
  • 35. Relativity Publica BD. Servidor N-Tier inmediato, sin codigo. Gratuito (con restricciones) http://www.remobjects.com/da/relativity.aspx
  • 36. Como funciona (Cliente - Delphi/FPC) Conectase al servidor, invoque los métodos uses NewLibrary_Intf; {$R *.dfm} function CallSum:integer; var myservice: INewService; begin myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1); result := myservice.Sum(1, 2); end; function GetDate:TDateTime; var myservice : INewService; begin myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1); res := myservice.GetServerTime; result:= res; end; http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(Delphi)
  • 37. Como funciona (Cliente - Delphi/FPC) Conectase al servidor, invoque los métodos uses NewLibrary_Intf; {$R *.dfm} function CallSum:integer; var myservice: INewService; begin myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1); result := myservice.Sum(1, 2); end; function GetDate:TDateTime; var myservice : INewService; begin myservice := CoNewService.Create(ROBINMessage1, ROWinInetHTTPChannel1); res := myservice.GetServerTime; result:= res; end; http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(Delphi)
  • 38. Como funciona (Cliente - XCode/iOS) Conectase al servidor, invoque los métodos //Conectarse - (MyROService_Proxy *)getProxy { ROClientChannel *clientChannel = [ROHTTPClientChannel channelWithTargetUrl: [serverCombo stringValue]]; ROMessage *message = [ROBinMessage message]; return [MyROService_Proxy proxyWithMessage:message channel:clientChannel]; } //Invocar - (IBAction) sum:(id)sender { int a = [aField intValue]; int b = [bField intValue]; int result = [[self getProxy] Sum:a:b]; [resultField setStringValue:[NSString stringWithFormat:@"%d", result]]; } http://wiki.remobjects.com/wiki/ Writing_a_RemObjects_SDK_for_.NET_Server_and_Mac_Client_- _Start_to_Finish_(Xcode_(Mac))
  • 39. Como funciona (Cliente - XCode/iOS) Conectase al servidor, invoque los métodos //Conectarse - (MyROService_Proxy *)getProxy { ROClientChannel *clientChannel = [ROHTTPClientChannel channelWithTargetUrl: [serverCombo stringValue]]; ROMessage *message = [ROBinMessage message]; return [MyROService_Proxy proxyWithMessage:message channel:clientChannel]; } //Invocar - (IBAction) sum:(id)sender { int a = [aField intValue]; int b = [bField intValue]; int result = [[self getProxy] Sum:a:b]; [resultField setStringValue:[NSString stringWithFormat:@"%d", result]]; } http://wiki.remobjects.com/wiki/ Writing_a_RemObjects_SDK_for_.NET_Server_and_Mac_Client_- _Start_to_Finish_(Xcode_(Mac))
  • 40. Como funciona (Cliente - NET/Mono) Conectase al servidor, invoque los métodos private void bSum_Click(object sender, System.EventArgs e) { // Creates a IROWindowsFormsServerService proxy ROWindowsFormsServer.IROWindowsFormsServerService myService; myService = ROWindowsFormsServer.CoROWindowsFormsServerService.Create( message, clientChannel); // Calls the Sum method int myResult = myService.Sum(1,2); // Displays the result MessageBox.Show("The server returned "+myResult.ToString()); } http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(.NET)
  • 41. Como funciona (Cliente - NET/Mono) Conectase al servidor, invoque los métodos private void bSum_Click(object sender, System.EventArgs e) { // Creates a IROWindowsFormsServerService proxy ROWindowsFormsServer.IROWindowsFormsServerService myService; myService = ROWindowsFormsServer.CoROWindowsFormsServerService.Create( message, clientChannel); // Calls the Sum method int myResult = myService.Sum(1,2); // Displays the result MessageBox.Show("The server returned "+myResult.ToString()); } http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(.NET)
  • 42. Como funciona (Cliente - JS/HTML) Conectase al servidor, invoque los métodos <html> <head> <script type="text/javascript" src="RemObjectsSDK.js"></script> <script type="text/javascript" src="NewLibrary_intf.js"></script> </head> <body> <h1>RemObjects SDK client</h1> <a href="#" onclick="getTime();">Get time</a><br /> <textarea id="log" rows=10 cols=60></textarea> <script type="text/javascript"> var channel = new RemObjects.SDK.HTTPClientChannel("http://" + window.location.host + "/ BIN"); //IE users use JSON var message = new RemObjects.SDK.BinMessage(); var service = new NewService(channel, message); function getTime() { service.GetServerTime(function(result) { document.getElementById("log").value += result + "n"; }, RemObjects.UTIL.showError); } </script> </body> </html> http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(JavaScript)
  • 43. Como funciona (Cliente - JS/HTML) Conectase al servidor, invoque los métodos <html> <head> <script type="text/javascript" src="RemObjectsSDK.js"></script> <script type="text/javascript" src="NewLibrary_intf.js"></script> </head> <body> <h1>RemObjects SDK client</h1> <a href="#" onclick="getTime();">Get time</a><br /> <textarea id="log" rows=10 cols=60></textarea> <script type="text/javascript"> var channel = new RemObjects.SDK.HTTPClientChannel("http://" + window.location.host + "/ BIN"); //IE users use JSON var message = new RemObjects.SDK.BinMessage(); var service = new NewService(channel, message); function getTime() { service.GetServerTime(function(result) { document.getElementById("log").value += result + "n"; }, RemObjects.UTIL.showError); } </script> </body> </html> http://wiki.remobjects.com/wiki/How_to_Write_a_RemObjects_SDK_Client_(JavaScript)
  • 44. Baterías incluidas Si lo imagina, ya lo tiene Balanceo Cargas Seguridad Encriptacion Failover Código Fuente Notificaciones IIS Ejemplos servidor->cliente CGI Bonjour Mas... Compresión oData
  • 45. Quiere saber mas? Lista de Recursos Descargue trial http://www.remobjects.com Vídeos http://www.remobjects.com/tv/da.aspx Documentación http://wiki.remobjects.com Soporte/Foros http://connect.remobjects.com/

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. Discount code good through the end of April.\n
  12. Discount code good through the end of April.\n
  13. Discount code good through the end of April.\n
  14. Discount code good through the end of April.\n
  15. Discount code good through the end of April.\n
  16. Discount code good through the end of April.\n
  17. Discount code good through the end of April.\n
  18. Discount code good through the end of April.\n
  19. Discount code good through the end of April.\n
  20. Discount code good through the end of April.\n
  21. Discount code good through the end of April.\n
  22. Discount code good through the end of April.\n
  23. Discount code good through the end of April.\n
  24. Discount code good through the end of April\n
  25. Discount code good through the end of April\n
  26. Discount code good through the end of April\n
  27. Discount code good through the end of April\n
  28. Discount code good through the end of April\n
  29. Discount code good through the end of April\n
  30. Discount code good through the end of April\n
  31. Discount code good through the end of April\n
  32. Discount code good through the end of April\n
  33. Discount code good through the end of April\n
  34. Discount code good through the end of April\n
  35. Discount code good through the end of April\n
  36. Discount code good through the end of April\n
  37. Discount code good through the end of April\n
  38. Discount code good through the end of April\n
  39. Discount code good through the end of April\n
  40. Discount code good through the end of April\n
  41. Discount code good through the end of April\n
  42. Discount code good through the end of April\n
  43. \n