Lanzamiento RAD Studio XE4

2013-05-21 08.59.40

Hola,

El día de ayer (21 Mayo 2013) estuve en el lanzamiento de RAD Studio XE4 en la Ciudad de México. Una presentación que me ha dejado muy satisfecho con lo que los chicos de Embarcadero han hecho para proporcionarnos la opción de crear aplicaciones para dispositivos móviles iOS.

En ésta ocasión el encargado de darnos los pormenores de ésta nueva versión de RAD Studio fué Anders Ohlsson a quien podemos ver preparando su equipo antes de iniciar el evento, cabe mencionar que tuve la oportunidad de charlar un poco con él (mi inglés es muy pobre :)) y puedo asegurarles que es una persona muy agradable y atenta.

2013-05-21 08.34.11

Dió inicio la presentación de RAD Studio XE4 «la primera solución de desarrollo de aplicaciones nativas multi-dispositivo»

2013-05-21 09.18.26

Las ventajas de contar con una sólo herramienta de desarrollo son enormes ya que se traduce en un sólo código base, un sólo equipo y una sóla agenda, aúnado a la reducción de gastos que serían mucho más altos si se tuviera que desarrollar con diferentes herramientas para diferentes dispositivos.

2013-05-21 09.21.50

2013-05-21 09.25.58

Y ésto se logra con Firemonkey, la plataforma para la creación de aplicaciones de múltiples dispositivos realmente nativas para iOS, Windows y Mac que usa un solo código base y que de acuerdo a su arquitectura podrá acceder al popular sistema operativo Android, algo muy esperado por muchos….

2013-05-21 09.24.35

Algunas de las caracteristicas más relevantes de RAD Studio:

2013-05-21 09.28.18     2013-05-21 09.35.23

2013-05-21 09.32.42     2013-05-21 12.04.21   2013-05-21 10.02.55

2013-05-21 09.35.37

La asistencia fué de 100 personas exactamente, aunque es un buen número, seguimos extrañando aquellas presentaciones con mas de 200 asistentes, estoy seguro que la presentación de Android regresará esos números.

2013-05-21 09.36.25

En general la presentación fué muy interesante y algo peculiar en ésta ocasión fué que hubo pocas caras conocidas y muchas caras nuevas, algo que pudiera tener dos aristas, sin embargo, me reservo el comentario hasta ver la respuesta de la comunidad cuando Android salte a escena.

Hasta pronto

Consumir un Servicio Web de terceros

A petición de uno de mis lectores, he creado un pequeño cliente que consume un servicio web de terceros, en éste caso el mismo que usé para mi entrada anterior Probando Delphi for iOS  pero en una aplicación de escritorio.

El proceso es muy simple.

– Creamos una nueva aplicación VCL.

– Importamos el WSDL del Servicio Web en éste caso de Banxico.

Éste importador nos genera una clase con la definición del Servicio Web lista para ser consumida, como lo podemos apreciar en la siguiente imagen.

– Agregamos los objetos que deseamos para que nuestra interfáz gráfica se vea un poco decente 🙂

– Agregamos el código necesario para consumir el método que obtiene el tipo de cambio de las diferentes monedas y ejecutamos nuestra aplicación.

Cabe mencionar que por el poco tiempo que dispongo no pude utilizar el XML Data Binding para crear las clases que representan el esquema del documento XML por lo que tuve que «trabajar» con algo más simple para serializar el XML que nos regresa el Servicio Web.

Enjoy!!!

Nota: Desarrollado con Delphi XE2


Ésta entrada y el código fuente son libres para su uso y publicación, lo único que te pido, si te parece justo, es mencionar la fuente de donde se obtuvo.

Probando Delphi for iOS

Logo Delphi MVP

Como algunos saben, estoy muy involucrado en la creación y consumo de servicios web y desde hace tiempo había querido desarrollar un cliente que consumiera un servcio web desde dispositivos móviles tal y como lo hago en las aplicaciones de escritorio y puedo asegurarles que Delphi for iOS es inigualable, estoy muy entusiasmado por la rapidéz, facilidad y poderío al hacerlo con mi herramienta preferida.

Pues bien, he desarrollado un pequeño cliente para consumir un servicio web que nos proporciona el tipo de cambio de algunas monedas (USD Dólar, Dólar Canadiense, Euro, Yen y Libra Esterlina) con relación al peso mexicano y con ello poder hacer la conversión ya sea de pesos mexicanos a monedas extranjeras o al contrario.

El desarrollo de ésta app fué muy simple.

  • Importamos el wsdl de servicio web, en éste caso del Banco de México (http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL)
  • Colocamos los componentes visuales necesarios.
  • Consumimos el método «tiposDeCambioBanxicoRequest» del servicio Web para mostrar los diferentes valores en pesos de las monedas extranjeras.
  • Escribimos las operaciones básicas para realizar la conversión de divisas.
  • Compilamos y ejecutamos la App en el simulador de iPhone instalado en mi MacBook Air.

 

vcl

La App funciona muy bien en el simulador de iPhone, se puede seleccionar la moneda que se deseé y se puede ingresar la cantidad que quieres convertir ya sea en pesos o en la moneda extranjera seleccionada. Como un pequeño detalle, la bandera de la moneda extranjera cambia de acuerdo a la moneda seleccionada en la parte superior.

iOS

Como ven es una App muy básica, pero las opciones son inmensas, por supuesto que no estoy descubriendo el hilo negro, ya hay muchas aplicaciones de éste tipo para dispositivos móviles, sin embargo, como prueba inicial, puedo asegurar que Delphi for iOS no me decepcionó, al contrario, me ha despertado un interés muy fuerte y sólo estoy en espera de que sea liberado.

Por hoy es todo, espero que ésta App les haya sido interesante e ilustrativa como lo fué para mi. Seguiremos probando Delphi for iOS, aún hay muchas cosas que quiero ver y el tiempo es poco 🙂

Hasta la próxima.

Importante: Considere que todo lo que se expresa en ésta publicación es acerca de un producto Beta por lo que los detalles finales pueden llegar a cambiar en el lanzamiento oficial.

Los únicos medios oficiales acerca de éste producto se encuentran en el sitio de embarcadero, puede acceder a los detalles en los siguientes enlaces :

Develop iOS applications with Delphi y en su mapa de ruta.

Ésta entrada sólo intenta mostrar de forma simple y sin entrar en detalles técnicos las facilidades que nos podría proporcionar el nuevo Delphi for iOS

Delphi para iOS. Vista previa.

 

Logo Delphi MVP

Hola amigos, en ésta entrada hablaremos un poco acerca de la vista previa de Delphi para iOS y que nos ha sido mostrada a través del webinar de ayer 27 de Febrero de 2013.

Personalmente estoy muy ansioso de contar con éste tipo de soluciones, tanto para iOS como para Android. En éste webinar se ha mostrado el desarrollo de aplicaciones para iOS y se comenta que para el 3er cuarto de 2013 se tendrá la plataforma para Android.

 

Una de las cosas que me parecieron relevantes y por demás interesantes son los cambios que se han hecho al compilador y que muestro en la siguiente imagen:

 

cambio_Comp

 

También se han agregado algunos componentes nuevos

New_Comp

La presentación me gustó y una de las cosas que se deben aclarar para el desarrollo de aplicaciones iOS es que se necesita una MAC, y no es un requerimiento de Delphi, es una regla de la compañia de la manzana para poder generar dichas aplicaciones.

Yo ya veo maduro el producto y casi listo para ser lanzado al mercado, lo que falta, y se que es el siguiente paso, es generar aplicaciones para Android (asunto del cual estoy realmente ansioso de probar).

Bien por la vista previa, gracias Diego, gracias Fernando y gracias Allison.

 

Nos vemos en la siguiente entrada.

 

¿Cómo depurar un Servicio Web?

Índice

● Introducción
● Crear Aplicación SOAP Servidor
● Crear la aplicación Cliente
● Probando la depuración de nuestro Web Service
● Descargas


Introducción


 

Hace tiempo escribí dos pequeños tutoriales acerca de los Servicios Web, el primero Crear y consumir un WebService con Delphi (Parte I, II y III) y el segundo  Consumir WebService con acceso a Base de Datos.

Ahora he creado una tercera entrega a raíz de un hilo de mi amigo y colega Marc en los foros de la Comunidad DelphiAccess, donde preguntaba ¿Un WebService no puede usar Componentes no gráficos? , y durante las preguntas y respuestas, vi la necesidad de desarrollar un nuevo tutorial aprovechando la experiencia que he adquirido en la creación y consumo de Servicios Web y específicamente por la necesidad de contar con documentación de cómo depurar y encontrar de una forma «amable» problemas que no se pueden ver a simple vista.

Dado que éste tutorial no se centra en el desarrollo del Servicio Web, sino en como depurarlo, vamos a utilizar lo que ya vimos en el primer tutorial de ésta serie, usando las operaciones aritméticas básicas, Suma, Resta, Multiplicación y División y por tal razón me tomo el atrevimiento de hacer un «copy&paste» de dicho tutorial para enfocarnos en el tema de la depuración.

Éste tutorial fué desarrollado con XE3 pero puede realizarse con XE y XE2 también, para versiones anteriores a XE se desarrollará otro tutorial ya que se crea de forma diferente, en breve lo publicaré.

Como siempre, agradeceré todos los comentarios y críticas (en cualquier sentido) de éste tutorial.

regresar al Índice


Crear Aplicación SOAP Servidor


 

Comenzaremos creando nuestra Aplicación Servidor siguiendo los pasos que ya habíamos visto: File, New, Other, WebServices, seleccionamos SOAP Server Application y finalmente presionamos OK.

En Delphi XE2 y XE3 se mostrará una ventana donde elegiremos la opción Stand-Alone VCL application la cual es un servidor Web que es mostrado en una aplicación VCL y que utiliza el componente Indy HTTP Server. Presionamos el botón [Next>>] para continuar.

La versión XE de Delphi nos proporciona dos opciones para crear el depurador, en éste tutorial vamos a ver sólo la creación de una aplicación Stand Alone y elegiremos la opción Indy VCL Application, la otra opción llamada Web App Debuguer executable, la trataremos en un tutorial aparte ya que su funcionamiento es diferente y un poco más elaborado y es la que las versiones anteriores a XE traen por omisión.

La siguiente ventana nos preguntará que puerto queremos usar para que la aplicación Web escuche las peticiones del programa cliente, cuenta con un botón [Test Port] para asegurarnos que el puerto seleccionado no esté en uso por otra aplicación. Si se desea se puede utilizar un puerto seguro HTTPS, para éste tutorial utilizaremos el puerto 8080. Para continuar presionamos el botón [Finish].

En esta parte ya podemos ver que Delphi nos creó una aplicación VCL con todo lo necesario para iniciar y detener el servicio Web y nos preguntará si queremos crear la interfaz del módulo SOAP, presionamos el botón [No] ya que vamos a aprovechar el código que se tiene del primer tutorial que realizamos (Si ya cuentas con un servicio web, utiliza las unidades de implementación y de interfáz; si no, al final encontrarás un enlace donde prodrás descargar el código de éste tutorial).

Con el clásico Copy&Paste, agregamos a nuestro proyecto las unidades del servicio Web que creamos en nuestro primer tutorial y copiamos específicamente las unidades de Interfaz y de Implementación, en éste caso wsServerIntf.pas y wsServerImpl.pas respectivamente.

Finalmente agregamos las unidades que copiamos a nuestro proyecto y estamos listos para ejecutar nuestro depurador, una vez en ejecución, podemos ver que tiene un botón para iniciar y otro para detener nuestro servicio Web, una caja de texto para asignar el puerto http que queremos utilizar en nuestro depurador y un botón que nos abrirá el explorador de internet para ver la estructura de nuestro servicio Web.

Presionamos el botón [Start] y es posible que Windows te pida autorización para desbloquear la aplicación, como lo muestro en la siguiente imagen, presiona el botón [Permitir acceso] para continuar.

Una vez que hemos permitido el acceso a nuestra aplicación, presionamos el botón [Open Browser] e inmediatamente nos mostrará la página de información de nuestro Servicio Web. Damos clic en el enlace al WSDL del tipo de puerto IwsServer como se muestra en la siguiente imagen y como preparación de nuestro siguiente capítulo Crear la aplicación Cliente

regresar al Indice


Crear la aplicación Cliente


 

Después de dar clic al enlace WSDL, veremos una página con la definición de los métodos de nuestro servicio Web, seleccionamos la url de la página y la copiamos para utilizarla en la creación de la aplicación cliente que consumirá nuestro sevicios Web.

Abrimos otra instancia de Delphi para crear la aplicación cliente y creamos un nuevo proyecto VCL, posteriormente importamos el WSDL y para ello damos clic en File –> New –> Other –> WebServices –> WSDL Importer, éste «asistente» importa el documento WSDL y genera todas las definiciones de clases necesarias para llamar los servicios Web usando un objeto de interfaz remota llamado THTTPRIO. Presionamos el botón [OK] para continuar.

La siguiente pantalla no permitirá especificar la dirección URL donde está publicado el documento WSDL, como ya tenemos la ubicación del WSDL en el portapapeles, sólo pegamos la URL copiada. También nos permite especificar los datos de autenticación para acceder al documento WSDL, como son, Usuario, Contraseña y Proxy si tuviese. Para continuar presionamos el botón [Next>>].

La siguiente pantalla nos permitirá seleccionar la versión SOAP que es usada por el documento WSDL, ésta puede ser 1.1 o 1.2, pero también podemos permitir que se seleccione la versión automáticamente. Para prevenir un error porque la versión no coincida, se recomienda elegir la opción Automatic SOAP versioning

Finalmente se nos muestra la pantalla de Opciones de importación del WSDL, donde se podrá configurar la forma como el «asistente» generará el código para representar las definiciones del documento WSDL, por lo general, se debe de utilizar las opciones que por defecto están seleccionadas, ya que dichos valores proporcionarán la forma más segura de importar documentos WSDL. Para terminar el asistente presionamos el botón [Finish]

Ya tenemos la clase que nos permitirá consumir los métodos de nuestro servicios Web. Ahora sólo nos queda crear la interfaz de usuario, para no aburrirlos sólo les mostraré la aplicación después de agregar los componentes necesarios (Si desean ver el detalle pueden leer la sección correspondiente del primer tutorial de ésta serie donde se muestra el paso a paso). De cualquier forma, al final de éste tutorial podrán acceder al código fuente de todo el ejercicio.

A continuación les muestro el código para cada método del servicio Web, es realmente simple.

 

 
unit Unit1;

interface

uses
  Vcl.Forms, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Controls,
  System.SysUtils, System.Classes,
  IwsServer2;

type
  TForm1 = class(TForm)
    btnSuma: TButton;
    btnResta: TButton;
    btnMultiplica: TButton;
    btnDivide: TButton;
    leValor1: TLabeledEdit;
    leValor2: TLabeledEdit;
    btnCerrar: TButton;
    leResultado: TLabeledEdit;
    procedure btnSumaClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnRestaClick(Sender: TObject);
    procedure btnMultiplicaClick(Sender: TObject);
    procedure btnDivideClick(Sender: TObject);
    procedure btnCerrarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Server: IwsServer;

implementation

{$R *.dfm}

procedure TForm1.btnSumaClick(Sender: TObject);
begin
  leResultado.Text := format('%f',[Server.Suma(strtofloat(leValor1.Text),
                                           strtofloat(leValor2.Text))]) ;
end;

procedure TForm1.btnRestaClick(Sender: TObject);
begin
  leResultado.Text := format('%f',[Server.Resta(strtofloat(leValor1.Text),
                                            strtofloat(leValor2.Text))]) ;
end;

procedure TForm1.btnMultiplicaClick(Sender: TObject);
begin
  leResultado.Text := format('%f',[Server.Multiplica(strtofloat(leValor1.Text),
                                                  strtofloat(leValor2.Text))]);
end;

procedure TForm1.btnDivideClick(Sender: TObject);
begin
  leResultado.Text := format('%f',[Server.Divide(strtofloat(leValor1.Text),
                                              strtofloat(leValor2.Text))]);
end;

procedure TForm1.btnCerrarClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Server := GetIwsServer();
end;

end.

regresar al Índice


Probando la depuración de nuestro Web Service


 

