Un viaje sobre lenguajes, APIs y otras cosas raras en el mundo del desarrollo de sistemas.


Cuando empecé a hacer mi applet… ok, my XBAP… empecé con una aplicación WPF y encontré muy fácil que la misma aplicación fuera tanto una aplicación pensada en ambiente cliente/servidor como con una para browsers, a la cual Microsoft le llama XBAP -Antes eran los famosos controles Activex que carecían de muchos cuidados en la seguridad, en Java desde 1996 les llamamos Applets-.
Lo que hice fue generar una aplicación de Web (WCF) y una aplicación Windows WCF en Visual Studio 2008, una tercera que es la verdadera aplicación como una librería de clases (Class Library), mi clase principal fue un "Custom Control" que fue de tipo Page, que desde m applet la llamo en mi Application.xaml.cs de la siguiente forma:

using System;

using System.Collections.Generic;

using

System.Configuration;

using

System.Data;

using

System.Linq;

using System.Windows;

using

System.Windows.Navigation;

using

IUS;

using

System.Security;

[

assembly: AllowPartiallyTrustedCallers]

namespace IUSWeb

{

/// <summary>

/// Interaction logic for App.xaml

/// </summary>

public partial class App : Application

{

public void inicio(object sender, StartupEventArgs args)

{

Xceed.Wpf.DataGrid.

Licenser.LicenseKey = "XXXXXXXXXXXXXXX";

this.InitializeComponent();

PaginaInicial pagina = new PaginaInicial();

this.MainWindow.Content = pagina;

}

}

}

Y así ya tengo un Applet (perdon XBAP) funcionando.

En el caso de la aplicación StandAlone:

using

System;

using System.Collections.Generic;

using System.Configuration;

using

System.Data;

using

System.Linq;

using

System.Windows;

using System.Windows.Navigation;

using

IUS;

namespace

IUS

{

/// <summary>

/// L¢gica de interacci¢n para App.xaml

/// </summary>

public partial class App : Application

{

public void inicio(object sender, StartupEventArgs e) {

Xceed.Wpf.DataGrid.

Licenser.LicenseKey = "XXXXXXXXXXXXX";

PaginaInicial inicio = new PaginaInicial();

NavigationWindow navegador = new NavigationWindow();

this.MainWindow = navegador;

navegador.Content = inicio;

navegador.Activate();

navegador.Height = 700;

navegador.Width = 800;

navegador.Title =

"Mi aplicacion StandAlone 2008";

navegador.Show();

}

}

}

Por lo cual y como ustedes podrán ver tengo todo resuelto… ahora el chiste es traer los datos para las dos aplicaciones y podrlas hacer funcionar a las dos en los ambientes separados…

Pensando en eso recordé que desde aquellos años mozos los Applets me permitían que mi browser se comunicara con el mismo servidor que le envió sin importar si esto fuera al mismo puerto o no del server, esto me permitió generar algunas aplicaciones como para poder mostrar  resultados de carreras en tiempo real con un servidor en Java que le mandaba los datos al Applet. Supuse que algo parecido podría existir con XBAP  y ahí fuen cuando apareció WCF, un framework de comunicaciones que permite hacer WebServices y comunicaciones con protocolo .NET.

Ahi fue donde aprendí que existe un ambiente de confianza parcial y uno de confianza plena en las aplciaciones WPF, las de confianza plena no tienen niguna restricción y son aplicaciones que corren fuera del browser.

Para no hacerla de emoción, resulta que loa XBAP corren en confianza parcial y solo se pueden comunicar al servidor que los envió y al mismo puerto que los envío, por lo cual no es posible generar "servidores propios" con "protocolos propios", y no puede usar cualquier protocolo, por lo cual no todas las funcionalidades de WCF pueden usarse, en plan muy llano digamos que para tener un XBAP tendremos que publicar nuestro webservice en el mismo servidor web que provió el XBAP y deberá utilizar el tipo de Binding "BasicHttpBinding", pero ahí no acaban los problemas, solamente empiezan. En la próxima entrada del BLOG mostraré los problemas que uno enfrenta y como resolverlos de manera rápida, que no se encuentra de manera rápida en el Web, así que si encontraste este Blog probablemente ahorres días de investigación, en pequeños tips…

Esto poco a poco iremos abordando algunas situaciones en Java sobre como poder hacer cosas similares o manejos propios en esa tecnología.

Saludos y hasta la próxima

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: