Introducción. Curso de Middleware. Práctica 5. 1 de 27

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Introducción. Curso de Middleware. Práctica 5. 1 de 27"

Transcripción

1 Introducción Uno de los objetivos en el desarrollo de aplicaciones distribuidas es separar claramente el código que el servidor ofrece y el que el cliente utiliza. Las razones son múltiples y van desde razones de diseño típicas de orientación a objetos hasta razones de mercado (no nos interesa que los clientes tengan nuestro código). Para resolver este problema es necesario que el servidor publique un contrato que pueda utilizar el cliente. Históricamente, este contrato se ha definido utilizando un lenguaje propio llamado IDL (Lenguaje para la Descripción del Interfaz). Con este lenguaje, el fabricante del servidor escribía el contrato que podía suministrar. El cliente utilizaba este contrato para generar parte de su código. Si observamos nuestras prácticas, la librería que tenía la Calculadora (Calculo.dll) era común tanto al cliente como al servidor. Se compilaba y enlazaba en ambas aplicaciones. Con lo que hemos visto hasta la fecha podríamos preguntarnos si es posible separar al cliente del servidor y sobre todo si son necesarios o no dichos contratos en.net Remoting. Responder a estas preguntas es el objetivo de nuestra práctica. A lo largo de ella vamos a explorar varios mecanismos para la separación del código entre el cliente y el servidor. Curso de Middleware. Práctica 5. 1 de 27

2 Breve Historia Antes de meternos con las prácticas, me gustaría contaros una breve historia de la ingeniería del software. Y es que la ingeniería del software ha influido mucho en los paradigmas y diseño de los middleware. Al principio de los tiempos (más o menos por los años 1960) se produce un primer salto en la evolución. Uno de hecho muy importante: los programadores pasan de utilizar el ensamblador a usar lenguajes de alto nivel que deben ser compilados. Ejemplos representativos son COBOL o Fortran. Pronto se descubre que no todo es tan maravilloso como parece y se detectan problemas. El código está poco o nada estructurado, lo que convierte un programa en un monstruo difícil de mantener. Yo he llegado a ver un único programa de unas 15 páginas en Fortran (con sus GOTO)!!. No tarda en aparece una nueva generación. Por los años finales de los 60 o principios de los 70 nacen ya lenguajes de programación que refuerzan los conceptos de estructura (C o Pascal). De todas formas, la estructura es aún muy básica. La unidad de estructura es la función o procedimiento. Se empieza a pensar seriamente sobre la reutilización del código. En esta fecha tan temprana, lo único que podemos reutilizar es la función. Los sistemas distribuidos generan tecnologías acordes con esta filosofía y nace el RPC (llamada a procedimientos remotos). El principal problema que se detecta es que la lógica del código está fuertemente unida a los datos. Es necesario encapsular el código con sus datos. Y nace la orientación a objetos. En este nuevo paso, los programadores consiguen una nueva unidad de reutilización: la clase. Estamos sobre los años 1980 y aparecen nuevos lenguajes: Smalltalk y más tarde C++. Con el concepto de clase, los programadores pueden encapsular el código con sus datos, aislando los problemas. El mundo se ve como una jerarquía de clases que, de una forma ideal, representa nuestro mundo. Evidentemente, los sistemas distribuidos tienen que evolucionar y adaptarse a estos nuevos conceptos. El middlware evoluciona hacia la orientación a objetos, las primeras alternativas son CORBA y le siguen otras como.net Remoting. En paralelo (en algunos casos es previo) se exploran otras alternativas como los middlware orientados al mensaje, con sistemas de colas tipo MQSeries. Pero los problemas siguen estando. Sigue siendo difícil la reutilización de código y la integración de sistemas. El concepto de clase viene acompañado de los conceptos de herencia y jerarquía. Y estos conceptos son problemáticos para los sistemas distribuidos. No siempre se puede distribuir el código sin hacer visibles todos los niveles de la jerarquía y clases más básicas. Además, es complicado hacer que un programa escrito en Ada pueda ser utilizado por un programador de C++. Pero es que otros muchos de los problemas de distribución de código siguen sin solucionar, por ejemplo el versionado. Era necesario evolucionar hacia nuevos conceptos. Esta evolución ha sido menos abrupta que las anteriores y desemboca en el concepto de programación orientada al componente (Component-Oriented Programming). Los primeros intentos se producen sobre los años La idea es que los programadores acuerdan un cierto contrato que debe ser neutro al lenguaje y a la arquitectura interna del sistema. Se hacen relevantes los conceptos como IDL e interface. La unidad de reutilización es el interface. El programador puede hacer y distribuir tantas implementaciones como desee (incluso en Curso de Middleware. Práctica 5. 2 de 27

3 diferentes lenguajes de programación), siempre y cuando respete el contrato (interface). Cuando un cliente llama a un componente, se utiliza un protocolo neutro al lenguaje. Es decir, llamamos a los miembros del componente utilizando un protocolo determinado, incluso si en ambos lados de la llamada utilizamos el mismo lenguaje de programación. Ejemplos de estos sistemas son COM, DCOM, JavaBeans, etc. Espero que a estas alturas del curso, sepamos identificar muchos de estos conceptos en las prácticas que ya habéis realizado. Si tienes alguna dificultad, no dudes en comentarlo con vuestro profesor. Pero la historia no se queda aquí. Tras el esfuerzo que genera la idea de componente, los sistemas siguen teniendo problemas de reutilización de código. Y es que los ingenieros del software se encuentran una y otra vez con el mismo problema. Para reutilizar debemos separar (desacoplar) el código, pero la unión del código es lo que nos permite integrar aplicaciones y por lo tanto generar valor. Es un no puedo vivir contigo pero tampoco sin ti. Y de esta forma, el sistema evoluciona hacia las aplicaciones orientadas a servicios. De nuevo se hace un esfuerzo para reducir las dependencias y aislar las unidades de reutilización. Es el momento en el que el middleware toma una nueva variante: los servicios web; pero eso lo dejamos para otro ejercicio. El futuro está aún por escribir, pero hay una tendencia clara en la que el middleware desaparece y es el propio lenguaje el que ofrece la capacidad de distribuir la aplicación. Por ahora tenemos lenguajes paralelos ya establecidos. El propio C# ya incorpora alguna de esas características pero hay muchos más. Si tenéis tiempo mirad las propuestas de lenguajes cómo X10. El siguiente paso en toda esta evolución posiblemente sea que el lenguaje se haga responsable de toda la funcionalidad que suministra actualmente el middleware. Ya hay algunos experimentos en este sentido. Por ejemplo, usando Scala y Spark podemos procesar datos de forma distribuida (usando el modelo map/reduce). Existe una fuerte investigación en lenguajes funcionales distribuidos (por ejemplo Haskell distributido). Pero volvamos a nuestra práctica. El objetivo de toda esta historia era ilustrar que los sistemas distribuidos actuales suelen estar desacoplados. Y para ello es importante identificar y aislar el código que queremos distribuir y reutilizar. Hasta la fecha hemos compartido el código de nuestra calculadora tanto en el cliente como en el servidor. No parece nada positivo, visto todo lo anterior, no?. Intentemos poner algún remedio... Curso de Middleware. Práctica 5. 3 de 27

4 Utilización de Interface Uno de los problemas que estabamos describiendo es que necesitamos de un mecanismo que nos permita describir lo que hace una clase sin necesidad de dar el código de la misma. Antes de ver el concepto de interface, os propongo hacer una pequeña prueba. Arranca el servidor de nuestra primera práctica con la calculadora distribuida. Asegúrate que está arrancada sobre un canal http (en el fichero de configuración aparece el protocolo). Ahora, con un navegador intenta abrir la URL añadiendo al final?wsdl : maquina:numero de puerto/tu servicio?wsdl por ejemplo: Observa que cuando utilizamos?wsdl como parámetro de la url, se obtiene una descripción en XML de los objetos remotos que están siendo atendidos en esa url. Intenta analizar lo que ves. Cambia algo en tu calculadora y observa como la página refleja ese cambio. Este ejercicio lo volveremos a ver cuando estudiemos SOAP (Simple Object Access Protocol ). De hecho lo que sale por nuestro navegador es la descripción en WSDL (Web Services Description Language), un estándar del W3C. Esa descripción se corresponde con el contrato de nuestra calculadora. Es una forma de describir los servicios que ofrece nuestro objeto remoto. En este caso, estamos viendo WSDL que es una forma neutral basada en XML de describir el funcionamiento de una clase. Pero no es el único. Otra alternativa es el IDL ( Lenguaje de Definición de Interfaces ) muy utilizado en Corba y en algunos sistemas basados en Rmi. Un ejemplo de IDL sería: module HelloApp interface Hello string sayhello(); oneway void shutdown(); ; ; Una tercera alternativa es utilizar el propio lenguaje de programación. Muchos lenguajes tienen un mecanismo llamado interface que nos permite describir dicho contrato. Se dice que la clase que realmente desarrolla el código implementa el interface. Os proponemos como ejercicio diseñar un interface que se corresponda con los servicios que ofrecía nuestra clase de calculadora. Por ejemplo: Curso de Middleware. Práctica 5. 4 de 27

5 // ICalculadora.cs using System; namespace Calculo public interface ICalculadora double Suma(double izq, double dch); double Producto(double izq, double dch);... Y nuestra calculadora ahora se ve modificada de forma que implemente el interface: // Calculadora.cs using System; using Calculo; namespace CalculoConImplementacion public class Calculadora : MarshalByRefObject, ICalculadora... Nuestra intención es que el cliente sólo vea el interface, mientras que el servidor pueda trabajar con el código completo, es decir con la clase Calculadora. Para estar seguros que no usamos por error la clase Calculadora desde nuestro cliente hemos cambiado el nombre del paquete. El servidor únicamente tendremos que cambiarlo para que utilice el espacio de nombres CalculoConImplementación. Posiblemente tengas que cambiar los ficheros de configuración correspondientes. Si no sabes cómo hacerlo, no dudes en preguntar a tu profesor. El siguiente paso es modificar el código del cliente. Observad que no podemos utilizar el operador new como venía siendo nuestra costumbre. Dicho operador únicamente se puede utilizar con aquellas clases que son instanciables. Es decir, no podemos usarlo con interfaces o con clases abstractas. Por esta razón nos vemos obligados a utilizar en su lugar la función Activator.GetObject. El código del cliente quedará como sigue: Curso de Middleware. Práctica 5. 5 de 27

6 using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using Calculo; public class Cliente public static void Main (string[] args) Console.WriteLine("Creando la calculadora"); ICalculadora calc = (ICalculadora) Activator.GetObject( typeof(calculo.icalculadora), " Console.WriteLine("Prueba de suma 5+3=" + calc.suma(5.0,3.0).tostring()); Console.WriteLine("Prueba de producto 5*3=" + calc.producto(5.0,3.0)); Finalmente tenemos que modificar el proceso de compilación de forma que la librería común (Calculo.dll) sólo incluya el resultado de compilar ICalculadora. Lo que queremos crear es un combinado o solución que tenga cuatro proyectos. Es decir, : Un proyecto de tipo librería que tenga únicamente el fichero de código ICalculadora.cs. Nuestra librería podría llamarse Calculo.dll. Un proyecto de tipo librería que tenga la implementación del interface, es decir, tiene el fichero de código Calculadora.cs. La librería podría llamarse CalculoImpl.dll. Este proyecto depende del anterior (edita las referencias a incluir) Un proyecto de tipo ejecutable con el código del cliente. Contiene el fichero de código Cliente.cs y depende de la librería Calculo.dll. El ejecutable podría llamarse Cliente.exe. Un proyecto de tipo ejecutable con el código del servidor ( Servidor.cs ) que genera Servidor.exe. Este proyecto utiliza o depende de las librerías Calculo.dll y CalculoImpl.dll Observa que el cliente utiliza o depende de una única librería y en esa librería NO hay código ejecutable, únicamente el interface ( ICalculadora ). El servidor en cambio depende de las dos librerías (la que tiene el interface y la que tiene la implementación). Curso de Middleware. Práctica 5. 6 de 27

7 Es un buen momento para que tu profesor os cuente conceptos de teoría. No avances en la práctica hasta asegurarte que has entendido correctamente los objetivos de la misma!!!!. Antes de seguir, volvemos con nuestras preguntas habituales: Sabes la diferencia entre clase (normal), clase abstracta e interface?. Sabes cuando elegir uno u otro? Por qué no podemos hacer un new de una clase abstracta? Por qué tampoco lo podemos hacer un interface? En cambio si hacemos un new de una clase concreta, podemos asignarla a una variable declarada usando el interface. Tiene sentido? Aunque pudiera ser legal, Es normal hacer estas cosas?. Por ejemplo: ImyInterface variable = new ConcreteClass(); Los lenguajes de programación tipo Java o C# prohíben la herencia múltiple, pero dejan que una clase implemente varios interfaces. Intenta explicar las razones de tal decisión. Compara el interface de C# con el WSDL del servicio. Puedes ver ventajas o inconvenientes?. El interface lo escribe el programador (lo mismo que el IDL), pero Quién escribe el WSDL?. y sobre todo, Cómo se escribe? Podríamos tener una solución tan transparente en C++? El concepto de especificación (por ejemplo el.h de C++) es similar al concepto de interface en Java o C#? Cuando hemos introducido el concepto de interface hemos dejado de utilizar el operador new. Sabemos las razones?. Qué nos implica? Sabemos que el objeto calc es de tipo ICalculadora y por lo tanto parece que no tiene código (no tiene implementación). Pero se utiliza habitualmente (por ejemplo con calc.suma(..) ). Sabrías decir qué es lo que se ejecuta?. Es posible que estemos ejecutando un interface?. Con este ejemplo, hemos podido comprobar cómo utilizar los interfaces para separar el código entre el cliente y el servidor. A continuación veremos que también podemos utilizar clases abstractas. Curso de Middleware. Práctica 5. 7 de 27

8 Clases Abstractas Cuando, por alguna razón, no es posible suministrar un interface, una alternativa es crear una clase abstracta y hacer que la clase remota derive de la misma. En este caso, la forma de proceder es muy similar a la del interface por lo que apenas se darán breves pinceladas de cómo se harían. Una clase abstracta es una clase que no desarrolla todas las funciones que la componen, dejando algunas para que sean implementadas por las clases que hereden de ellas. En C# la clase abstracta de la Calculadora sería: using System; namespace Calculo public abstract class CalculadoraAbstract : MarshalByRefObject public abstract double Suma(double izq, double dch); public abstract double Producto(double izq, double dch); Dado que en C# no existe herencia múltiple, la clase Calculadora no podría heredar a la vez de CalculadoraAbstract y de MarshalByRefObject. Para evitar ese problema hemos hecho que la calculadora abstracta ya derive de MarshalByRefObject. Una clase abstracta tiene el mismo problema que el interface a la hora de crear nuestro objeto remoto con el operador new y nos veremos obligados a usar de nuevo la función GetObject. El resto de la práctica se deja como ejercicio al alumno ya que apenas hay diferencias con el método del interface. Sigamos recorriendo las posibles alternativas para separar el cliente y el servidor. A veces no es posible utilizar las técnicas anteriores. En esos casos, tendremos que recurrir a la posibilidad descrita en el siguiente ejercicio. Curso de Middleware. Práctica 5. 8 de 27

9 Usando una clase. No nos dejemos engañar por el título de este ejercicio. No se trata de volver a hacer lo que ya vimos en los primeros ejercicios. Lo que propone esta técnica es utilizar una clase vacía en lugar de un interface o de una clase abstracta. Por vacía lo que queremos decir es que debemos crear una clase que, aunque completa, no incorpore el código que implementa el cuerpo de las funciones. Mejor lo vemos con un ejemplo: using System; namespace Calculo public class Calculadora: MarshalByRefObject public virtual double Suma (double izq, double dch) throw new NotImplementedException (); dch) public virtual double Producto (double izq, double throw new NotImplementedException (); Esta clase es la que haremos pública y será la que pueda utilizar el cliente. En cambio, el servidor deberá utilizar una versión completa de la calculadora. Por ejemplo: Curso de Middleware. Práctica 5. 9 de 27

10 using System; namespace PaqueteServidor public class CalculadoraCompleta : Calculo.Calculadora public CalculadoraCompleta() Console.WriteLine("Estoy en el constructor"); public override double Suma(double izq, double dch) Console.WriteLine("Estoy sumando"); return izq+dch; dch) public override double Producto(double izq, double Console.WriteLine("Estoy multiplicando"); return izq*dch; Como en los ejercicios anteriores, hemos cambiado el nombre de espacios para no generar dudas en la utilización del cliente. Observad que las funciones las hemos declarado virtual en la calculadora vacía y override en la calculadora completa. Es la forma que tiene C# de asegurar que el programador no cometa errores accidentales. Le obliga a declarar las funciones que quiere sobreescribir. Si tienes dudas sobre los conceptos de sobrecarga (overload) y sobreescritura (override) pregunta a tu profesor. El segundo es muy relevante para los middleware. Los cambios en el servidor son mínimos: Curso de Middleware. Práctica de 27

11 using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels;... using Calculo; using PaqueteServidor; public class Servidor public static void Main (string[] args)... RemotingConfiguration.RegisterWellKnownServiceType( typeof(paqueteservidor.calculadoracompleta), "Calculadora.remota", WellKnownObjectMode.Singleton);... La diferencia en nuestro cliente es que ahora ya podemos volver a usar el operador new puesto que ahora tenemos una clase instanciable (aunque aparentemente poco útil): Curso de Middleware. Práctica de 27

12 using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using Calculo; public class Cliente public static void Main (string[] args) RemotingConfiguration.RegisterWellKnownClientType( typeof(calculo.calculadora), "tcp://localhost:1234/calculadora.remota" ); Console.WriteLine("Creando la calculadora"); Calculadora calc = new Calculadora(); Console.WriteLine("Prueba de suma 5+3=" + calc.suma(5.0,3.0)); Console.WriteLine("Prueba de producto 5*3=" + calc.producto(5.0,3.0)); Esta última técnica puede parecernos un tanto extraña. Lo primero que debería llamarnos la atención es que no se levanta la excepción NotImplementedException. Al fin y al cabo, es la calculadora que hemos creado y es lo que hace la función a la que hemos llamado, no? Por otra parte, puede parecernos poco útil crear una clase vacía cuando ya hemos visto las alternativas del interface o la clase abstracta. Hemos incluido esta alternativa principalmente para hacernos reflexionar sobre como funciona el operador new y entender.net Remoting. Es un buen momento para que tu profesor os cuente conceptos de teoría. No avances en la práctica hasta asegurarte que has entendido correctamente los objetivos de la misma!!!!. Pero antes de seguir, vamos a pararnos un segundo: Qué ventaja o inconvenientes puedes ver sobre los tres casos de separación que hemos visto? Me refiero a la utilización del interface, de una clase abstracta y de una clase vacía. Si sabes Corba, Se pueden utilizar estas alternativas? Puedes justificar la respuesta? De este último ejemplo, parece que el sistema no instancia una Curso de Middleware. Práctica de 27

13 calculadora en local o si lo hace, no la utiliza. Antes de seguir, intenta dar una explicación. Incluso, haz un esquema (tipo UML o uno de tu cosecha) sobre tu explicación. En la introducción hemos visto que los programadores intentan separar el contrato ( interface ) de la implementación. Crees que se ha conseguido con las alternativas anteriores? Si desarrollamos un servicio/componente que queremos poner a disposición al mundo entero, que alternativa tienes para distribuir el contrato? Es decir, cómo le dirías al mundo entero que tu calculadora sabe sumar? Es WSDL una solución? Qué sería mejor WSDL, interface, clase abstracta o clase vacía? La pregunta que deberíamos habernos hecho a estas alturas es cómo el operador new es capaz de crear unas veces objetos locales y otras veces objetos remotos. Hemos visto cómo el mismo operador genera una cosa u otra dependiendo de la configuración de nuestra aplicación. Este comportamiento debería sorprendernos aún más al observar que no es posible redefinir dicho operador. Otros lenguajes nos permiten redefinir operadores y entre ellos el operador new. En C# podemos redefinir algunos operadores, por ejemplo los matemáticos (+, -, /, etc.) pero no podemos redefinir el operador new. La solución a este misterio es muy compleja y necesitaríamos profundizar bastante en los interiores de.net. Para entender mejor estas características hemos preparado una práctica especifica sobre AOP en C#. Antes de continuar con otros aspectos de.net Remoting vamos a ver una herramienta que puede ser útil para realizar el objetivo de nuestra práctica: separar el código entre el cliente y el servidor. Curso de Middleware. Práctica de 27

14 Proxys Supongamos que tenemos un servicio remoto de tanta aceptación que resulta complejo distribuir nuestro interfaz o clase abstracta por todo el mundo. Lo ideal sería que nuestros clientes pudieran generar el código a partir de dicha información, no?. Pues eso es lo que intenta hacer las herramientas incorporadas en el Visual Studio. También Mono dispone de una herramienta similar, aunque su funcionamiento es ligeramente diferente. Aseguraros que tenéis un servidor arrancado con tcp o http, aunque os recomendamos http ya que podréis ver el wsdl desde el navegador. Un ejemplo de WSDL sería: Desde el Visual Studio añadir una referencia de servicio. El nombre puede cambiar de una versión a otra, pero lo hacemos pulsando el botón derecho sobre referencias en el proyecto. Cuando se abra el menú contextual seleccionamos la opción añadir referencia de servicio. Curso de Middleware. Práctica de 27

15 A continuación, se abrirá una pantalla para introducir datos. Cuando nos pida la url, debemos incluimos nuestra url (incluyendo?wsdl ) para indicar el esquema del servicio. En la pantalla aparecerá información sobre los servicios ofrecidos por la calculadora. Curso de Middleware. Práctica de 27

16 Antes de pulsar Ok aseguraros que hemos cambiado el nombre del namespace a algo que nos recuerde que es nuestra calculadora. En el ejemplo anterior, yo he puesto Calculo. El siguiente paso es construir el código del cliente que llame a un método de la calculadora. Por ejemplo, os propongo algo del siguiente estilo: Curso de Middleware. Práctica de 27

17 using System; using System.Threading; using Cliente.Calculo; namespace Cliente class Program public static void Main(string[] args) Thread.Sleep(2 * 1000); // Esto es para darle tiempo al servidor a que arranque Console.WriteLine("Esto es una prueba de calculadora"); CalculadoraPortTypeClient calc = new CalculadoraPortTypeClient(); Console.WriteLine("La suma de es : " + calc.suma(2.0, 3.0)); Console.WriteLine("Pulse Enter para salir..."); Console.ReadLine(); Y cuando ejecutemos nuestro cliente, podremos observar que el servicio ha funcionado correctamente: Curso de Middleware. Práctica de 27

18 Si nuestro servidor aún conserva la traza, deberíamos haber visto una traza en el servidor indicando que va a sumar. Lo que hemos hecho es construir un proxy usando la información que nos ha llegado desde WSDL. Antes de seguir deberías mirar el concepto de patrón proxy. Si no encuentras documentación en la red, pregunta a tu profesor. La siguiente gráfica, extraída de la wikipedia, representa dicho patrón en UML: Este concepto es importante, ya que lo que la herramienta está generando es de hecho un tipo muy particular de proxy. Este patrón de una forma u otra se utiliza en la mayoría de los middleware. Por ejemplo, en Corba es un concepto fundamental y lo veremos en su práctica correspondiente. Si quieres ver lo que se ha generado en el Visual Studio, haz lo siguiente. En la vista de clases, selecciona algún elemento relacionado con la calculadora y pide ir a definición, según la siguiente pantalla: Curso de Middleware. Práctica de 27

19 Eso nos abrirá el código de nuestro proxy. En el ejemplo anterior se llama Reference.cs. No será un código fácil de entender. No está pensado para que lo procesen los humanos ya que es un código generado y mantenido automáticamente. El código generado sería algo parecido a lo siguiente (también es posible que cambie según la versión). Solo incluimos una parte para nuestra curiosidad, pero la totalidad del código puede ser algo abrumador. Curso de Middleware. Práctica de 27

20 public double Suma(double izq, double dch) Cliente.Calculo.SumaRequest invalue = new Cliente.Calculo.SumaRequest(); invalue.izq = izq; invalue.dch = dch; Cliente.Calculo.SumaResponse retval = ((Cliente.Calculo.CalculadoraPortType)(this)).Suma(inValue); return retval.@return; [System.ComponentModel.EditorBrowsableAttribute(System.ComponentM odel.editorbrowsablestate.advanced)] System.Threading.Tasks.Task<Cliente.Calculo.SumaResponse> Cliente.Calculo.CalculadoraPortType.SumaAsync(Cliente.Calculo.Sum arequest request) return base.channel.sumaasync(request); public System.Threading.Tasks.Task<Cliente.Calculo.SumaResponse> SumaAsync(double izq, double dch) Cliente.Calculo.SumaRequest invalue = new Cliente.Calculo.SumaRequest(); invalue.izq = izq; invalue.dch = dch; return ((Cliente.Calculo.CalculadoraPortType) (this)).sumaasync(invalue); Si nos fijamos en el código observamos que se corresponde con un proxy de cliente. Esto es, el código que se inserta cuando creamos un objeto remoto en el cliente. Esta técnica de generación de proxys es muy habitual y es una alternativa a otras que veremos a lo largo del curso. Es un buen momento para que tu profesor os cuente conceptos de teoría. No avances en la práctica hasta asegurarte que has entendido correctamente los objetivos de la misma!!!!. Por ahora, vamos a intentar afianzar algunos conceptos de teoría, revisando nuestros conocimientos de un proxy : Curso de Middleware. Práctica de 27

21 Qué es un patrón proxy en la programación tradicional? Y un Firewall-proxy en el mundillo de las redes?. Podríamos decir que es lo mismo? Busca en la red alguna definición de un patrón proxy. Qué relación tienen los conceptos de la pregunta anterior con lo que genera la herramienta y que también hemos llamado proxy?. Mira la gráfica de UML anterior. Es un gráfico de un patrón que no refleja los objetos distribuidos. Sabrías decir qué elementos de la gráfica están en cliente y cuáles en el servidor?. Intenta buscar una implementación en algún lenguaje conocido como java o C#. Se parece a lo que hemos hecho hasta la fecha con nuestra calculadora?. Seguramente no demasiado, Verdad?. No es tan visible, ya que es el middleware quien genera el proxy de forma automática. En la gráfica UML aparece el interface de una clase. Significa eso que no estábamos utilizando el concepto de proxy en nuestras primeras prácticas? Me refiero a las prácticas iniciales en las que no había interfaces, clases abstractas o similares. Revisa el código que has programado para este curso, A qué clase o clases crees que se asocia el elemento RealSubject que aparece en el UML? Compara las dos gráficas de este capítulo (la del proxy y la de los canales). Puedes ver su conexión? No es trivial y lo mejor es que le pidas a tu profesor que os lo explique. No vamos a profundizar mucho más en el código, pero os animamos a que exploréis algunos de las técnicas utilizadas. Por ejemplo, observar cómo se hacen llamadas asíncronas en el proxy. O cómo se retornan Tareas (threads ligeros) en algunos de los métodos. Si os parece interesante, pide a tu profesor que te amplíe estos conceptos. Este último ejercicio nos ha demostrado la capacidad de Remoting para generar automáticamente el proxy y de publicar las característica de un servicio sin necesidad de intercambiar IDL o interfaces. Existe además otra herramienta denominada wsdl disponible tanto en Mono como en.net de Microsoft. Esta herramienta genera el código necesario para conectar con servicios web (usando SOAP). Aunque esta herramienta estará obsoleta por la aparición de la Windows Communication Fundation, merece la pena dedicarle un rato a la herramienta y por ello os proponemos el siguiente ejercicio. Nota: la herramienta wsdl.exe se suele encontrar en un directorio llamado C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin o similar. Curso de Middleware. Práctica de 27

22 Ejercicio con Servicios Web Os proponemos el siguiente ejercicio. Mirad la siguiente url: Esta url contiene un número considerable de servicios web. Podemos ver y utilizar muchos de ellos. Para la realización de esta práctica yo tomé uno llamado TempConvert pero es posible que cuando hagamos la práctica no esté disponible. Elige cualquier otro que veas disponible (aparecerá en color verde). Si finalmente no pudieras acceder a algún servicio web, siempre podrás realizarla con un servicio web hecho por tí. Hacer uno no es muy complicado si utilizas JavaEE o WCF. Podemos ver el api para conectar con los servicios. En nuestro ejemplo está en: Para generar el código de la librería repetiremos los pasos anteriores (añadir referencia externa). Curso de Middleware. Práctica de 27

23 El siguiente paso es hacer un programa que utilice dicha librería y que conecte con el servidor. Por ejemplo, el siguiente código utiliza dicho servicio: Curso de Middleware. Práctica de 27

24 using System; using System.Threading; using Cliente.Calculo; using Cliente.Temperatura; using System.ServiceModel; namespace Cliente class Program public static void Main(string[] args) Thread.Sleep(2 * 1000); // Esto es para darle tiempo al servidor a que arranque Console.WriteLine("Esto es un ejemplo de Web Service"); Cliente.Temperatura.TempConvertSoapClient tempserv = new TempConvertSoapClient("TempConvertSoap"); Console.WriteLine("CelsiusToFahrenheit responde con : " + tempserv.celsiustofahrenheit("25")); Console.WriteLine("Pulse Enter para salir..."); Console.ReadLine(); Si lo ejecutamos podremos ver algo similar a: Curso de Middleware. Práctica de 27

25 Interesante!!, verdad? Busca algún otro servicio web de la red, o utiliza alguno que hayas programado para esta u otra asignatura. Si no encuentras nada, pide a un compañero que te cree un servidor que publique un WDSL. Repite el proceso anterior y comprueba que puedes hacer un programa C# que dialogue con el servicio en pocas líneas de código. Es un buen momento para que tu profesor os cuente conceptos de teoría. No avances en la práctica hasta asegurarte que has entendido correctamente los objetivos de la misma!!!!. Este ejemplo último es interesante. Veamos algunas preguntas: Hemos visto varios métodos para separar el contrato de la implementación. Desde usar interfaces hasta usar clases abstractas, etc. Cuál es el método que hemos usado para conectarnos a Google?. Cómo nos hemos informado sobre las características del servicio de Google? Un aspecto interesante es que hemos hablado con un servidor remoto sin apenas saber nada de la arquitectura del mismo. No sabemos nada del S.O., tipo de máquinas, lenguajes de programación utilizados, etc. Cómo ha sido posible? Curso de Middleware. Práctica de 27

26 Ejercicio Con todo lo visto en esta práctica, ahora te proponemos aplicarlo al servidor de nombres que construimos en la práctica anterior. Modifica la práctica anterior para separar el código del cliente del servidor. Prueba con algunas alternativas y observa su funcionamiento. Y no te olvides del rendimiento. También prueba a generar el wsdl. Cuando termines, muestra tu trabajo al profesor. Curso de Middleware. Práctica de 27

27 Resumen Al principio de esta práctica nos planteamos la duda de cómo separar el código cliente del servidor. Incluso surgió la pregunta de si era necesario un lenguaje tipo IDL. A lo largo de la misma hemos visto algunos de los mecanismos que nos permiten separar el código entre uno y otro. Hemos comprobado que incluso podemos generar el código del cliente a partir de la meta información que el propio servidor publica. Podemos pensar que el WSDL hace la misma función que el IDL, pero la diferencia en Remoting es que el esquema también funciona en el sentido contrario: se genera a partir de código. Esto es posible por la capacidad de reflexión que tiene la plataforma (Reflexión es una propiedad de los lenguajes de programación que permite por programa interrogar las propiedades del propio código). Curso de Middleware. Práctica de 27

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Hay ocasiones en las que es necesario conectarnos a un equipo informático situado a mucha distancia de donde nos encontramos para realizar sobre

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

PLANTILLAS DE DOCUMENTOS EN WORD 2007

PLANTILLAS DE DOCUMENTOS EN WORD 2007 1 PLANTILLAS DE DOCUMENTOS EN WORD 2007 Introducción Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo

Más detalles

5. Composer: Publicar sus páginas en la web

5. Composer: Publicar sus páginas en la web 5. Composer: Publicar sus páginas en la web Si nuestras páginas existen únicamente en el disco duro local, sólo nosotros podremos navegar por ellas, pero nadie más podrá hacerlo. Composer nos permite publicarlas

Más detalles

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario 14 CORREO SEGURO. Hay aplicaciones de correo que permiten enviar y recibir correos cifrados y firmados digitalmente utilizando criptografía. Estas operaciones garantizan el intercambio seguro de información,

Más detalles

CITRIX 4.5 - Citrix Application Streaming

CITRIX 4.5 - Citrix Application Streaming 1 de 39 01/12/2007 1:06 CITRIX 4.5 - Citrix Application Streaming Es la caracteristica principal de la versión 4.5 de Citrix, el Application Streaming, en este documento se explica cómo usarlo. Application

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

MANUAL BASICO DE WEBEX

MANUAL BASICO DE WEBEX MANUAL BASICO DE WEBEX Webex es un servicio de web conferencias y soluciones de colaboración, lo que significa que nos permite crear una conferencia por internet en la cual además de vernos los unos a

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

Unidad Didáctica 12. La publicación

Unidad Didáctica 12. La publicación Unidad Didáctica 12 La publicación Contenido 1. Desarrollar y explotar 2. Definición del Sitio 3. Alojar nuestra primera página Web 4. Configurar la conexión FTP U.D. 12 La publicación 1. Desarrollar y

Más detalles

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes. Tutorial DC++ Para compartir, lo mejor es usar el DC++, que es un programa de intercambio P2P (como el emule) pero optimizado para usarlo en redes locales. Usarlo es muy sencillo y configurarlo también,

Más detalles

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER 2011 2012 COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER WWW.FAUBELL.COM vicente@faubell.com Hasta ahora hemos visto una pequeña introducción a la creación de las páginas web. No te preocupes por

Más detalles

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es Juantomás García GNOME Hispano juantomas@lared.es Qué es el proyecto MONO?. Estado actual del proyecto. Por qué es interesante para el software libre disponer de la tecnología relacionado con el proyecto

Más detalles

GUÍA DE USUARIO: GOOGLE DRIVE

GUÍA DE USUARIO: GOOGLE DRIVE GUÍA DE USUARIO: GOOGLE DRIVE Google Drive es una herramienta telemática de la web 2.0 que permite el trabajo virtual de forma colaborativa. En Google Drive podemos encontrar una barra de navegación en

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Tutorial del administrador de la web del departamento

Tutorial del administrador de la web del departamento Tutorial del administrador de la web del departamento Antes de leer este tutorial, debes leer el tutorial del profesor. Observa que en la parte inferior de la página de INICIO de tu departamento aparece

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 Las ventajas de los Servidores dedicados Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com A la hora de poner en marcha una aplicación web debemos contratar un servicio

Más detalles

Creando una webquests

Creando una webquests Creando una webquests 1. LO PRIMERO EL PROGRAMA Para crear paginas web necesitamos el software apropiado. Hay muchas formas y programas para hacerlo, pero por su facilidad de uso y por ser software libre

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

Toda base de datos relacional se basa en dos objetos

Toda base de datos relacional se basa en dos objetos 1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.

Más detalles

Crear presentaciones con Impress de OpenOffice

Crear presentaciones con Impress de OpenOffice Pintura de Acción. Expresionismo abstracto: Resinas acrílicas y píxeles en la Web 2.0. Aprender y compartir con blogs, podcasts, videos, en la Red como plataforma Crear presentaciones con Impress de OpenOffice

Más detalles

GVisualPDA Módulo de Almacén

GVisualPDA Módulo de Almacén GVisualPDA Módulo de Almacén GVisualPDA es una aplicación para Windows Mobile 5/6 que amplía más aún las posibilidades de integración del software de gestión GVisualRec permitiendo estar conectados en

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Instalación de Microsoft Virtual PC

Instalación de Microsoft Virtual PC Instalación de Microsoft Virtual PC Virtual PC es un software de Microsoft que permite instalar varios sistemas operativos en la misma máquina, sin tener que reiniciar Windows y además de forma segura,

Más detalles

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para

Más detalles

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014

Más detalles

Visual Studio 2008 es el conjunto de herramientas de

Visual Studio 2008 es el conjunto de herramientas de 1. VISUAL STUDIO 2008 Visual Studio 2008 es el conjunto de herramientas de desarrollo y programación creado por Microsoft tanto para aplicaciones Windows como aplicaciones web. La aparición de Visual Studio

Más detalles

Curso Internet Básico - Aularagon

Curso Internet Básico - Aularagon Antes de empezar es necesario que tengas claro algunas cosas: para configurar esta cuenta de correo, debes saber que el POP y el SMTP en este caso son mail.aragon.es; esta cuenta de correo hay que solicitarla

Más detalles

El e-commerce de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y

El e-commerce de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y El de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y compra en los diversos almacenes del Grupo JAB. En concreto podremos:

Más detalles

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R MATEMÁTICAS PARA EDUCACIÓN INFANTIL N Enseñamos y aprendemos llos números:: Método Siingapur y Fernández Bravo,, Porr Clarra Garrcí ía,, Marrtta Gonzzál lezz y Crri isstti ina Lattorrrre.. Ú M E R O S

Más detalles

Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark

Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark FUNDAMENTOS DE REDES DE COMPUTADORES Curso 2009/2010 Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark Introducción En esta práctica vamos a trabajar

Más detalles

Uso de Visual C++ Pre-Practica No. 3

Uso de Visual C++ Pre-Practica No. 3 Pre-Practica No. 3 Uso de Visual C++ Microsoft Visual C++ 2010 es una versión de Visual Studio específica para el lenguaje de programación C++. Es un entorno de desarrollo muy completo y profesional. Por

Más detalles

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH Software de Comunicaciones Práctica 7 - Secure Shell. SSH Juan Díez-Yanguas Barber Software de Comunicaciones Ingeniería Informática - 5º Curso Jdyb - Mayo 2013 Juan Díez- Yanguas Barber Práctica 7 Índice

Más detalles

Instalar y configurar W3 Total Cache

Instalar y configurar W3 Total Cache Instalar y configurar W3 Total Cache en WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La velocidad de carga de una web influye mucho a la hora de mejorar el

Más detalles

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) JOOMLA! ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) Es necesario comentar que este manual ha sido diseñado en su mayor parte por comunidadjoomla.org. Este manual es una

Más detalles

PLANTILLAS EN MICROSOFT WORD

PLANTILLAS EN MICROSOFT WORD PLANTILLAS EN MICROSOFT WORD Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo de la fuente, el tamaño,

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

POLIMORFISMO "una interfaz, múltiples métodos".

POLIMORFISMO una interfaz, múltiples métodos. "una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)

Más detalles

ASÍ CONSIGUES QUE TU WEB FUNCIONE EN BUSCADORES:

ASÍ CONSIGUES QUE TU WEB FUNCIONE EN BUSCADORES: Tener una web no es sinónimo de aparecer en las primeras posiciones de los buscadores, ya que esto es una tarea complicada que lleva mucho tiempo. Para lograr una buena posición es necesario utilizar técnicas

Más detalles

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot).

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot). Unidad 3. Plantillas Objetivos de la unidad: Una plantilla es un documento prediseñado que usted puede usar para crear nuevos documentos con el mismo formato. A través de una plantilla, el aspecto de un

Más detalles

Formularios. Formularios Diapositiva 1

Formularios. Formularios Diapositiva 1 Formularios Crear un formulario utilizando el Asistente para formularios Modificación en vista Diseño Adición de Controles a un Formulario Adición de un Subformulario a un formulario Formularios Diapositiva

Más detalles

10. El entorno de publicación web (Publiweb)

10. El entorno de publicación web (Publiweb) 10. El entorno de publicación web (Publiweb) 10.1. Introducción El entorno de publicación Web es una herramienta que permite la gestión de nuestras páginas Web de una forma visual. Algunos ejemplos de

Más detalles

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS UNA SESIÓN EN SPSS INTRODUCCIÓN. SPSS (Statistical Product and Service Solutions) es un paquete estadístico orientado, en principio, al ámbito de aplicación de las Ciencias sociales, es uno de las herramientas

Más detalles

Uso de varias pantallas y pantalla Splash

Uso de varias pantallas y pantalla Splash Uso de varias pantallas y pantalla Splash Índice 1. USO DE VARIAS PANTALLAS... 3 2. CREACIÓN DE PANTALLA DE INICIO O DE SPLASH... 10 2 1. Uso de varias pantallas Vamos a explicar como se crean aplicaciones

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos: UNIDAD 8 Presentaciones Reunión. (ITE. Banco de imágenes) as presentaciones son documentos formados por una sucesión de páginas, llamadas diapositivas, que transmiten información estructurada de manera

Más detalles

Taller: Introducción a Windows Communication Foundation

Taller: Introducción a Windows Communication Foundation Taller: Introducción a Windows Communication Foundation Autor: Carlos Milán Figueredo Nivel: 100 (Principiante) Pre-requisitos: Visual Studio 2008 Email: cmilanf@dotnetclubs.com Web: http://www.dotnetclubs.com

Más detalles

Base de datos en Excel

Base de datos en Excel Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de

Más detalles

TUTORIAL DE PUBLICACIÓN PARA REDACTORES

TUTORIAL DE PUBLICACIÓN PARA REDACTORES TUTORIAL DE PUBLICACIÓN PARA REDACTORES Fitfusion, pretende ser un punto de encuentro entre profesionales y adictos al fitness, donde compartimos conocimiento sobre nuestra pasión, el ejercicio físico

Más detalles

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS 1. Introducción Los ambientes de aprendizaje acompañados de trabajos colaborativos como estrategia se revierten en actividades de diferente índole (análisis de videos,

Más detalles

Internet aula abierta

Internet aula abierta MINISTERIO DE EDUCACIÓN Y CIENCIA SECRETARÍA GENERAL DE EDUCACIÓN Y FORMACIÓN PROFESIONAL DIRECCIÓN GENERAL DE EDUCACIÓN, FORMACIÓN PROFESIONAL E INNOVACIÓN EDUCATIVA CENTRO NACIONAL DE INFORMACIÓN Y COMUNICACIÓN

Más detalles

Impress : Programa de presentaciones de OpenOffice.

Impress : Programa de presentaciones de OpenOffice. Impress : Programa de presentaciones de OpenOffice. Básicamente Impress es un programa de presentaciones proyectadas a través de diapositivas (pantallas completas) que un orador o ponente puede utilizar

Más detalles

Activación de un Escritorio Remoto

Activación de un Escritorio Remoto Activación de un Escritorio Remoto La activación de un Escritorio Remoto se realiza en dos fases, en la primera se habilita a un Usuario de un ordenador para que pueda admitir una conexión remota, la segunda

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

Crear una Nueva Solución Vacía:

Crear una Nueva Solución Vacía: Lo primero que haremos será crear una Solución Vacía, en la cual almacenaremos todos los proyectos y sus clases, que desarrol lemos a lo largo de este curso. Crear una Nueva Solución Vacía: Clic en el

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

REQUISITOS PARA LA FIRMA DIGITAL

REQUISITOS PARA LA FIRMA DIGITAL REQUISITOS PARA LA FIRMA DIGITAL 1 Contenido Capítulo/sección Página 1 Introducción. 3 2 Restricciones. 4 3 Máquina Virtual de Java 5 3.1 Abrir Panel de Control de Java 5 3.2 Verificación de versión desde

Más detalles

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX MÓDULO 3: TEMA 1 INTRODUCCIÓN Hemos elegido esta herramienta, por su sencillez de acceso a través de la web, es bastante fácil e intuitiva, tan sólo tienes que registrarte, confirmar tu cuenta y ya puedes

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

2011-2012 RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

2011-2012 RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU 2011-2012 RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU Antecedentes:... 2 1. Introducción... 3 2. Imágenes que no se visualizan... 3 3. URLs de recursos o actividades que no son autocontenido...

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

Cómo encontrar. el CRM adecuado. para mi empresa? una guía creada por

Cómo encontrar. el CRM adecuado. para mi empresa? una guía creada por Cómo encontrar el CRM adecuado para mi empresa? una guía creada por Por qué las hojas de cálculo y el email no son suficientes para realizar el seguimiento en tu empresa La mayoría de las empresas pequeñas

Más detalles

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx En este documento explicaré brevemente cómo construir un servicio web con Java Axis2 y cómo invocarlo desde un cliente

Más detalles

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas... .NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS Definiciones...2 C# y Java.....3 Similitudes...4 Ventajas...4 Definiciones Sobre J2EE J2EE (Java 2 Platform Enterprise Edition)

Más detalles

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la Servicios web Introducción Un servicio web es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes

Más detalles

Uso del Programa Gantt Project

Uso del Programa Gantt Project Uso del Programa Gantt Project Presentación En esta práctica guiada aprenderás varias cosas relacionadas con el uso de Gantt Project, que es una aplicación de ayuda a la gestión de proyectos: Especificar

Más detalles

Importa los datos de tu empresa a ClassicGes 6

Importa los datos de tu empresa a ClassicGes 6 Importa los datos de tu empresa a ClassicGes 6 Y trabaja con el programa desde el primer momento El proceso de importación es una operación ágil y transparente para el usuario, que te permite disfrutar

Más detalles

15 CORREO WEB CORREO WEB

15 CORREO WEB CORREO WEB CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,

Más detalles

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

Aproximación local. Plano tangente. Derivadas parciales.

Aproximación local. Plano tangente. Derivadas parciales. Univ. de Alcalá de Henares Ingeniería de Telecomunicación Cálculo. Segundo parcial. Curso 004-005 Aproximación local. Plano tangente. Derivadas parciales. 1. Plano tangente 1.1. El problema de la aproximación

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Internet como herramientas de comunicación: El correo electrónico

Internet como herramientas de comunicación: El correo electrónico Internet como herramientas de comunicación: El correo electrónico 1. El correo electrónico Objetivo del tema: Aprender a manejar el correo electrónico y los medios de comunicación existentes en Internet.

Más detalles

5 razones por las que NO DEBERÍAS ABRIR UNA TIENDA ONLINE

5 razones por las que NO DEBERÍAS ABRIR UNA TIENDA ONLINE 5 razones por las que NO DEBERÍAS ABRIR UNA TIENDA ONLINE Cómo has llegado hasta aquí (y si aún estás a tiempo de darte la vuelta) Si estás pensando en abrir una tienda online, es posible que te encuentres

Más detalles

Internet aula abierta

Internet aula abierta MINISTERIO DE EDUCACIÓN Y CIENCIA SECRETARÍA GENERAL DE EDUCACIÓN Y FORMACIÓN PROFESIONAL DIRECCIÓN GENERAL DE EDUCACIÓN, FORMACIÓN PROFESIONAL E INNOVACIÓN EDUCATIVA CENTRO NACIONAL DE INFORMACIÓN Y COMUNICACIÓN

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

CURSO RÁPIDO DE PHOTOSHOP APLICADO AL SLOT

CURSO RÁPIDO DE PHOTOSHOP APLICADO AL SLOT CURSO RÁPIDO DE PHOTOSHOP APLICADO AL SLOT Ricard Garrós http://elartedelphotoshop.blogspot.com/ & http://www.fusky.es CURSO RÁPIDO DE PHOTOSHOP APLICADO AL SLOT Aquí os traigo la tercera entrega del curso,

Más detalles

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este Manual para usuarios USO DE ONEDRIVE Universidad Central del Este Contenido 1. QUÉ ES Y PARA QUÉ SIRVE OFFICE 365?... 3 1.1 CÓMO ENTRAR A LA PLATAFORMA DE OFFICE 365 DE LA UCE?... 3 ONEDRIVE... 5 2. QUÉ

Más detalles

Iptables, herramienta para controlar el tráfico de un servidor

Iptables, herramienta para controlar el tráfico de un servidor Iptables, herramienta para controlar el tráfico de un servidor La seguridad es punto muy importante a tener en cuenta en cualquier organización de ahí que sea fundamental hacer uso de aquellos mecanismos

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

Más detalles

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos. Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos. Hoy en día, las piedras angulares de los negocios son las páginas

Más detalles

Como verás pone Microsoft Office y si te colocas sobre esta línea debería salir:

Como verás pone Microsoft Office y si te colocas sobre esta línea debería salir: :: Introducción: Microsoft dispone de un conjunto de herramientas llamado Office que se compone de todo lo necesario para resolver cuantos problemas se presenten en los trabajos propios de cualquier usuario

Más detalles

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. 1 Direcciones o Ubicaciones, Carpetas y Archivos Botones de navegación. El botón Atrás permite volver a carpetas que hemos examinado anteriormente. El botón Arriba

Más detalles

Analítica para tu web

Analítica para tu web Analítica para tu web Mide, analiza y actúa para mejorar tus resultados Índice 1. Qué es la analítica web 2. Configura webmaker para utilizar tu herramienta de analítica web favorita 3. Métricas más habituales

Más detalles

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.

Más detalles

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Preguntas frecuentes Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Atención! Esta opción es de configuración y solamente la prodrá realizar el administrador de la

Más detalles

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

HERRAMIENTAS DE ACCESS ACCESS 2010. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS ACCESS 2010 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE HERRAMIENTAS DE ACCESS En esta unidad veremos algunas de las herramientas incorporadas de Access que

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Primeros pasos en el aula virtual

Primeros pasos en el aula virtual Primeros pasos en el aula virtual Cómo trabajaremos? El recorrido de formación que les proponemos se desarrolla en dos módulos de trabajo que contienen cinco y diez clases respectivamente (ver Programa

Más detalles

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra. Gestión de la tesorería y del riesgo El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra. En este manual nos

Más detalles

Control Remoto de Ordenadores: Por Manuel Murillo García

Control Remoto de Ordenadores: Por Manuel Murillo García Control Remoto de Ordenadores: Por Manuel Murillo García Quien no ha tenido la necesidad o curiosidad de tomar el control remoto de un ordenador vía Internet. Es difícil? Hay que configurar muchas cosas?

Más detalles