Diferencia entre revisiones de «Aplicaciones Distribuidas: Un enfoque práctico»
Contenido eliminado Contenido añadido
m Correcciones menores (v1.54) PR:CEM.; cambios triviales |
|||
Línea 1:
{{fusionar en|API}}
== Framework ==
Una
Los frameworks te ayudan al manejo y desarrollo de programas que se
Un ejemplo muy claro es el sistema operativo Windows XP y Windows Vista, ya que el framework en el que
Como
== Servidor de Aplicaciones - App Server ==
Un servidor de aplicaciones
Se
Un servidor de Aplicaciones debe tener por una parte las aplicaciones de los clientes y
== Implementación de patrón de diseño Facade ==
Línea 25:
Bank.java: El cual va a ir verificando en cada uno de las demás clases de q banco pertenecen
* Ubicamos el siguiente código:
public boolean sufficientSavings( Customer c )
Línea 35:
Customer.java:La clase define los nombres de las variables q va a manejar
* Ubicamos el siguiente código:
private String name
Línea 47:
}
MortgageApplication.java: Es la que se comunica con las
* Ubicamos el siguiente código:
int amount;
Línea 72:
Client.java: Llama a la clase Mortage que es la que se comunica con el resto de las clases
* Ubicamos el siguiente código:
public static void main(String[] args)
Línea 86:
[[Archivo: Corridafacade.jpg|center|thumb|600px|Corrida de facade]]
== Implementación de patrón de diseño Factory ==
Diagrama de clases de la
[[Archivo: Factoryrose.jpg|center|thumb|600px|Primer paso]]
Línea 94:
Factory_One.java: Nos va a definir que cuando cambiemos 1 o por 0 las conexiones en la clase cliente
* Ubicamos el siguiente código:
int
public void createConnection(int cero)
{
System.out.println("");
if(
{
System.out.println("
}
else
{
System.out.println("
}
}
Conexión.java:Es la clase interfaz que nos va a permitir poder interactuar con las clases de mysql y oracle
* Ubicamos el siguiente código:
public void description()
{
System.out.println("
}
MysqlConexion.java: Clase la que permite definir todas las variables de la clase y la función createconnection para definir que cuando se ponga el
* Ubicamos el siguiente código:
public class MysqlConexion extends
{
Factory_One obj_facone = new Factory_One();
Línea 130:
{
super.description();
System.out.println("Mysql
obj_facone.createConnection(2);
}
}
OracleConexion.java: Clase la que permite definir todas las variables de la clase y la función createconnection para definir que cuando se ponga el
* Ubicamos el siguiente código:
public class OracleConexion extends
{
Factory_One obj_facone = new Factory_One();
Línea 145:
public void description()
{
System.out.println("Oracle
super.description();
obj_facone.createConnection(1);
Línea 152:
Cliente.java: simplemente se llama la función para saber si es 1 o 2 y definir la conexión
* Ubicamos el código:
public void main()
Línea 161:
}
Main.java:
* Ubicamos el código:
public static void main(String[] args)
Línea 175:
[[Archivo: Corridafactory.jpg|center|thumb|600px|Corrida Factory]]
== Implementación de patrón de diseño Chain of Responsability ==
[[Archivo: ChaimRose.jpg|center|thumb|600px|Diagrama de clases]]
Creamos las clases
Approver.java: Define simplemente las variables que vamos a utilizar como el nombre, montos
* Ponemos el código:
public abstract class Approver
{
Línea 197:
Director.java: Utiliza la clase extends para ir definiendo el monto de director
* Ponemos el código:
public class Director extends Approver
{
Línea 213:
President.java: Defien lso momtos que gana el presidente
* Ponemos el código aquí:
public class President extends Approver
{
Línea 229:
Vicepresident.java: Utiliza la clase Approver y define los montos del Vice presidente
* Ponemos el código:
public class VicePresident extends Approver
{
Línea 245:
PurchaseRequest.java: Es la clase main
* Ubicamos el código:
public static void main(String[] args)
{
Línea 264:
[[Archivo: Corridachain.jpg|center|thumb|600px|Corrida del programa]]
== Implementación Modelo Vista Controlador (MVC) ==
Línea 273:
Desplegamos el paquete '''controlador''' y vamos a crear un java file 3 java file o que es lo mismo CLASES
Primer java file : Lo que
'''C_SignoffAction.java'''
* Y ponemos el siguiente código:
public String Create(){
return "Realizado";
}
public
modelo.M_model OM=null;
OM=new modelo.M_model();
Línea 287:
Segundo java file : Interactúa con capa de la vista para la salida de los datos de mensajes
'''C_TemplatingService.java'''
* Y ponemos el siguiente código:
public String fordward(){
vista.V_Screen OS =new vista.V_Screen();
Línea 295:
Tercer java file : esta clase permite poner el mensaje que queramos visualizar en la capa de salida nos controla los mensajes del mismo.
''' C_controller.java'''
* Y ponemos el siguiente código:
public String Post()
Línea 312:
Creamos una clase: la cual simplemente es la representación en si de la aplicación
'''M_model.java'''
* Ponemos el siguiente código:
public String SignoffUser()
{return "Usuario Desconectado";
Línea 320:
Primera java file:Realiza la coodinación para llamar al mensaje del Post de la clase del controlador en este caso C_controller el cual contiene el mensaje.
'''V_Client.java'''
* Ponemos el siguiente codigo:
public String CallPost()
{
Línea 331:
Segundo java file:Simplemente indicara si todo salió bien un mensaje cuando se genera la aplicación de SATISFACTORIO.
'''V_Screen.java'''
* Ponemos el siguiente codigo:
public String generate()
{
Línea 350:
prueba=new vista.V_Client()
%>
<%=prueba.CallPost()%>
</html>
Línea 356:
[[Archivo: Corridamvc1.jpg|center|thumb|600px|Corrida final mvc]]
== COMPONENTES ==
== EJB ==
Un "Java Bean" es un componente utilizado en Java que permite agrupar funcionalidades para formar parte de una aplicación, esto puede ser: un "Java Bean" agrupando información personal, datos sobre un pedimento, requerimientos de
Un "Enterprise Java Bean" también agrupa funcionalidades para una aplicación, sin embargo, a diferencia de un "Java Bean" un "Enterprise Java Bean" es un "deployable component", el término "deployable component" implica que existe un ambiente de ejecución , éste ambiente es precisamente un "EJB(Enterprise Java Bean) Container"
Línea 372:
Esta posiblemente sea la mayor ventaja de un EJB. Cuando se diseña un componente de Software se deben definir varios servicios para su funcionamiento, algunos pueden ser:
* Si ocurre un error que procedimiento debe ejecutarse ?
* Si la base de datos especificada se encuentra desactivada, existe otra alternativa ?
* No fue posible cumplir exitosamente "x" procedimiento, se deben retractar sus acciones parciales o reinvocar la transacción ?
* Estos Servicios (comúnmente llamados "Middleware") por lo general son requeridos además de la lógica contenida en los componentes principales, obviamente estos servicios ("Middleware") aún deben ser diseñados, sin embargo, mediante un "EJB Container" se ofrecen estos servicios y es a través de un "Enterprise Java Bean" que es posible desarrollar los componentes principales ("lógica de negocios").
== .NET ==
La plataforma .NET no es un solo producto. Es un conjunto de productos. Desde sistemas operativos como Windows XP, servidores de aplicaciones como SQL Server 2000, productos de oficina como Office XP, herramientas de desarrollo como Visual Studio .NET hasta servicios Web provistos por Microsoft como .NET Passport.
Línea 386:
Sus características son:
* Permiten acceder a la información en el formato apropiado, en cualquier momento y lugar.
* Hacen uso de Servicios Web.
* Optimizan de distintas maneras la forma en que la información es presentada y organizada. Por ejemplo: Pueden convertir texto en sonido en un celular o reconocer la escritura en un TabletPC.
* Proveen de una interfase sencilla y natural para que el usuario acceda a la información. Pueden utilizar la identidad del usuario, su perfil y datos para adaptar la información que es presentada.
* Pueden reconocer la presencia de otros dispositivos e intercambiar información.
* Pueden adaptarse a las características de la red donde están. Por ejemplo la velocidad de transmisión.
* Tienen capacidad de procesamiento propio, y distribuyen el procesamiento en la red haciendo uso de los servicios Web.
Ejemplo de estos son:
* PocketPC (PC de bolsillo)
* SmartPhone (Teléfono Inteligente)
* HandHelds
* TabletPC
* XBox (Consola de juegos de Microsoft)
== Arquitectura Cliente servidor ==
Línea 428:
[[Archivo:CaracteristicasArquitecturaMVC.jpg]]
== FORMATOS DE DATOS ==
==JSON==
Línea 441:
{"nombre":"Maribel", "apellido":"Benavides",
"dirección":{
"calle":"Esmeraldas y
"
},
"teléfonos":["098738095","022847563"]}
Línea 455:
Teléfono sería un arreglo.
== XML ==
En cuanto a XML, es muy similar al HTML, ya que se usan etiquetas pero no predefinidas como <IMG>, sino que podemos encontrar etiquetas personalizadas.
El siguiente es un ejemplo simple que nos permite observar esta
<?xml
<datosPersonales>
Línea 469:
<apellido>Benavidez</apellido>
<dirección>
<calle>Prólogo</calle>
<
</direccion>
Línea 480:
Comparándolo a JSON con XML, se puede decir que este primero es más fácil de leer tanto para nosotros como para las
Línea 486:
== APIs y APIs ==
API (application programming interface - Interfaz de
En otras palabras API es un conjunto de funciones que facilitan el intercambio de mensajes o datos entre dos aplicaciones que trabajan
Un claro ejemplo de esto
El consumo de un API muestra la forma de llamar a cada función y la tarea que ésta desempeña, sin importar cómo se lleva a cabo dicha tarea.
Para empezar a consumir un API solo es necesario conocer su url y las diferentes funciones que ofrece con la
Hay ciertas API's como flickr que necesitan que las personas que desean utilizrlas se registren para obtener su clave de acceso; mientras que hay API's de uso público como google traductor que no necesitan de esta tarea.
Línea 505:
* Youtube: http://code.google.com/intl/es-ES/apis/youtube/overview.html
Algunos de los Ejemplos
http://code.google.com/apis/ajax/playground
== APIs Locales: ==
Es un conjunto de funciones residentes en
Las funciones API se dividen en varias categorías:
Línea 529:
* Cualquier persona tiene acceso y pueden desarrollan aplicaciones que usen la API.
* No se requiere de mucho trabajo o
* Permite solicitar información sin guardarla en en una base de datos, tan solo se consume los servicios directaente desde el servidor de la API.
== Ventajas de una API cerrada ==
* Permite cifrar las respuestas de la API para que
* Evita abusos, ya que una API no segura y abierta es blanco de todo tipo de ataques.
* Ideal para publicar información y también para solicitar.
== Web Service ==
Un web service básicamente constituye una función accedida vía web por cualquier programa independiente de la plataforma en la cual reside el web service “servicio” o el lenguaje en el que ha sido desarrollado, cabe resaltar que el acceso es mediante el protocolo http pero existen protocolos de transporte que también pueden ser utilizados para este fin.
== RESTful Web Services ==
Los
La siguiente gráfica muestra la arquitectura para la
[[Archivo:ArquitecturaRESTfulWebServices.JPG]]
Línea 568:
public String getCustomer() {
StringBuilder sb=new StringBuilder();
sb.append("{\"clientes\":[\n\t{\"
try {
List<Customer> ls = lookupCustomerFacade().findAll();
Línea 574:
for (Customer s : ls) {
a++;
sb.append("\t{\"
sb.append("\"Nombre\":\""+s.getName()+"\",");
sb.append("\"Ciudad\":\""+s.getCity()+"\",");
Línea 590:
}
== SOAP ==
Proporciona una
• SOAP son siglas de Simple Object Access Protocol.
• SOAP es un protocolo de comunicación.
Línea 607:
• Un elemento de culpa (Fault)que contienen errores e información de estado de la información.
== Estructura de un mensaje SOAP ==
Su estructura es la siguiente
<? xml
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
Línea 626:
== SOAP Envelope ==
Elemento raíz de un mensaje SOAP, define al XML como un mensaje SOAP.
<?xml
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
Línea 638:
Encoding style se utiliza para definir los tipos de datos utilizados en el documento.
Xmlns .El espacio de nombres define
== SOAP HEADER ==
El elemento opcional, SOAP Header contiene información específica de aplicaciones
<?xml
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
Línea 661:
El atributo MustUnderstand SOAP indica si la entrada de la cabecera es obligatorio o facultativo para el destinatario del proceso.
El atributo de actor SOAP se utiliza para abordar el elemento de cabecera a un extremo específico
El atributo encodingStyle define
== SOAP BODY ==
<?xml
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
Línea 679:
Respuesta Soap
<? xml
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
Línea 689:
</soap:Envelope>
== SOAP Fault ==
Informan
<faultcode> Un código de identificación de la falla
<faultstring> Una explicación legible del error
|