SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
2013
SERVICIOS WEB
JAVA-PERL-PHP-GOOGLE
ALAN FLORES GASPAR
[ E S C R I B I R L A D I R E C C I Ó N D E L A C O M P A Ñ Í A ]
Servicios Web con Java SE: El Cliente
Creando un Cliente muy simple para un Servicio Web muy simple
Ahora crearemos —en un directorio/proyecto distinto— el cliente para nuestro Servicio
Web el cual debe estar publicado y en ejecución.
Pero primero necesitamos generar los artefactos cliente. Para ello utilizaremos la
herramienta wsimport incluida en Java SE 6.0, a la cual le pasamos como argumento
la ubicación del contrato del servicio, es decir el documento WSDL:
>wsimport http://localhost:8080/hello?wsdl
Esto generará las clases que encapsulan las operaciones para la invocación de los
métodos del Servicio Web. En nuestro caso se generarán seis clases dentro del paquete
‘hello’, entre ellas estan las clases hello.HelloService y hello.Hello que utilizaremos
directamente en nuestro cliente.
Una vez generados los artefactos cliente solo resta crear el cliente en sí, nuevamente
una simple aplicación de consola:
Listado de Client.java
public class Client {
public static void main(String[] args) {
String arg = null;
String result = null;
if (args.length > 0) {
arg = args[0];
}
else {
arg = "Anonimo";
}
try {
hello.HelloService service = new hello.HelloService();
hello.Hello port = service.getHelloPort();
result = port.sayHello(arg);
}
catch (Exception ex) {
result = ex.toString();
}
finally{
System.out.println(result);
}
}
}
Nótese que para invocar la operación de nuestro Servicio Web primero creamos
el localizador del servicio (con HelloService) y mediante éste obtenemos un puerto (de
tipo Hello) por medio del cual después invocamos al método sayHello —tras del cual se
invoca la operación del Servicio Web el cual a su vez invoca el método de la clase Hello
implementada al inicio del artículo…
Solo resta compilar y ejecutar nuestro cliente con algún argumento, su nombre por
ejemplo, si no se especifica un argumento la salida será “Hola Anónimo”:
>javac Client.java
>java Client Yo
Hola Yo.
La misma salida se desplegará en la consola del servicio.
Con todo lo que hemos realizado vemos lo fácil que es crear y publicar un Servicio Web
así como su cliente con los paquetes y herramientas de JAX-WS incluidos en Java SE
6.0. Y aunque para un despliegue en producción no podremos prescindir de los
contenedores Java EE (Tomcat, Glassfish, JBoss etc…) para los fines de desarrollo de
prototipos o durante las primeras fases —así como en proyectos escolares— es
suficiente con lo incluido en Java SE 6.0.
No obstante todo esto tan sólo fue el inicio, la finalidad fue dar una introducción al
desarrollo de Servicios Web utilizando JAX-WS esperando motive a continuar
para “abordar el Metro”. Quedan entonces muchas cosas por tratar, como la
automatización de las tareas que realizamos, crear un servicio y cliente a partir de un
WSDL, el despliegue en contenedores Java EE, utilizar contratos de datos y JAXB,
utilización de JAXP, StAX y SAAJ, sobre interoperabilidad y WS-* con WSIT, etc… Ya ni
se diga de explorar otras opciones para el desarrollo de WS en Java como Axis
con XMLBeans, AXIOM, etc…
Servicios Web con Java SE: El Servicio
Creando un Servicio Web muy simple
Para ilustrar la creación de Servicio Web con JAX-WS 2.0 emplearemos el clásico
ejemplo de Hola Mundo (posteriormente abordaremos otros ejemplos) el cual luce así:
Listado de Hello.java
package hello;
import javax.jws.WebService;
@WebService
public class Hello {
private String message = new String(”Hola “);
public String sayHello(String name) {
String msg = message + name + “.”;
System.out.println(msg);
return msg;
}
}
Nótese que luce como una clase Java normal pero con un par de adiciones: En primer
lugar importamos javax.jws.WebService, lo cual es necesario para marcar la clase Hello
con la anotación @WebService. Con esto habilitamos la clase para que pueda ser
publicada como un Servicio Web, en éste caso con solo una operación, la del método
sayHello.
El siguiente paso es generar los artefactos de despliegue para dicha clase, para ello
utilizamos la herramientawsgen, incluida en Java SE 6.0, a la cual le pasamos como
argumento la clase hello.Hello compilada:
>javac hello/Hello.java
>wsgen -cp . hello.Hello
Con todo lo anterior ya tenemos un sencillo Servicio Web casi listo para ser desplegado
en algún contenedor Java EE, no obstante podemos probarlo sin un contenedor si
creamos un Endpoint dentro de una aplicación que actuará como host del servicio
web, tal como se ilustra en el siguiente código:
Listado de SimpleHelloWS.java
import javax.xml.ws.Endpoint;
import hello.Hello;
public class SimpleHelloWS {
public static void main(String[] args) {
String endpointAddress = “http://localhost:8080/hello”;
Endpoint.publish(endpointAddress, new hello.Hello());
System.out.println(”El Servicio Web Hello se esta ejecutando…”);
System.out.println(”WSDL: ” + endpointAddress + “?wsdl”);
}
}
Nótese que se trata de una simple aplicación de consola que utiliza el
método publish de la clase javax.xml.ws.Endpoint para crear y publicar
un Endpoint para una instancia de la clase hello.Hello en la
dirección http://localhost:8080/SimpleHelloWS/hello. Esto último gracias a que la
clase Endpoint utiliza el servidor web “liviano” de Sun que está incluido en Java SE
dentro del paquete com.sun.net.httpserver.
Tras compilar y ejecutar la aplicación se mostraran dos líneas indicando que el servicio
se está ejecutando y que la ubicación del “contrato del servicio”, es decir el documento
WSDL del mismo, para cualquier cliente que desee acceder al mismo.
>javac SimpleHelloWS.java
>java SimpleHelloWS
El Servicio Web Hello se esta ejecutando...
WSDL: http://localhost:8080/hello?wsdl
Servicio Web en PHP
Cliente
La creación de un cliente de un servicio web con PHP es relativamente sencilla haciendo uso de PHP-
SOAP. Con la descripción del servicio al que queremos acceder (fichero wsdl), obtendremos acceso a
todos los métodos que ofrece el servicio web. A continuación mostramos un ejemplo donde se verá más
claramente lo expuesto. Concretamente en el ejemplo llamamos a un WS que, dada una cadena,
devuelve la cadena al revés.
$objClienteWS = new SoapClient('Ws_Ejemplo.wsdl');
$resultado = $objClienteWS->ejemplo('Hola');
print_r($resultado);
De la ejecución de este cliente obtenemos el siguiente resultado:
aloH
Servidor
La creación del servidor requiere, evidentemente, algo más de trabajo que la del cliente. En este punto
haremos un pequeño resumen de los pasos a seguir. Primero tenemos que crear un fichero php (en
nuestro ejemplo server.php) que contendrá las llamadas a las clases SOAP correspondientes al servidor.
En este mismo fichero se puede incluir la definición de la clase que implementará todos los métodos
exportados. Siguiendo con nuestro ejemplo, tenemos que tener un método que nos devuelva la inversa de
una cadena. El contenido del fichero es:
require_once 'SOAP/Server.php';
class Prueba_Server {
function ejemplo($cadena){
return strrev($cadena);
}
}
$server = new SOAP_Server;
$server->_auto_translation = true;
$soapclass = new Prueba_Server();
$server->addObjectMap($soapclass,'urn:Prueba_Server');
$server->service($HTTP_RAW_POST_DATA);
Para que el cliente tenga acceso a la información que ofrece el WS, necesita de la definición de los
métodos exportados por la clase. Esto se obtiene a partir del fichero WSDL. El fichero de nuestro ejemplo
es el siguiente:
<?xml version="1.0"?>
<definitions name="ServerExample" targetNamespace="urn:ServerExample"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:ServerExample"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types xmlns="http://schemas.xmlsoap.org/wsdl/"></types>
<message name="ejemploRequest">
<part name="cadena" type="xsd:string" />
</message>
<message name="ejemploResponse">
<part name="cadena" type="xsd:string" />
</message>
<portType name="ServerExamplePort">
<operation name="ejemplo">
<input message="tns:ejemploRequest" />
<output message="tns:ejemploResponse" />
</operation>
</portType>
<binding name="ServerExampleBinding" type="tns:ServerExamplePort">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="ejemplo">
<soap:operation
soapAction="urn:Prueba_Server#prueba_server#ejemplo" />
<input>
<soap:body use="encoded"
namespace="urn:Prueba_Server"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded"
namespace="urn:Prueba_Server"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
<service name="ServerExampleService">
<documentation />
<port name="ServerExamplePort"
binding="tns:ServerExampleBinding">
<soap:address
location="http://mi-
servidor.es/cin/ws/server/server.php" />
</port>
</service>
</definitions>
Con esto nuestro Web Service ya esta funcionando. Simplemente tenemos que llamarlo desde el cliente.
Generación del WSDL
Uno de los puntos más costosos de la creación de un WS en PHP es la generación del WSDL. Hay una
serie de herramientas que te permiten su generación siempre y cuando rellenes ciertos parámetros. El
propio PEAR::SOAP te facilita un proceso para hacerlo, y es el que vamos a intentar explicar a
continuación.
La idea consiste en crear un constructor para nuestra clase y, en él, sobrescribir una serie de arrays
donde aportaremos la información de los métodos que exporta una clase. Concretamente se trata de la
estructura $this->__dispatch_map que tendrá una entrada por cada uno de los métodos soportados.
Después, tras las llamadas que realizamos al SOAP_Server tenemos que utilizar una clase de SOAP que
nos generará el WSDL.
El código para nuestro ejemplo es el siguiente:
require_once 'SOAP/Server.php';
class Prueba_Server {
function Prueba_Server(){
$this->__dispatch_map['ejemplo'] =
array(
'in' => array('cadena' => 'string',
),
'out' => array('cadena' => 'string'),
);
}
function ejemplo($cadena){
return strrev($cadena);
}
}
$server = new SOAP_Server;
$server->_auto_translation = true;
$soapclass = new Prueba_Server();
$server->addObjectMap($soapclass,'urn:Prueba_Server');
if(isset($_REQUEST['wsdl'])){
require_once 'SOAP/Disco.php';
$disco = new SOAP_DISCO_Server($server,'ServerExample');
header("Content-type: text/xml");
echo $disco->getWSDL();
return;
}
$server->service($HTTP_RAW_POST_DATA);
Con este código, al interrogar al server.php directamente, obtendremos un xml que contiene la definición
del WS. Este contenido se almacena en un fichero WSDL y, de ese modo, los clientes podrán acceder al
servicio.
Web Services en gvHidra
Ya hemos visto como se implementan los WS en PHP. Para aplicaciones con gvHidra, se han
implementado algunas clases que ayudan a la creación tanto del servidor como del cliente en una
aplicación. De momento se utiliza un procedimiento muy básico para controlar la seguridad.
Cliente
La creación del cliente se realiza mediante la clase IgepWS_Client. A continuación mostramos el código:
$objCIN = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl');
$credencial = IgepWS_Client::getCredential('WSCIN');
$objCIN->getImporte($credencial,....
El parámetro credencial contiene los parámetros de validación válidos para ese cliente WS. Este
parámetro se obtiene consultando los DSNs de la aplicación. La estructura de la credencial seria la
siguiente:
$credencial = array(
'login'=>'XXXXX',
'password'=>'XXXXX'
);
Esta clase usa SoapClient, y si necesitamos pasarle otras opciones podemos hacerlo con el parámetro
opcional. En el ejemplo siguiente se modifican las opciones para poder depurar la comunicación con el
servidor. En laweb de PHP se pueden ver otras opciones posibles.
$obj = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl', array("exceptions" =>
0, 'trace'=>1, ));
print "<pre>n";
print "Request : n". htmlspecialchars($obj->__getLastRequest()) ."n";
print "RequestHeaders :n". $obj->__getLastRequestHeaders() ."n";
print "Response: n". htmlspecialchars($obj->__getLastResponse()) ."n";
print "ResponseHeaders:n". $obj->__getLastResponseHeaders() ."n";
print "Functions: n". var_export($obj->__getFunctions(),true) ."n";
print "Types: n". var_export($obj->__getTypes(),true) ."n";
print "</pre>";
Para depuración, también puede ser útil inhabilitar la cache del cliente, ya que así podemos ir modificando
el wsdl:
IgepWS_Client::disableCache();
Si el cliente usa una codificación distinta a UTF-8 (como ocurre con gvHIDRA que usa latin1), conviene
indicarlo en las opciones de conexión y así no hay que hacer conversiones explicitas, sino que PHP
convierte los parámetros de entrada desde la codificación origen a UTF-8, y el resultado lo convierte de
UTF-8 a la codificación indicada. Ejemplo:
$obj = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl', array("exceptions" =>
0, 'trace'=>1, 'encoding'=>'latin1', ));
...
print "Response:n".htmlspecialchars(utf8_decode($obj-
>__getLastResponse()))."n";
...
Servidor
En el caso del servidor, los beneficios son mayores. Tenemos dos clases, una clase estática que genera
el código básico del Servidor y otra que proporciona un comportamiento al servidor propio de una
aplicación gvHidra. La primera de ellas es la clase estática IgepWS_ServerBase. Esta clase simplifica la
creación y el registro de un servidor SOAP de WS. Concretamente, en nuestro fichero de lanzamiento del
servidor (típicamente server.php), que tiene que estar en el raiz de la aplicación, tendríamos el siguiente
código:
require_once "igep/include/igep_ws/IgepWS_ServerBase.php";
require_once 'ws/server/WSCIN.php';
IgepWS_ServerBase::registrar('WSCIN');
Por otro lado, tenemos que crear la clase que controla el Servidor (en nuestro ejemplo WSCIN). Esta
clase, al heredar de IgepWS_Server tiene el mecanismo de validación ya implementado y el sistema de
conexión propio de gvHidra. La única premisa que se exige es que, si se requiere validación, el método
implementado por el programador debe incluir un parámetro $credencial que se pasará al método
checkCredential para validar su contenido. A continuación mostramos un ejemplo:
include_once "igep/include/igep_ws/IgepWS_Server.php";
class WSCIN extends IgepWS_Server{
function __construct(){
$msgs = array(
'1'=>'Error de conexión. Avise al Servicio de
Informática',
'2'=>'Error en operación. Avise al Servicio de
Informática',
);
parent::IgepWS_Server('WSCIN', $smsgs);
...
}
function getImporte($credencial,$anyox, $dgralx, $numx, $tipo_expx,
$numtipo_expx){
if(!$this->checkCredential($credencial))
return $this->getAuthError();
$dsn = ConfigFramework::getConfig()->getDSN('dsn_cin');
$db = $this->conectar($dsn);
if (!$db)
return $this->gvhFault('1', '...mensaje opcional, enviado al log...');
...
return array('implic' => floatval($res[0]['implic']), 'impadj' =>
floatval($res[0]['impadj']));
}
...
}
Si nuestro servidor acepta varias credenciales, podemos pasarle un vector al constructor del padre:
parent::IgepWS_Server(array('WSCIN','WSMCMENOR',));
En las credenciales de los servidores de web services, la contraseña hay que almacenarla con hash. Para
ello usar el formulario en igep/include/igep_utils/protectdata.php para obtener los hash de las contraseñas,
y guardar estas últimas en un lugar seguro, fuera de la aplicación.
El parámetro con los mensajes de error se utiliza si provocamos los errores (Soap_Fault) con el
método gvhFault, que hace las conversiones necesarias en la codificación y tiene un parámetro opcional
usado para que nos informe del error en el log.
Si queremos restringir algún método a algunas credenciales, podemos hacerlo con método
checkCredential pasándole la lista de credenciales:
if (!$this->checkCredential($credencial, array('WSMCMENOR',)))
return $this->getAuthError();
También hay que tener precaución cuando hacemos consultas sobre base de datos, que si utilizamos
campos calculados o agregados (count, min, ...), el resultado será de tipo string. Si queremos obtener otro
tipo tendremos que modificarlo usando la función floatval para tipo float, intval para tipo int, ...
También es importante tener en cuenta la codificación, sobretodo cuando nuestro WS recibe o devuelve
campos string que puedan tener carácteres especiales. Cuestiones:
la codificación usada en los WS es UTF-8, luego habrá que hacer las transformaciones
necesarias desde/hacia LATIN-1 (la codificación usada en gvHIDRA)
si queremos retornar una cadena obtenida de la BD o de una constante en un fichero fuente de
PHP, tenemos que transformarla a utf-8 con utf8_encode($cadena)
si recibimos un parámetro texto vendrá en utf-8, luego también habrá que transformarlo
(utf8_decode) a latin-1 para operar con él (concatenar con otras cadenas, almacenar en BD, ...)
en caso de problemas también podemos hacer las transformaciones con iconv.
Servicios Web con PERL (Código del servidor)
#!/usr/bin/perl
use SOAP::Lite;
use SOAP::Transport::HTTP;
use DBI;
my $soapServer = SOAP::Transport::HTTP::Daemon
-> new(LocalAddr => '172.18.61.103',
LocalPort => 8082)
-> dispatch_to(qw(getRegistro))
-> handle;
sub getRegistro {
my ($class, $inputString) = @_;
die "no hay datos de entradan" if !$inputString;
my $dbh = DBI->connect("DBI:mysql:test","root","")
die "nError al abrir la base datos: $DBI::errstrn";
$query = "select nombre, puesto, domicilio, telefono, extencion
from directorio where nombre like '%". $inputString. "%'";
my $sth = $dbh->prepare($query);
$sth->execute();
$Registro = "<?xml version="1.0" encoding="UTF-8" ?> n" ;
$Registro = $Registro."<Resultados>n" ;
while ( @tupla=$sth->fetchrow_array())
{
$Registro = $Registro."<Registro>n";
$Registro = $Registro."<Nombre>$tupla[0]</Nombre>n";
$Registro = $Registro."<Cargo>$tupla[1]</Cargo>n";
$Registro = $Registro."<Domicilio>$tupla[2]</Domicilio>n";
$Registro = $Registro."<Telefono>$tupla[3]</Telefono>n";
$Registro = $Registro."<Extencion>$tupla[4]</Extencion>n";
$Registro = $Registro."</Registro>n"
}
$Registro = $Registro."</Resultados>"." n";
$sth->finish();
return SOAP::Data->name("return")->type("string")-
>value($Registro);
}
Servicios Web con PERL (Código del cliente)
#!/usr/bin/perl
use SOAP::Lite;
print "n Filtro n ";
$inputString=<STDIN>;
chop $inputString;
$inputSoapParam = SOAP::Data
->name("inputString")
->type("string")
->value($inputString);
$response=SOAP::Lite
-> proxy('http://172.18.61.103:8080/')
-> getRegistro($inputSoapParam);
if($response->fault) {
print "SOAP Fault received. nn";
print "Fault Code : " . $response->faultcode . "n";
print "Fault String : " . $response->faultstring . "n";
print "Fault Detail : " . $response->faultdetail . "n";
print "Fault Actor : " . $response->faultactor . "n";
die;
}
print $response->result ."n"
Lista de servicios de Google:
Añadir a Google Reader permite la creación de un botón gráfico con la dirección del RSS de tú
blog para que al clickarlo este sea añadido a Google Reader.
Blogger es un servicio muy popular y gratuito de creación y publicación de blogs.
Froogle es un buscador de productos. Utilizado para buscar el precio más barato de un producto
y la comparativa de estos en diferentes tiendas online.
GMail es el servicio de correo electrónico de google, actualmente proporciona más de 2GB de
capacidad de almacenamiento.
Google AdSense es el servicio de publicidad contextual de Google.
Google AdWords es la otra parte de AdSense. Mientras AdSense permite a los webmasters
poner los anuncios en sus web, Adwords permite la publicación de estos en la red de AdSense.
Además el pasado 21 de noviembre Google liberó el "Onsite Advertiser Sign-Up" que permite a
un anunciante publicar sus anuncios en sitios específicos de la red AdSense.
Google Alerts te permite ser avisado por correo electrónico acerca de búsquedas y/o textos
particulares.
Google Analytics analiza las páginas web, a través de un código javascript, guardando todo tipo
de estadísticas de los visitantes. Permite la integración con una cuenta deAdWords.
Google Answers responde a tus preguntas.
Google Base Libreria de contenidos, portal de anuncios clasificados o servicio inclasificable que
permite añadir cualquier tipo de contenido a su base de datos.
Google Blog Search motor de búsqueda orientado a la búsqueda en blogs/bitácoras excluyendo
el resto de páginas web.
Google Bookmarks es un servicio que permite a los usuarios guardar marcadores o favoritos con
el título y las etiquetas deseadas, es decir, un del.icio.us "made in" google, pero bastante más
cutre. Es necesaria una cuenta de Gmail para acceder. (+ info)
Google Browser Sync: Se trata de una plugin para el navegador Firefox con el que podrás
sincronizar allá donde lo utilices tus ajustes incluyendo tus favoritos, tu historial, las cookies y las
contraseñas que tengas almacenadas.
Google Catalogs busca en catálogos.
Google Checkout: Sistema de pago por internet homólogo a Paypal. Proporcionas los datos de tu
tarjeta al sistema y puedes pagar utilizando tu correo electrónico (en los sitios que acepten pagos
a través de Google Checkout, claro).
Google Co-op permite a los usuarios suscribirse y catalogar contenidos procendentes de sitios
como CNNMoney.con (economía), Fandango.com (espectáculos) o People.com (prensa rosa)
para luego utilizar esos metadatos para mejorar la experiencia de búsqueda de los usuarios.
Google Code servicio de Google orientado a la promoción y contribución del software de código
abierto (Open Source).
Google Code Search: Es un buscador de código fuente que permite utilizar comandos de
búsqueda especiales.
Google Compute existe como parte de la Barra de herramientas de Google (Google Toolbar) y
se encarga de utilizar el ‘idle time’ de tú ordenador (es decir, cuando no estás haciendo nada)
para computar información desde proyectos distribuidos comoFolding@Home.
Google Deskbar se trata de un ventana embedida de IE en tú barra de tareas de Windows, la
cual te permite realizar búsquedas a traves de Google.
Google Desktop Un servicio que ofrece varios widgets(?) y una barra lateral la cual te permite
realizar búsquedas, sindicar contenidos, escribir notas, consultar información metereológica y
más.
Google Directory es un clon del directorio ODP pero llenito de AdSense.
Google Docs & Spreadsheets: Lugar desde el que podrás utilizar el procesador de textos (docs) y
la hoja de cálculo (spreadsheets) de Google, crear y gestionar documentos colaborativos y tener
todo organizado (Descripción y más info enGenbeta).
Google Earth permite visualizar imágenes de satélite de cualquier rincón del mundo.
Google Finance: Información bursatil: bolsa, cotizaciones, acciones, con gráficos e información
adicional relacionada. Una copia del servicio Yahoo! Finances con alguna mejora. (+ sobre
Google Finance).
Google Groups te permite crear listas de correo, interactuar en ellas y leer los mensajes de
Usenet.
Google Homepage te permite personalizar Google a tú gusto. Permite añadir widgets al usuario
como información meteorológica, noticias, horóscopos y más.
Google Hosted: Permite utilizar diferentes servicios como Gmail, Google Talk, Google Calendar y
Google Page Creator sobre un nombre de dominio que le asociemos.
Google Image Search es el buscador de imágenes de Google.
Google Labs nos muestra los projectos en los cuales Google está trabajando para una futura
liberalización de los mismos.
Google Local Muestra información local basándose en datos procedentes de Google Maps.
Google Maps es un servicio de mapeo el cual integra rutas de conducción y localización con
mapas de ciudades. Dispone de un API bastante elaborado con el que se pueden realizar
aplicaciones independientes que utilicen Google Maps.
Google Mars incluye un conjunto de mapas e imágenes de la superficie de Marte.
Google Moon similar al anterior, en este caso muestra planos e imágenes de la superficie lunar,
asi como información sobre alunizajes que se han producido.
Google Mobile permite el acceso al buscador Google a través de un movil WAP.
Google Movie Showtimes permite introducir un código postal o una dirección que servirá para
localizar cines y espectáculos cercanos a la zona mediante Google Maps. (De momento solo
disponible en los EE.UU.).
Google Música busca información sobre grupos de música, tiendas de música online y además
combina resultados de Froogle, de Google Images y quizás de ma´s servicios. (# Fuente)
Google News es un portal de noticias agregadas por ordenadores de Google. Todo el proceso es
automático.
Google Notebook: Permite tomar y archivar notas al vuelo mientras se navega y si se desea
ofrece la posibilidad de compartir las notas con los demás. También incluye un buscador de
notas públicas (de otros usuarios). (Gracias Nuke)
Google Pack se trata de una recopilación de software para ordenadores con Windows XP y
navegador Mozilla Firefox.
Google Pages se trata de un servicio gratuito de Google para el alojamiento y la creación de
páginas web de una manera sencilla e intuitiva, también proprocionan un subdominio del
tipo: nombredecuenta.googlepages.com.(#Fuentes: 1 y 2, elucubraciones y teorías sobre
Google Pages).
Google Print o Google Book Search es un buscador de libros. Busca en libros (titulos y
contenido) que el propio Google ha digitalizado e incluido a su base de datos.
Google Reader es el agregador o lector de feeds de Google. (+ info)
Google Ridefinder permite localizar facilmente taxis en algunas de las mayores ciudades de
Estados Unidos.
Google Scholar busca información en documentación de tipo académico/científico.
Google Send to Phone es una pequeña extensión para Firefox la cual permite enviar SMS
(mensajes de texto) a teléfonos móviles.
Google Sitemap es un lugar en donde los webmasters pueden subir el "Sitemap" de su página
web. Google leerá esos Sitemaps y los utilizará para indexar más correctamente las webs.
Recientemente ha incluido nuevas funcionalidad de tracking relacionadas conAdSense.
Google SMS permite acceder a varios servicios del buscador a traves del movil.
Google Spreadsheets: Se trata de un gestor en linea de hojas de cálculo con las funcionalidades
básicas de cualquier Excel (Gracias por el aviso Nuke)
Google Suggest es una extensión al motor de búsqueda normal de Google. Se encarga de
sugerir búsquedas (ordenadas por cantidad de resultados) mientras se está escribiendo la
consulta.
Google Talk es el programa de mensajeria instantanea y voz sobre IP de Google, que funciona
bajo Jabber (protocolo abierto basado en XML). Es necesaria una cuenta deGmail para utilizarlo.
Google Toolbar es una barra de herramientas para navegadores web, la cual permite realizar
búsquedas con Google y acceder a sus servicios de una manera rápida, además de mostrar otra
información interesante como puede ser el PageRank.
Google Transit es un servicio que permite conocer el estado de las carreteras (en cuánto a
densidad de tráfico y retenciones se refiere) y realizar aproximaciones de como pudieran estar a
determinadas horas del día. De momento solo disponible en los Estados Unidos.
Google Trends se trata de una herramienta orientada a webmasters y profesionales creada para
realizar análisis cualitativos de las búsquedas, pudiendose consultar estos por ciudades,
regiones y por idioma. También permite comparar varios términos.
Google Video ofrece un archivo de videos de libre uso y Google Video Upload permite alojar en
Google los videos anteriormente citados.
Google Video Store es un servicio integrado dentro de Google Video que permite comprar
videos de series de televisión y otas temáticas. (# Más información sobre Google Video Store).
Google Web Accelerator supuestamente ayuda a cargar las páginas web más rápido. Se han
encontrado varios problemas de seguridad y privacidad en este programa.
Google Website Optimizer: Una herramienta para mejorar los ratios de conversiones de adwords
de nuestras páginas (más información en Online.com.es).
Google Web Search motor de búsqueda de Google.
Hello es un pequeño cliente de mensajeria instantanea el cual es utilizado junto conPicasa para
compartir imágenes con familiares y amigos.
Measure Map es un sistema de estadísticas para blogs, más optimizado para ellos queGoogle
Analytics, que es muy comercial. (# Fuente).
Orkut es una red social ala que solo se puede acceder mediante invitación o con una cuenta de
Google.
Picasa es un fantástio organizador de fotos digitales e imágenes para tú escritorio.
SketchUp se trata de un software para presentación de mapas y objetos 3D para darle un
empujón a Google Earth.(# Fuente) (Info. oficial de la adquisición) .
YouTube: Servicio mundialmente famoso para visualizar y compartir videos que Google
compraba a principios de octubre de 2006 por una cifra superior a los 1.500 millones de dólares.
Además se convierte en la primera adquisición del gigante que conserva su propia imagen e
identidad.
Writely es un potente y muy completo procesador de textos en linea (online), Google se hizo con
sus servicios el pasado 9 de Marzo. (Comunicado oficial de Google y de Writely)

Weitere ähnliche Inhalte

Was ist angesagt?

Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jqueryiva29234
 
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoAJAX a cuerda
Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda Lo básico sobre AJAX y su funcionamientoRoberto Allende
 
Clase 10 validacion
Clase 10   validacionClase 10   validacion
Clase 10 validacionhydras_cs
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-googleJosue Hernandez
 
Clase 13 seguridad
Clase 13   seguridad Clase 13   seguridad
Clase 13 seguridad hydras_cs
 
Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularioshydras_cs
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsHernan Rengifo
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspGabriela Vazquez
 
Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datosDavid
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móvilesChristian Cabrera
 

Was ist angesagt? (17)

Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jquery
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoAJAX a cuerda
Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Clase 10 validacion
Clase 10   validacionClase 10   validacion
Clase 10 validacion
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Clase 13 seguridad
Clase 13   seguridad Clase 13   seguridad
Clase 13 seguridad
 
Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularios
 
expo
expoexpo
expo
 
Java servlets
Java servletsJava servlets
Java servlets
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jsp
 
Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datos
 
Ajax
AjaxAjax
Ajax
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 

Andere mochten auch

Informaticaa
InformaticaaInformaticaa
InformaticaaCamila
 
Sociedades comerciales
Sociedades comerciales Sociedades comerciales
Sociedades comerciales rosa carolina
 
Redes sociales diapositivas!..
Redes sociales diapositivas!..Redes sociales diapositivas!..
Redes sociales diapositivas!..Michael
 
Psicocampo renacer
Psicocampo renacerPsicocampo renacer
Psicocampo renacerguestceb918
 
วิชาเคมี
วิชาเคมีวิชาเคมี
วิชาเคมีJ'Jaa Phoebe
 
Educacion en finlandia min
Educacion en finlandia minEducacion en finlandia min
Educacion en finlandia minmundoppt .
 
Feira de Artesanato de Oeiras
Feira de Artesanato de OeirasFeira de Artesanato de Oeiras
Feira de Artesanato de Oeirasin.oeiras
 
Mama notienenovio
Mama notienenovioMama notienenovio
Mama notienenovioguest0ffe19
 
Visionary Lighting & Energy - Member profile
Visionary Lighting & Energy - Member profileVisionary Lighting & Energy - Member profile
Visionary Lighting & Energy - Member profileCorinne Lutter
 
Desarrollo del bebe vidente y bebe ciego
Desarrollo del bebe vidente y bebe ciegoDesarrollo del bebe vidente y bebe ciego
Desarrollo del bebe vidente y bebe ciegoMarianela Siviglia
 
Andrés ciro martínez
Andrés ciro martínezAndrés ciro martínez
Andrés ciro martínezlalvaro
 
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...Allagi Open Innovation Services
 
Best Of CODEX - Pharma
Best Of CODEX - PharmaBest Of CODEX - Pharma
Best Of CODEX - PharmaPedro Nogueira
 
Seminario N°5 Funcion Respiratoria En El Ejercicio
Seminario  N°5 Funcion Respiratoria En El EjercicioSeminario  N°5 Funcion Respiratoria En El Ejercicio
Seminario N°5 Funcion Respiratoria En El EjercicioFrancisca Martinez
 
5 2 Como SãO Regulados Os Genes
5 2 Como SãO Regulados Os Genes5 2 Como SãO Regulados Os Genes
5 2 Como SãO Regulados Os GenesCidalia Aguiar
 
Presentacion callejas web 3.0
Presentacion callejas web 3.0Presentacion callejas web 3.0
Presentacion callejas web 3.0Eugecallejas
 
Gerencia de proyectos
Gerencia de proyectosGerencia de proyectos
Gerencia de proyectosjhonatan
 

Andere mochten auch (20)

Informaticaa
InformaticaaInformaticaa
Informaticaa
 
Sociedades comerciales
Sociedades comerciales Sociedades comerciales
Sociedades comerciales
 
Redes sociales diapositivas!..
Redes sociales diapositivas!..Redes sociales diapositivas!..
Redes sociales diapositivas!..
 
Psicocampo renacer
Psicocampo renacerPsicocampo renacer
Psicocampo renacer
 
วิชาเคมี
วิชาเคมีวิชาเคมี
วิชาเคมี
 
Educacion en finlandia min
Educacion en finlandia minEducacion en finlandia min
Educacion en finlandia min
 
Español
EspañolEspañol
Español
 
Feira de Artesanato de Oeiras
Feira de Artesanato de OeirasFeira de Artesanato de Oeiras
Feira de Artesanato de Oeiras
 
Mama notienenovio
Mama notienenovioMama notienenovio
Mama notienenovio
 
Visionary Lighting & Energy - Member profile
Visionary Lighting & Energy - Member profileVisionary Lighting & Energy - Member profile
Visionary Lighting & Energy - Member profile
 
Desarrollo del bebe vidente y bebe ciego
Desarrollo del bebe vidente y bebe ciegoDesarrollo del bebe vidente y bebe ciego
Desarrollo del bebe vidente y bebe ciego
 
Andrés ciro martínez
Andrés ciro martínezAndrés ciro martínez
Andrés ciro martínez
 
MediacióN Escolar
MediacióN EscolarMediacióN Escolar
MediacióN Escolar
 
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...
Apresentação José Martins | OIS 2011 | Painel: Construindo redes de inovação ...
 
Best Of CODEX - Pharma
Best Of CODEX - PharmaBest Of CODEX - Pharma
Best Of CODEX - Pharma
 
Seminario N°5 Funcion Respiratoria En El Ejercicio
Seminario  N°5 Funcion Respiratoria En El EjercicioSeminario  N°5 Funcion Respiratoria En El Ejercicio
Seminario N°5 Funcion Respiratoria En El Ejercicio
 
5 2 Como SãO Regulados Os Genes
5 2 Como SãO Regulados Os Genes5 2 Como SãO Regulados Os Genes
5 2 Como SãO Regulados Os Genes
 
Presentacion callejas web 3.0
Presentacion callejas web 3.0Presentacion callejas web 3.0
Presentacion callejas web 3.0
 
Gerencia de proyectos
Gerencia de proyectosGerencia de proyectos
Gerencia de proyectos
 
Usabilidad
UsabilidadUsabilidad
Usabilidad
 

Ähnlich wie Servicios web (20)

Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servlets
 
Web Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAPWeb Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAP
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
cursoTutorialBPEL.pdf
cursoTutorialBPEL.pdfcursoTutorialBPEL.pdf
cursoTutorialBPEL.pdf
 
Asp
AspAsp
Asp
 

Kürzlich hochgeladen

CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 
BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................ScarletMedina4
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD EDUCATIVO.pdfdeBelnRosales2
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entornoday561sol
 
Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Gonella
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaMarco Camacho
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 

Kürzlich hochgeladen (20)

CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 
¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx
 
BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................BOCA Y NARIZ (2).pdf....................
BOCA Y NARIZ (2).pdf....................
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
 
Acuerdo segundo periodo - Grado Sexto.pptx
Acuerdo segundo periodo - Grado Sexto.pptxAcuerdo segundo periodo - Grado Sexto.pptx
Acuerdo segundo periodo - Grado Sexto.pptx
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entorno
 
Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1Apunte de clase Pisos y Revestimientos 1
Apunte de clase Pisos y Revestimientos 1
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria Farmaceutica
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 

Servicios web

  • 1. 2013 SERVICIOS WEB JAVA-PERL-PHP-GOOGLE ALAN FLORES GASPAR [ E S C R I B I R L A D I R E C C I Ó N D E L A C O M P A Ñ Í A ]
  • 2. Servicios Web con Java SE: El Cliente Creando un Cliente muy simple para un Servicio Web muy simple Ahora crearemos —en un directorio/proyecto distinto— el cliente para nuestro Servicio Web el cual debe estar publicado y en ejecución. Pero primero necesitamos generar los artefactos cliente. Para ello utilizaremos la herramienta wsimport incluida en Java SE 6.0, a la cual le pasamos como argumento la ubicación del contrato del servicio, es decir el documento WSDL: >wsimport http://localhost:8080/hello?wsdl Esto generará las clases que encapsulan las operaciones para la invocación de los métodos del Servicio Web. En nuestro caso se generarán seis clases dentro del paquete ‘hello’, entre ellas estan las clases hello.HelloService y hello.Hello que utilizaremos directamente en nuestro cliente. Una vez generados los artefactos cliente solo resta crear el cliente en sí, nuevamente una simple aplicación de consola: Listado de Client.java public class Client { public static void main(String[] args) { String arg = null; String result = null; if (args.length > 0) { arg = args[0]; } else { arg = "Anonimo"; } try { hello.HelloService service = new hello.HelloService(); hello.Hello port = service.getHelloPort(); result = port.sayHello(arg); } catch (Exception ex) { result = ex.toString(); } finally{ System.out.println(result); } } } Nótese que para invocar la operación de nuestro Servicio Web primero creamos el localizador del servicio (con HelloService) y mediante éste obtenemos un puerto (de tipo Hello) por medio del cual después invocamos al método sayHello —tras del cual se invoca la operación del Servicio Web el cual a su vez invoca el método de la clase Hello implementada al inicio del artículo… Solo resta compilar y ejecutar nuestro cliente con algún argumento, su nombre por ejemplo, si no se especifica un argumento la salida será “Hola Anónimo”: >javac Client.java >java Client Yo Hola Yo.
  • 3. La misma salida se desplegará en la consola del servicio. Con todo lo que hemos realizado vemos lo fácil que es crear y publicar un Servicio Web así como su cliente con los paquetes y herramientas de JAX-WS incluidos en Java SE 6.0. Y aunque para un despliegue en producción no podremos prescindir de los contenedores Java EE (Tomcat, Glassfish, JBoss etc…) para los fines de desarrollo de prototipos o durante las primeras fases —así como en proyectos escolares— es suficiente con lo incluido en Java SE 6.0. No obstante todo esto tan sólo fue el inicio, la finalidad fue dar una introducción al desarrollo de Servicios Web utilizando JAX-WS esperando motive a continuar para “abordar el Metro”. Quedan entonces muchas cosas por tratar, como la automatización de las tareas que realizamos, crear un servicio y cliente a partir de un WSDL, el despliegue en contenedores Java EE, utilizar contratos de datos y JAXB, utilización de JAXP, StAX y SAAJ, sobre interoperabilidad y WS-* con WSIT, etc… Ya ni se diga de explorar otras opciones para el desarrollo de WS en Java como Axis con XMLBeans, AXIOM, etc… Servicios Web con Java SE: El Servicio Creando un Servicio Web muy simple Para ilustrar la creación de Servicio Web con JAX-WS 2.0 emplearemos el clásico ejemplo de Hola Mundo (posteriormente abordaremos otros ejemplos) el cual luce así: Listado de Hello.java package hello; import javax.jws.WebService; @WebService public class Hello { private String message = new String(”Hola “); public String sayHello(String name) { String msg = message + name + “.”; System.out.println(msg); return msg; } } Nótese que luce como una clase Java normal pero con un par de adiciones: En primer lugar importamos javax.jws.WebService, lo cual es necesario para marcar la clase Hello con la anotación @WebService. Con esto habilitamos la clase para que pueda ser publicada como un Servicio Web, en éste caso con solo una operación, la del método sayHello.
  • 4. El siguiente paso es generar los artefactos de despliegue para dicha clase, para ello utilizamos la herramientawsgen, incluida en Java SE 6.0, a la cual le pasamos como argumento la clase hello.Hello compilada: >javac hello/Hello.java >wsgen -cp . hello.Hello Con todo lo anterior ya tenemos un sencillo Servicio Web casi listo para ser desplegado en algún contenedor Java EE, no obstante podemos probarlo sin un contenedor si creamos un Endpoint dentro de una aplicación que actuará como host del servicio web, tal como se ilustra en el siguiente código: Listado de SimpleHelloWS.java import javax.xml.ws.Endpoint; import hello.Hello; public class SimpleHelloWS { public static void main(String[] args) { String endpointAddress = “http://localhost:8080/hello”; Endpoint.publish(endpointAddress, new hello.Hello()); System.out.println(”El Servicio Web Hello se esta ejecutando…”); System.out.println(”WSDL: ” + endpointAddress + “?wsdl”); } } Nótese que se trata de una simple aplicación de consola que utiliza el método publish de la clase javax.xml.ws.Endpoint para crear y publicar un Endpoint para una instancia de la clase hello.Hello en la dirección http://localhost:8080/SimpleHelloWS/hello. Esto último gracias a que la clase Endpoint utiliza el servidor web “liviano” de Sun que está incluido en Java SE dentro del paquete com.sun.net.httpserver. Tras compilar y ejecutar la aplicación se mostraran dos líneas indicando que el servicio se está ejecutando y que la ubicación del “contrato del servicio”, es decir el documento WSDL del mismo, para cualquier cliente que desee acceder al mismo. >javac SimpleHelloWS.java >java SimpleHelloWS El Servicio Web Hello se esta ejecutando... WSDL: http://localhost:8080/hello?wsdl
  • 5. Servicio Web en PHP Cliente La creación de un cliente de un servicio web con PHP es relativamente sencilla haciendo uso de PHP- SOAP. Con la descripción del servicio al que queremos acceder (fichero wsdl), obtendremos acceso a todos los métodos que ofrece el servicio web. A continuación mostramos un ejemplo donde se verá más claramente lo expuesto. Concretamente en el ejemplo llamamos a un WS que, dada una cadena, devuelve la cadena al revés. $objClienteWS = new SoapClient('Ws_Ejemplo.wsdl'); $resultado = $objClienteWS->ejemplo('Hola'); print_r($resultado); De la ejecución de este cliente obtenemos el siguiente resultado: aloH Servidor La creación del servidor requiere, evidentemente, algo más de trabajo que la del cliente. En este punto haremos un pequeño resumen de los pasos a seguir. Primero tenemos que crear un fichero php (en nuestro ejemplo server.php) que contendrá las llamadas a las clases SOAP correspondientes al servidor. En este mismo fichero se puede incluir la definición de la clase que implementará todos los métodos exportados. Siguiendo con nuestro ejemplo, tenemos que tener un método que nos devuelva la inversa de una cadena. El contenido del fichero es: require_once 'SOAP/Server.php'; class Prueba_Server { function ejemplo($cadena){ return strrev($cadena); } } $server = new SOAP_Server; $server->_auto_translation = true; $soapclass = new Prueba_Server(); $server->addObjectMap($soapclass,'urn:Prueba_Server'); $server->service($HTTP_RAW_POST_DATA); Para que el cliente tenga acceso a la información que ofrece el WS, necesita de la definición de los métodos exportados por la clase. Esto se obtiene a partir del fichero WSDL. El fichero de nuestro ejemplo es el siguiente: <?xml version="1.0"?> <definitions name="ServerExample" targetNamespace="urn:ServerExample" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:ServerExample"
  • 6. xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types xmlns="http://schemas.xmlsoap.org/wsdl/"></types> <message name="ejemploRequest"> <part name="cadena" type="xsd:string" /> </message> <message name="ejemploResponse"> <part name="cadena" type="xsd:string" /> </message> <portType name="ServerExamplePort"> <operation name="ejemplo"> <input message="tns:ejemploRequest" /> <output message="tns:ejemploResponse" /> </operation> </portType> <binding name="ServerExampleBinding" type="tns:ServerExamplePort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="ejemplo"> <soap:operation soapAction="urn:Prueba_Server#prueba_server#ejemplo" /> <input> <soap:body use="encoded" namespace="urn:Prueba_Server" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> <soap:body use="encoded" namespace="urn:Prueba_Server" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> <service name="ServerExampleService"> <documentation /> <port name="ServerExamplePort" binding="tns:ServerExampleBinding"> <soap:address location="http://mi- servidor.es/cin/ws/server/server.php" /> </port> </service> </definitions> Con esto nuestro Web Service ya esta funcionando. Simplemente tenemos que llamarlo desde el cliente. Generación del WSDL Uno de los puntos más costosos de la creación de un WS en PHP es la generación del WSDL. Hay una serie de herramientas que te permiten su generación siempre y cuando rellenes ciertos parámetros. El propio PEAR::SOAP te facilita un proceso para hacerlo, y es el que vamos a intentar explicar a continuación. La idea consiste en crear un constructor para nuestra clase y, en él, sobrescribir una serie de arrays donde aportaremos la información de los métodos que exporta una clase. Concretamente se trata de la estructura $this->__dispatch_map que tendrá una entrada por cada uno de los métodos soportados. Después, tras las llamadas que realizamos al SOAP_Server tenemos que utilizar una clase de SOAP que nos generará el WSDL.
  • 7. El código para nuestro ejemplo es el siguiente: require_once 'SOAP/Server.php'; class Prueba_Server { function Prueba_Server(){ $this->__dispatch_map['ejemplo'] = array( 'in' => array('cadena' => 'string', ), 'out' => array('cadena' => 'string'), ); } function ejemplo($cadena){ return strrev($cadena); } } $server = new SOAP_Server; $server->_auto_translation = true; $soapclass = new Prueba_Server(); $server->addObjectMap($soapclass,'urn:Prueba_Server'); if(isset($_REQUEST['wsdl'])){ require_once 'SOAP/Disco.php'; $disco = new SOAP_DISCO_Server($server,'ServerExample'); header("Content-type: text/xml"); echo $disco->getWSDL(); return; } $server->service($HTTP_RAW_POST_DATA); Con este código, al interrogar al server.php directamente, obtendremos un xml que contiene la definición del WS. Este contenido se almacena en un fichero WSDL y, de ese modo, los clientes podrán acceder al servicio. Web Services en gvHidra Ya hemos visto como se implementan los WS en PHP. Para aplicaciones con gvHidra, se han implementado algunas clases que ayudan a la creación tanto del servidor como del cliente en una aplicación. De momento se utiliza un procedimiento muy básico para controlar la seguridad. Cliente La creación del cliente se realiza mediante la clase IgepWS_Client. A continuación mostramos el código: $objCIN = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl'); $credencial = IgepWS_Client::getCredential('WSCIN'); $objCIN->getImporte($credencial,.... El parámetro credencial contiene los parámetros de validación válidos para ese cliente WS. Este parámetro se obtiene consultando los DSNs de la aplicación. La estructura de la credencial seria la siguiente: $credencial = array(
  • 8. 'login'=>'XXXXX', 'password'=>'XXXXX' ); Esta clase usa SoapClient, y si necesitamos pasarle otras opciones podemos hacerlo con el parámetro opcional. En el ejemplo siguiente se modifican las opciones para poder depurar la comunicación con el servidor. En laweb de PHP se pueden ver otras opciones posibles. $obj = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl', array("exceptions" => 0, 'trace'=>1, )); print "<pre>n"; print "Request : n". htmlspecialchars($obj->__getLastRequest()) ."n"; print "RequestHeaders :n". $obj->__getLastRequestHeaders() ."n"; print "Response: n". htmlspecialchars($obj->__getLastResponse()) ."n"; print "ResponseHeaders:n". $obj->__getLastResponseHeaders() ."n"; print "Functions: n". var_export($obj->__getFunctions(),true) ."n"; print "Types: n". var_export($obj->__getTypes(),true) ."n"; print "</pre>"; Para depuración, también puede ser útil inhabilitar la cache del cliente, ya que así podemos ir modificando el wsdl: IgepWS_Client::disableCache(); Si el cliente usa una codificación distinta a UTF-8 (como ocurre con gvHIDRA que usa latin1), conviene indicarlo en las opciones de conexión y así no hay que hacer conversiones explicitas, sino que PHP convierte los parámetros de entrada desde la codificación origen a UTF-8, y el resultado lo convierte de UTF-8 a la codificación indicada. Ejemplo: $obj = IgepWS_Client::getClient('actions/ws/WSCIN.wsdl', array("exceptions" => 0, 'trace'=>1, 'encoding'=>'latin1', )); ... print "Response:n".htmlspecialchars(utf8_decode($obj- >__getLastResponse()))."n"; ... Servidor En el caso del servidor, los beneficios son mayores. Tenemos dos clases, una clase estática que genera el código básico del Servidor y otra que proporciona un comportamiento al servidor propio de una aplicación gvHidra. La primera de ellas es la clase estática IgepWS_ServerBase. Esta clase simplifica la creación y el registro de un servidor SOAP de WS. Concretamente, en nuestro fichero de lanzamiento del servidor (típicamente server.php), que tiene que estar en el raiz de la aplicación, tendríamos el siguiente código: require_once "igep/include/igep_ws/IgepWS_ServerBase.php"; require_once 'ws/server/WSCIN.php'; IgepWS_ServerBase::registrar('WSCIN');
  • 9. Por otro lado, tenemos que crear la clase que controla el Servidor (en nuestro ejemplo WSCIN). Esta clase, al heredar de IgepWS_Server tiene el mecanismo de validación ya implementado y el sistema de conexión propio de gvHidra. La única premisa que se exige es que, si se requiere validación, el método implementado por el programador debe incluir un parámetro $credencial que se pasará al método checkCredential para validar su contenido. A continuación mostramos un ejemplo: include_once "igep/include/igep_ws/IgepWS_Server.php"; class WSCIN extends IgepWS_Server{ function __construct(){ $msgs = array( '1'=>'Error de conexión. Avise al Servicio de Informática', '2'=>'Error en operación. Avise al Servicio de Informática', ); parent::IgepWS_Server('WSCIN', $smsgs); ... } function getImporte($credencial,$anyox, $dgralx, $numx, $tipo_expx, $numtipo_expx){ if(!$this->checkCredential($credencial)) return $this->getAuthError(); $dsn = ConfigFramework::getConfig()->getDSN('dsn_cin'); $db = $this->conectar($dsn); if (!$db) return $this->gvhFault('1', '...mensaje opcional, enviado al log...'); ... return array('implic' => floatval($res[0]['implic']), 'impadj' => floatval($res[0]['impadj'])); } ... } Si nuestro servidor acepta varias credenciales, podemos pasarle un vector al constructor del padre: parent::IgepWS_Server(array('WSCIN','WSMCMENOR',)); En las credenciales de los servidores de web services, la contraseña hay que almacenarla con hash. Para ello usar el formulario en igep/include/igep_utils/protectdata.php para obtener los hash de las contraseñas, y guardar estas últimas en un lugar seguro, fuera de la aplicación. El parámetro con los mensajes de error se utiliza si provocamos los errores (Soap_Fault) con el método gvhFault, que hace las conversiones necesarias en la codificación y tiene un parámetro opcional usado para que nos informe del error en el log. Si queremos restringir algún método a algunas credenciales, podemos hacerlo con método checkCredential pasándole la lista de credenciales: if (!$this->checkCredential($credencial, array('WSMCMENOR',))) return $this->getAuthError(); También hay que tener precaución cuando hacemos consultas sobre base de datos, que si utilizamos campos calculados o agregados (count, min, ...), el resultado será de tipo string. Si queremos obtener otro tipo tendremos que modificarlo usando la función floatval para tipo float, intval para tipo int, ...
  • 10. También es importante tener en cuenta la codificación, sobretodo cuando nuestro WS recibe o devuelve campos string que puedan tener carácteres especiales. Cuestiones: la codificación usada en los WS es UTF-8, luego habrá que hacer las transformaciones necesarias desde/hacia LATIN-1 (la codificación usada en gvHIDRA) si queremos retornar una cadena obtenida de la BD o de una constante en un fichero fuente de PHP, tenemos que transformarla a utf-8 con utf8_encode($cadena) si recibimos un parámetro texto vendrá en utf-8, luego también habrá que transformarlo (utf8_decode) a latin-1 para operar con él (concatenar con otras cadenas, almacenar en BD, ...) en caso de problemas también podemos hacer las transformaciones con iconv.
  • 11. Servicios Web con PERL (Código del servidor) #!/usr/bin/perl use SOAP::Lite; use SOAP::Transport::HTTP; use DBI; my $soapServer = SOAP::Transport::HTTP::Daemon -> new(LocalAddr => '172.18.61.103', LocalPort => 8082) -> dispatch_to(qw(getRegistro)) -> handle; sub getRegistro { my ($class, $inputString) = @_; die "no hay datos de entradan" if !$inputString; my $dbh = DBI->connect("DBI:mysql:test","root","") die "nError al abrir la base datos: $DBI::errstrn"; $query = "select nombre, puesto, domicilio, telefono, extencion from directorio where nombre like '%". $inputString. "%'"; my $sth = $dbh->prepare($query); $sth->execute(); $Registro = "<?xml version="1.0" encoding="UTF-8" ?> n" ; $Registro = $Registro."<Resultados>n" ; while ( @tupla=$sth->fetchrow_array()) { $Registro = $Registro."<Registro>n"; $Registro = $Registro."<Nombre>$tupla[0]</Nombre>n"; $Registro = $Registro."<Cargo>$tupla[1]</Cargo>n"; $Registro = $Registro."<Domicilio>$tupla[2]</Domicilio>n"; $Registro = $Registro."<Telefono>$tupla[3]</Telefono>n"; $Registro = $Registro."<Extencion>$tupla[4]</Extencion>n"; $Registro = $Registro."</Registro>n"
  • 12. } $Registro = $Registro."</Resultados>"." n"; $sth->finish(); return SOAP::Data->name("return")->type("string")- >value($Registro); } Servicios Web con PERL (Código del cliente) #!/usr/bin/perl use SOAP::Lite; print "n Filtro n "; $inputString=<STDIN>; chop $inputString; $inputSoapParam = SOAP::Data ->name("inputString") ->type("string") ->value($inputString); $response=SOAP::Lite -> proxy('http://172.18.61.103:8080/') -> getRegistro($inputSoapParam); if($response->fault) { print "SOAP Fault received. nn"; print "Fault Code : " . $response->faultcode . "n"; print "Fault String : " . $response->faultstring . "n"; print "Fault Detail : " . $response->faultdetail . "n"; print "Fault Actor : " . $response->faultactor . "n"; die; } print $response->result ."n"
  • 13. Lista de servicios de Google: Añadir a Google Reader permite la creación de un botón gráfico con la dirección del RSS de tú blog para que al clickarlo este sea añadido a Google Reader. Blogger es un servicio muy popular y gratuito de creación y publicación de blogs. Froogle es un buscador de productos. Utilizado para buscar el precio más barato de un producto y la comparativa de estos en diferentes tiendas online. GMail es el servicio de correo electrónico de google, actualmente proporciona más de 2GB de capacidad de almacenamiento. Google AdSense es el servicio de publicidad contextual de Google. Google AdWords es la otra parte de AdSense. Mientras AdSense permite a los webmasters poner los anuncios en sus web, Adwords permite la publicación de estos en la red de AdSense. Además el pasado 21 de noviembre Google liberó el "Onsite Advertiser Sign-Up" que permite a un anunciante publicar sus anuncios en sitios específicos de la red AdSense. Google Alerts te permite ser avisado por correo electrónico acerca de búsquedas y/o textos particulares. Google Analytics analiza las páginas web, a través de un código javascript, guardando todo tipo de estadísticas de los visitantes. Permite la integración con una cuenta deAdWords. Google Answers responde a tus preguntas. Google Base Libreria de contenidos, portal de anuncios clasificados o servicio inclasificable que permite añadir cualquier tipo de contenido a su base de datos. Google Blog Search motor de búsqueda orientado a la búsqueda en blogs/bitácoras excluyendo el resto de páginas web. Google Bookmarks es un servicio que permite a los usuarios guardar marcadores o favoritos con el título y las etiquetas deseadas, es decir, un del.icio.us "made in" google, pero bastante más cutre. Es necesaria una cuenta de Gmail para acceder. (+ info) Google Browser Sync: Se trata de una plugin para el navegador Firefox con el que podrás sincronizar allá donde lo utilices tus ajustes incluyendo tus favoritos, tu historial, las cookies y las contraseñas que tengas almacenadas. Google Catalogs busca en catálogos. Google Checkout: Sistema de pago por internet homólogo a Paypal. Proporcionas los datos de tu tarjeta al sistema y puedes pagar utilizando tu correo electrónico (en los sitios que acepten pagos a través de Google Checkout, claro). Google Co-op permite a los usuarios suscribirse y catalogar contenidos procendentes de sitios como CNNMoney.con (economía), Fandango.com (espectáculos) o People.com (prensa rosa) para luego utilizar esos metadatos para mejorar la experiencia de búsqueda de los usuarios. Google Code servicio de Google orientado a la promoción y contribución del software de código abierto (Open Source).
  • 14. Google Code Search: Es un buscador de código fuente que permite utilizar comandos de búsqueda especiales. Google Compute existe como parte de la Barra de herramientas de Google (Google Toolbar) y se encarga de utilizar el ‘idle time’ de tú ordenador (es decir, cuando no estás haciendo nada) para computar información desde proyectos distribuidos comoFolding@Home. Google Deskbar se trata de un ventana embedida de IE en tú barra de tareas de Windows, la cual te permite realizar búsquedas a traves de Google. Google Desktop Un servicio que ofrece varios widgets(?) y una barra lateral la cual te permite realizar búsquedas, sindicar contenidos, escribir notas, consultar información metereológica y más. Google Directory es un clon del directorio ODP pero llenito de AdSense. Google Docs & Spreadsheets: Lugar desde el que podrás utilizar el procesador de textos (docs) y la hoja de cálculo (spreadsheets) de Google, crear y gestionar documentos colaborativos y tener todo organizado (Descripción y más info enGenbeta). Google Earth permite visualizar imágenes de satélite de cualquier rincón del mundo. Google Finance: Información bursatil: bolsa, cotizaciones, acciones, con gráficos e información adicional relacionada. Una copia del servicio Yahoo! Finances con alguna mejora. (+ sobre Google Finance). Google Groups te permite crear listas de correo, interactuar en ellas y leer los mensajes de Usenet. Google Homepage te permite personalizar Google a tú gusto. Permite añadir widgets al usuario como información meteorológica, noticias, horóscopos y más. Google Hosted: Permite utilizar diferentes servicios como Gmail, Google Talk, Google Calendar y Google Page Creator sobre un nombre de dominio que le asociemos. Google Image Search es el buscador de imágenes de Google. Google Labs nos muestra los projectos en los cuales Google está trabajando para una futura liberalización de los mismos. Google Local Muestra información local basándose en datos procedentes de Google Maps. Google Maps es un servicio de mapeo el cual integra rutas de conducción y localización con mapas de ciudades. Dispone de un API bastante elaborado con el que se pueden realizar aplicaciones independientes que utilicen Google Maps. Google Mars incluye un conjunto de mapas e imágenes de la superficie de Marte. Google Moon similar al anterior, en este caso muestra planos e imágenes de la superficie lunar, asi como información sobre alunizajes que se han producido. Google Mobile permite el acceso al buscador Google a través de un movil WAP. Google Movie Showtimes permite introducir un código postal o una dirección que servirá para localizar cines y espectáculos cercanos a la zona mediante Google Maps. (De momento solo disponible en los EE.UU.).
  • 15. Google Música busca información sobre grupos de música, tiendas de música online y además combina resultados de Froogle, de Google Images y quizás de ma´s servicios. (# Fuente) Google News es un portal de noticias agregadas por ordenadores de Google. Todo el proceso es automático. Google Notebook: Permite tomar y archivar notas al vuelo mientras se navega y si se desea ofrece la posibilidad de compartir las notas con los demás. También incluye un buscador de notas públicas (de otros usuarios). (Gracias Nuke) Google Pack se trata de una recopilación de software para ordenadores con Windows XP y navegador Mozilla Firefox. Google Pages se trata de un servicio gratuito de Google para el alojamiento y la creación de páginas web de una manera sencilla e intuitiva, también proprocionan un subdominio del tipo: nombredecuenta.googlepages.com.(#Fuentes: 1 y 2, elucubraciones y teorías sobre Google Pages). Google Print o Google Book Search es un buscador de libros. Busca en libros (titulos y contenido) que el propio Google ha digitalizado e incluido a su base de datos. Google Reader es el agregador o lector de feeds de Google. (+ info) Google Ridefinder permite localizar facilmente taxis en algunas de las mayores ciudades de Estados Unidos. Google Scholar busca información en documentación de tipo académico/científico. Google Send to Phone es una pequeña extensión para Firefox la cual permite enviar SMS (mensajes de texto) a teléfonos móviles. Google Sitemap es un lugar en donde los webmasters pueden subir el "Sitemap" de su página web. Google leerá esos Sitemaps y los utilizará para indexar más correctamente las webs. Recientemente ha incluido nuevas funcionalidad de tracking relacionadas conAdSense. Google SMS permite acceder a varios servicios del buscador a traves del movil. Google Spreadsheets: Se trata de un gestor en linea de hojas de cálculo con las funcionalidades básicas de cualquier Excel (Gracias por el aviso Nuke) Google Suggest es una extensión al motor de búsqueda normal de Google. Se encarga de sugerir búsquedas (ordenadas por cantidad de resultados) mientras se está escribiendo la consulta. Google Talk es el programa de mensajeria instantanea y voz sobre IP de Google, que funciona bajo Jabber (protocolo abierto basado en XML). Es necesaria una cuenta deGmail para utilizarlo. Google Toolbar es una barra de herramientas para navegadores web, la cual permite realizar búsquedas con Google y acceder a sus servicios de una manera rápida, además de mostrar otra información interesante como puede ser el PageRank. Google Transit es un servicio que permite conocer el estado de las carreteras (en cuánto a densidad de tráfico y retenciones se refiere) y realizar aproximaciones de como pudieran estar a determinadas horas del día. De momento solo disponible en los Estados Unidos.
  • 16. Google Trends se trata de una herramienta orientada a webmasters y profesionales creada para realizar análisis cualitativos de las búsquedas, pudiendose consultar estos por ciudades, regiones y por idioma. También permite comparar varios términos. Google Video ofrece un archivo de videos de libre uso y Google Video Upload permite alojar en Google los videos anteriormente citados. Google Video Store es un servicio integrado dentro de Google Video que permite comprar videos de series de televisión y otas temáticas. (# Más información sobre Google Video Store). Google Web Accelerator supuestamente ayuda a cargar las páginas web más rápido. Se han encontrado varios problemas de seguridad y privacidad en este programa. Google Website Optimizer: Una herramienta para mejorar los ratios de conversiones de adwords de nuestras páginas (más información en Online.com.es). Google Web Search motor de búsqueda de Google. Hello es un pequeño cliente de mensajeria instantanea el cual es utilizado junto conPicasa para compartir imágenes con familiares y amigos. Measure Map es un sistema de estadísticas para blogs, más optimizado para ellos queGoogle Analytics, que es muy comercial. (# Fuente). Orkut es una red social ala que solo se puede acceder mediante invitación o con una cuenta de Google. Picasa es un fantástio organizador de fotos digitales e imágenes para tú escritorio. SketchUp se trata de un software para presentación de mapas y objetos 3D para darle un empujón a Google Earth.(# Fuente) (Info. oficial de la adquisición) . YouTube: Servicio mundialmente famoso para visualizar y compartir videos que Google compraba a principios de octubre de 2006 por una cifra superior a los 1.500 millones de dólares. Además se convierte en la primera adquisición del gigante que conserva su propia imagen e identidad. Writely es un potente y muy completo procesador de textos en linea (online), Google se hizo con sus servicios el pasado 9 de Marzo. (Comunicado oficial de Google y de Writely)