Ya tenemos nuestro proyecto terminado, Servidor y Cliente, ahora sólo nos resta probar que realmente funciona. Para ello, abrimos nuestro proyecto «Server» y agregamos «BreakPoints» en los 4 métodos como se muestra en la siguiente imagen.

Antes de ejecutar nuestros proyectos, vamos a agregar unas líneas a la clase generada por el importador WSDL en nuestra aplicación cliente que en éste caso se llama IwsServer1.pas, dado que los servicios Web reciben las peticiones y su respuesta es de inmediato, es necesario agregar timeouts para que no se reciban errores por estar depurando nuestro servicio Web, basta con agregar tres lineas a dicha clase.

 

      RIO.HTTPWebNode.ConnectTimeout := 120000;
      RIO.HTTPWebNode.SendTimeout := 120000;
      RIO.HTTPWebNode.ReceiveTimeout := 120000;

 

Éstas líneas deben agregarse en la función GetIwsServer como se muestra en la siguiente imagen.

Ya podemos ejecutar nuestro servicio web en modo de depuración (F9) y nuestra aplicación Cliente sin depurador (Ctrl+Shift+F9).

Asignamos los valores a cada uno de los campos de edición y presionamos la operación que se desea depurar, en éste caso se ha presionado el botón de división y una vez que se ha presionado, el servicio Web es detenido en el método correspondiente, podemos entonces ir paso a paso por cada una de las líneas y ver qué es lo que se está ejecutando en cada una.

Con ésto hemos terminado éste sencillo ejercicio, espero que les proporcione las bases para poder crear sus propios depuradores de servicios Web.

regresar al Índice


Descargas


Si lo deseas puedes descargar el código fuente de éste tutorial, espero te sea de utilidad.

[download id=»1″]
[download id=»2″]


 

———-Éste tutorial y su código fuente son libres para su uso y publicación, lo único que te pido es mencionar la fuente.

 

Como crear un Directorio Virtual en el IIS con Delphi Win32

Hola

A partir de los tutoriales sobre como consumir un Web Service, noté que hay muchas dudas sobre como crear el directorio virtual, por esta razón me dedique a buscar información para realizar este procedimiento desde una aplicación Delphi.

Pues bien, encontré que podemos realizarlo usando la Biblioteca virtualds.tlb que se encuentra en el directorio System32 de Windows.

Esta biblioteca llamada Active Directory Services (Active DS) nos permite administrar y mantener todos los recursos de red desde una única ubicación y una de las características es que no solo nos sirve para administrar el IIS, sino para muchas otras aplicaciones como LDAP por ejemplo.
Si deseas ver este tutorial puedes entrar en el siguiente enlace.

Como crear un Directorio Virtual en el IIS con Delphi Win32

Salud OS

Consumir WebService con acceso a Base de Datos

Hace un tiempo que publiqué un tutorial para  Crear y Consumir un WebService con las 4 funciones aritméticas básicas (suma, resta, multiplicación y división).

He creado un nuevo tutorial para  Consumir un Web Service con acceso a Base de Datos en la comunidad DelphiAccess.

El temario del tutorial es el siguiente.
Capítulo 1. Crear nuestra base de datos
Capítulo 2. Crear el Web Service

Capítulo 2.1 Creamos un Nuevo Proyecto
Capítulo 2.2 Creamos la Conectividad con la Base de Datos
Capítulo 2.3 La Clase TRemotable
Capítulo 2.4 Creando las funciones del ABM

Capítulo 3. Registrar el Web Service en el IIS
Capítulo 4. Crear la aplicación Cliente
Apéndice I

Espero que sea de ayuda y sobre todo que les de las bases para desarrollar aplicaciones robustas.

Salud OS

El componente TActionManager

Hola

En el pasado CodeRage III, tuve el privilegio de ser invitado a dar una presentación y el tema que expuse fué Estandarizando Acciones con el Action Manager, ahora he escrito un tutorial en la Comunidad DelphiAccess con la intención de mostrar las ventajas y beneficios de este excelente componente.

Éste el el Índice del tutorial.

Índice

Introducción
Parte I. Programación Básica
Parte II. Modificando la Interfaz Gráfica «básica»
Parte III. TActionManager en Acción
Parte IV. Modificando la «nueva» Interfaz Gráfica

Espero sea de utilidad.

Salud OS