licenciatura en ciencias de la computación

99
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service Universidad Dr. José Matías Delgado Facultad de Economía Dr. Santiago I. Barberena “Desarrollo de un Alimentador RSS en PHP Utilizando WEB Services” Para optar al grado de: Licenciatura en Ciencias de la Computación Presentado por: ALLAN RANDOLFO TEJADA RAMIREZ EDUARDO FABIO MEJIA FIGUEROA OKRAN ALEXANDER COCAR PIMENTEL Antiguo Cuscatlán, 23 de Abril de 2008

Upload: others

Post on 06-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Universidad Dr. José Matías Delgado Facultad de Economía

Dr. Santiago I. Barberena

“Desarrollo de un Alimentador RSS en PHP Utilizando WEB Services”

Para optar al grado de:

Licenciatura en Ciencias de la Computación

Presentado por: ALLAN RANDOLFO TEJADA RAMIREZ

EDUARDO FABIO MEJIA FIGUEROA OKRAN ALEXANDER COCAR PIMENTEL

Antiguo Cuscatlán, 23 de Abril de 2008

Page 2: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Agradecimientos

Quiero dar gracias a Diosito por brindarme la fortaleza en los momentos oportunos, para no dejarme caer y darme la sabiduría para salir adelante. A mis Angelitos en el CIELO: Papi, Mama Juanita, Machila, Chulita, por escuchar mis peticiones, mis tristezas y alegrías y no abandonarnos ni a mí ni a mi familia. A mi hermana Johanna que en los momentos que mas la he necesitado, me ha dado su mano de forma incondicional y enseñado como desenvolverme en todos los aspectos de la vida. A mis razones de vivir: Mother, Rodrigo Andrés. Juanita, Summer y Shadow, a los que todos los días veo y siempre están con una sonrisa y listos para ayudarme. A mi Drink Happy Tree Team Friends Javieritu, Serginho, Lulo, Jarocho, Mario Baracus, Verónica, Rocío, Flower, Ganesha, Rene, Franklin, Mónica y Ale. Me han brindado su apoyo espiritual, Profesional, Económico, Etc. Nunca me han abandonado y su presencia me hace ver lo hermoso de la vida. A mis tios, sobrinos(a), primos. maternales y paternales que siempre estuvieron pendientes de mi y por sus oraciones Y por ultimo pero no menos importante a todos los lectores de esta tesis, por tomarla en cuenta y ser parte de alguna forma de enriquecimiento de sabiduría, para guiarlos en el desarrollo de nuevos estudios relacionados a nuestra investigación plasmada en este documento. Gracias a todos y que Dios los bendiga

Lic. Allan Randolfo Tejada Ramírez

Page 3: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

INDICE

1. ASPECTOS GENERALES .............................................................................8

1.1 ANTECEDENTES...........................................................................................8 1.1.1. Servicios WEB.........................................................................................8 1.1.2. Servicios Web con PHP ..........................................................................8 1.1.3. Archivo RSS............................................................................................9

1.2 OBJETIVOS DEL TRABAJO .......................................................................10

1.3 JUSTIFICACIÓN E IMPORTANCIA............................................................11

1.4 ALCANCES Y LIMITACIONES ....................................................................12

1.5 METODOLOGIA DEL PROYECTO..............................................................12 1.5.1. MÉTODOS, TÉCNICAS E INSTRUMENTOS. ......................................12

1.5.1.1. MÉTODOS. .................................................................................12 1.5.1.2. TÉCNICAS. .................................................................................13 1.5.1.3. TIPO DE ESTUDIO. ....................................................................14 1.5.1.4. FORMA DE USO.........................................................................15

2. ANTECEDENTES..........................................................................................28

2.1 RSS (Really Simple Syndication)...............................................................28

2.2 - ALIMENTADOR RSS (Really Simple Syndication) .................................29

2.3 – LECTOR O AGREGADOR RSS (Really Simple Syndication)................30

2.4 - XML ( Extensible Markup Language ) .....................................................30

2.5- SOAP...........................................................................................................33

2.6 - WEB SERVICES DESCRIPTION LANGUAGE (WSDL)............................37

2.7 - UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 38

2.8 - NUSOAP ....................................................................................................39

2.9. NuSOAP como soporte para Web Services en PHP ...............................39

3.0 SITUACION ACTUAL...................................................................................41

3.1 XML-RPC.................................................................................................42

1

Page 4: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

3.2 SOAP.......................................................................................................43

4.1 DESCRIPCIÓN GENERAL...........................................................................55

4.2 DELIMITACION DE CONTENIDO...............................................................56

4.3 DELIMITACION DE TIEMPO. ......................................................................56

4.4. PLATAFORMAS DE DESARROLLO Y HERRAMIENTAS PARA EL ANÁLISIS Y DISEÑO DE SISTEMAS................................................................57

4.4.1. PLATAFORMAS DE DESARROLLO ....................................................57 4.4.2. HERRAMIENTAS PARA EL ANÁLISIS Y DISEÑO DE SISTEMAS.....57 4.4.3. HERRAMIENTA PARA EL ANÁLISIS ...................................................58 4.4.4. HERRAMIENTAS PARA DISEÑO.........................................................59 4.4.5. HERRAMIENTAS DE DESARROLLO..................................................59

4.5 NOMENCLATURA Y ESTANDARES .........................................................60 4.5.1. DEFINICIÓN DE TÉRMINOS BÁSICOS..............................................60

4.6 ANALISIS DEL SISTEMA ............................................................................69

4.7 DISEÑO DEL SISTEMA ...............................................................................70

5.1 CONCLUSIONES .........................................................................................73

5.2 RECOMENDACIONES.................................................................................74 BIBLIOGRAFIA …………………………………………………………………… ....73 ANEXOS……………………………………………………………………………… 75

2

Page 5: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

DESCRIPCIÓN CAPITULAR. CAPÍTULO I.

El primer capítulo abordará varios tópicos, iniciando con una descripción que

significa el tema.

Asimismo, se mencionan datos históricos de la evolución de la Web, la

tecnología en el Internet y su constante evolución, así como a los usuarios que

buscan nuevas alternativas para poder acceder a sus Sitios favoritos.

CAPÍTULO II.

Contiene la información teórica conceptual de referencia que apoya el desarrollo

de la plataforma así como sus procedimientos.

Además hay una recopilación de tópicos relacionados con los componentes que

integran la Web, como lo es el Internet y la World Wide Web.

CAPÍTULO III.

En este capítulo se presentan las generalidades de los alimentadores RSS y la

manera en que se maneja la información, explica como se realizan los procesos

para la generación de los archivos RSS.

CAPÍTULO IV.

Se presentaran algunas conclusiones y recomendaciones obtenidas del análisis

de toda la investigación y desarrollo de la aplicación o plataforma. Además de un

análisis general de la situación encontrada

3

Page 6: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPÍTULO V.

En este capítulo se presenta la propuesta de solución que contiene los

requerimientos de hardware y software, también los requisitos generales de

seguridad del sistema. El análisis del sistema, que incluye diferentes tipos de

diagramas como lo son el Diagrama de Entidad Relación y el Diagrama de Flujo

de Datos y su respectivo Diccionario de Datos.

En el área del diseño del sistema se presenta el diagrama físico de la Base de

Datos, la descripción de tablas y campos, las pantallas de entradas y salidas, el

detalle de los procesos, entre otros.

4

Page 7: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPITULO I SITUACION ACTUAL ____________________________________________

5

Page 8: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1. ASPECTOS GENERALES

1.1 ANTECEDENTES

1.1.1. Servicios WEB

Los Servicios Web surgieron ante una necesidad de estandarizar la

comunicación entre distintas plataformas como PC, Mainframe, Mac, etc. y

lenguajes de programación como PHP, C#, Java, etc.

Anteriormente se hacía uso de RPC (Remote Procedure Call), para realizar la

comunicación entre diferentes nodos. Esto, además de presentar ciertos

problemas de seguridad, tenía la desventaja de que su implementación en un

ambiente como es Internet, era casi imposible, ya que muchos firewalls

bloqueaban este tipo de mensajes, lo que hacía prácticamente imposible

comunicar a dos computadoras conectadas por Internet.

Los Web Services surgieron para finalmente poder lograr la tan esperada

comunicación entre diferentes plataformas. En la actualidad muchos sistemas de

legado están pasando a ser Web Services.

1.1.2. Servicios Web con PHP

Esta propuesta esta dirigida a las personas que ya poseen conocimientos sobre

Internet y programación y quieren comenzar a conocer el mundo de los web

services o servicios web.

Anteriormente se habían realizado intentos de crear estándares pero fracasaron

o no tuvieron el suficiente éxito. Entre los que se pueden mencionar están

6

Page 9: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

DCOM y CORBA, por ser dependientes de la implementación del vendedor

DCOM - Microsoft, y CORBA – ORB.

A pesar que CORBA es de múltiples vendedores y que pueden operar entre si,

hay ciertas limitaciones para aplicaciones de niveles más altos en los cuales se

necesita seguridad o administración de transacciones, ya que muchos firewalls

bloquean este tipo de mensajes, lo que hace prácticamente imposible a dos

computadoras conectadas por Internet comunicarse. Los Web Services

surgieron para finalmente poder lograr la tan esperada comunicación entre

diferentes plataformas. En la actualidad muchos sistemas legacy están pasando

a ser web services

1.1.3. Archivo RSS

Un archivo RSS es actualizado de forma regular y contiene meta datos sobre

una fuente determinada. La cual consta fundamentalmente de lo siguiente:

Channel, que representa la fuente de las noticias.

Title, titulo del canal.

Link, vínculo del canal.

Description, descripción del canal.

Item, que representan elementos individuales, cada uno de los cuales

debe disponer de un title, un link o una description.

7

Page 10: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1.2 OBJETIVOS DEL TRABAJO

OBJETIVO GENERAL

Desarrollar una Aplicación en PHP que funcione como Alimentador RSS para la

difusión de noticias o contenidos de un Sitio Web.

OBJETIVOS ESPECIFICOS

Presentar RSS como herramienta para acceder y buscar la información

que obtenemos de Internet.

Diseñar una aplicación que permita la comunicación entre diferentes

plataformas.

Ampliar el conocimiento de todas las tecnologías asociadas a los

Servicios Web.

Diseñar una base de datos que cumpla con los requerimientos de

información del sistema propuesto utilizando el web service con php

Divulgar los beneficios que ofrece el desarrollo de un alimentador RSS

utilizando un Web Service.

Presentar la información actualizada y de manera oportuna.

8

Page 11: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1.3 JUSTIFICACIÓN E IMPORTANCIA

En la actualidad una gran parte de Sitios Web manejan documentos RSS que

permiten difundir en Internet un resumen de los contenidos para que puedan ser

republicados por terceros.

Los documentos RSS están basados en XML, el cual hace posible la extracción

de contenido de forma que sea reconocible por programas especializados de

computadoras o redes externas.

Estos documentos pueden ser creados de diferentes formas, una de ellas es

escribirlo utilizando los estándares establecidos basados en XML, otra forma es

utilizando plantillas que están difundidas en Internet para la creación de los

archivos RSS, las cuales contienen las etiquetas esenciales utilizadas en los

archivos RSS, también se puede adquirir un software especializado en esta

tarea que facilita este trabajo, estos son llamados alimentadores RSS los cuales

pueden ser vía software o vía Web, los últimos son los más ventajosos ya que

pueden utilizarse desde cualquier lugar sin que se requiera de una instalación o

descarga previa.

Se podría generar un documento RSS cada día, listando nuevos ítems

interesantes del Sitio Web, pero esto consumiría mucho tiempo. Lo cual hace

necesario incorporar un sistema de administración de contenidos el cual permita

la generación automática de documentos RSS.

Con la creación del alimentador RSS en PHP utilizando un Web Service se

pretende crear los documentos RSS a partir de los contenidos almacenados en

una base de datos y a la vez utilizar el Web Service para generar un mecanismo

de comunicación que utilice protocolos neutrales, logrando así una aplicación

multiplataforma, no importando el Sistema Operativo que requiera la información

y siendo accesible a Aplicaciones Web o de escritorio.

9

Page 12: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1.4 ALCANCES Y LIMITACIONES

ALCANCE

El trabajo de Graduación plantea, con base a un análisis de hechos y datos

reales, una solución genérica para la creación, administración y difusión de

contenidos en Internet.

LIMITACIONES

Pocos profesionales en el país hacen uso del protocolo RSS, por lo que la

investigación y la creación del alimentador RSS se realiza a través de

documentos y libros sobre el tema vía electrónica.

1.5 METODOLOGIA DEL PROYECTO

1.5.1. MÉTODOS, TÉCNICAS E INSTRUMENTOS.

1.5.1.1. MÉTODOS.

Se hará uso del método de Análisis, el cual busca descomponer un todo en sus

partes para estudiar cada uno de sus elementos y sus relaciones entre sí. En

este caso se establecerá la situación problemática, identificando y desintegrando

sus elementos para estudiar en forma intensiva como se relaciona y contribuye

cada una al problema.

Además, se empleara el Método de la Síntesis, el cual reconstruye las partes del

todo. Ya que se realizará un análisis de las partes implicadas en la situación

problemática que afrontan los Sitios encargados de publicar noticias o

actualizaciones de Sitios Web, surge la necesidad de volver a integrar estos

elementos para conocer y entender dicha situación en una perspectiva de

totalidad.

También se utilizará el método inductivo, cuyo planteamiento es partir de hechos

particulares a lo general. Para el desarrollo de la Aplicación Informática, se

10

Page 13: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

partirá de la información obtenida en el proceso de Investigación para llegar a

sus correspondientes conclusiones.

Así mismo, se empleará el método deductivo, que parte de lo general a lo

particular; para en este caso, a partir de las conclusiones generadas de la

Investigación, redactar las correspondientes recomendaciones y plantear la

respectiva alternativa de solución.

1.5.1.2. TÉCNICAS.

Las técnicas a utilizar en este proyecto son: Observación y Consulta

Bibliográfica.

La técnica de la Observación se empleará con objeto de obtener información

objetiva y real acerca de la situación existente en los Sitios que se encargan de

publicar noticias. Esta observación se hará en busca de obtener información

verídica, precisa (buscando el mayor grado de verdad), registrando

oportunamente los datos. Esta técnica será de gran utilidad para determinar

correctamente la Situación Problemática y sus alternativas de solución.

El empleo de la técnica de Consulta o Sistematización Bibliográfica será de

trascendente importancia para estructurar el marco teórico, y una vez más,

debido a la naturaleza del Desarrollo de la Aplicación Informática, se hará una

consulta constante en material bibliográfico especializado en el área de RSS y

Web Services como apoyo al proceso de desarrollo.

11

Page 14: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1.5.1.3. TIPO DE ESTUDIO.

Para el desarrollo del Alimentador RSS en PHP utilizando un Web Service, se

emplearán los siguientes tipos de estudio: Bibliográfico, Descriptivo y

Exploratorio.

El tipo bibliográfico es aquel que se basa en información documental proveniente

de fuentes escritas especializadas en el tema de investigación. Debido a que se

desarrollará la aplicación con base a la revisión de aspectos teóricos y técnicos

específicos al Diseño de Alimentadores RSS y Web Services, el presente

estudio será de tipo bibliográfico. Será necesario además consultar y extraer

información pertinente en libros, revistas y otro material bibliográfico

especializado en el área de RSS y Web Services, que de soporte al estudio

desarrollado.

Con los estudios descriptivos se dice como es y como se manifiesta determinado

fenómeno, especificando propiedades del fenómeno sometido a análisis. Se

utilizará un enfoque descriptivo porque para determinar la alternativa de solución

(la aplicación) es necesario detallar como se presenta y manifiesta la situación

problemática, sus propiedades y su alcance en el proceso de publicación de

noticias o actualizaciones de un Sitio Web. Esta descripción pretende evaluar

los diferentes elementos que conforman la situación problemática.

Por último, un estudio exploratorio se realiza cuando se examina un problema de

investigación del cual se tiene poca información y se desea obtener un primer

acercamiento con la realidad. Por tanto, este estudio es de tipo Exploratorio

debido a que se examinará la situación problemática que afrontan actualmente

los Sitios dedicados a publicar noticias u otro tipo de información de gran interés

para muchas personas. Existe una problemática de la cual se posee poca

información, sobre las cuales se desea indagar para determinar correctamente la

propuesta de solución.

12

Page 15: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

1.5.1.4. FORMA DE USO

Existen muchas formas en que podríamos usar un Web Service, por ejemplo,

podemos dejar que el usuario seleccione su país y localidad, y que el sitio le

retorne cual es el pronostico actual.

Otro uso que podemos darle es el de mostrar cual es el clima actual para una

localidad determinada (lo mismo que hacen muchos diarios en sus cabeceras).

Por lo general un Web Service tiene 9 métodos que podemos utilizar (todos ellos

se encuentran definidos en un archivo WSDL (Web Services Description

Language)

Los métodos son: getStation(), isValidCode(), listCountries(), searchByCode(),

searchByCountry(), searchByLocation(), searchByName(), searchByRegion(),

getWeatherReport().

A continuación se presentará un ejemplo empleando el método

searchByCountry() y getWeatherReport().

En este ejemplo existen dos archivos:

1. SeleccionarLocalidad.php: el cual nos permitirá seleccionar una

localidad dado un país (el país esta dado por el valor de la variable

$sPais). Este archivo PHP utiliza el método del Web Service

searchByCountry()

2. mostrarPronostico.php: el cual mostrará el pronóstico para la localidad

seleccionada. Este archivo PHP utiliza el método del Web Service

getWeatherReport().

Toda la información del Web Service se encuentra definida dentro del

documento WSDL, (Web Services Description Language)

13

Page 16: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

El código quedaría de la siguiente manera:

277. <message name="searchByCountryResponse"> 278. <part name="return" type="xsd1:ArrayOfStation"/> 279. </message> 280<message name="searchByCountry"> 281. <part name="country" type="xsd:string"/> 282.</message>

SearchByCountry: comencemos por la línea 4 y dejaremos para

después las líneas 1, 2 y 3.

280. <message

name="searchByCountry">

En esta línea se indica que existe un

método llamado searchByCountry, que es

el método que estamos utilizando

281. <part name="country"

type="xsd:string"/>

Aquí se define que existe un parámetro

para dicho método que se llama “country”

(país) y es del tipo string.

282. </message> Fin del método seachByCountry

Un Ejemplo de un mensaje real con el parámetro country podría ser el del país

“El Salvador”, el cual quedaría de la siguiente manera:

<nu:searchByCountry>

<country xsi:type="xsd:string"> El Salvador</country>

</nu:searchByCountry>

14

Page 17: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

SearchByCountryResponse: analizando el método

searchByCountryResponse, como su nombre lo indica es la respuesta al

metodo searchByCountry. Es decir cuando invocamos a

searchByCountry, el servidor nos responderá con un mensaje con el

formato de searchByCountryResponse. Las respuestas, generalmente,

tienen anexado al final Response al nombre del método (esto se epecifica

en el portType).

1. <message

name="searchByCountryResponse">

Esta línea nos indica que es una

respuesta al método

searchByCountry.

2.<partname="return"

type="xsd1:ArrayOfStation"/>

El método nos devuelve una variable

“return” la cual es del tipo

ArrayOfSation. Los documentos

WSDL pueden definir sus propios

tipos de datos, ArrayOfStation es un

tipo de datos definido en este WSDL.

279. </message>

Fin del método

searchByCountryResponse.

Como vimos anteriormente se hace referencia a un ArrayOfStation, para ver de

que se trata esto debemos buscar este tipo de datos dentro del archivo WSDL.

(Web Services Description Language)

En las líneas comprendidas ente 148 y 157, podemos ver que se define este

tipo de datos.

148. <xsd:complexType name="ArrayOfStation">

149. <xsd:complexContent>

150. <xsd:restriction base="SOAP-ENC:Array">

15

Page 18: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

151. <xsd:sequence>

152. <xsd:element maxOccurs="unbounded" minOccurs="0"

name="item" type="xsd1:Station"/>

153. </xsd:sequence>

154. <xsd:attribute ref="SOAP-ENC:arrayType"

wsdl:arrayType="xsd1:Station[]"/>

155 </xsd:restriction>

156. </xsd:complexContent>

157. </xsd:complexType>

148. <xsd:complexType

name="ArrayOfStation">

En esta línea podemos ver que se

define un tipo de datos complejo

(complexType) con el nombre de

“ArrayOfStation”, el tipo de datos que

buscábamos.

149. <xsd:complexContent>

150. <xsd:restriction base="SOAP-

ENC:Array">

151. <xsd:sequence>

Indicamos que es un elemento complejo

(array).

152. <xsd:element

maxOccurs="unbounded"

minOccurs="0" name="item"

type="xsd1:Station"/>

Esta línea es la que más nos interesa,

ya que se indica precisamente como

esta compuesto el array. Nos dice que

tiene un mínimo de ocurrencias de 0

(MinOccurs=” 0” ), es decir, que puede

no tener elementos. Un máximo de

ocurrencias no limitado

(maxOccurs=”unbounded”), es decir

que podemos tener todos los elementos

16

Page 19: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

que queramos. Y al finalizar nos indica

el tipo de datos del array, que es

“Station”. Por desgracia ahora tenemos

que ver que tipo de datos es Station.

Como podemos ver un dato se define a

partir de otro, hasta llegar a los tipos de

datos básicos.

153. </xsd:sequence> Se cierran los tags anteriormente

abiertos.

154. <xsd:attribute ref="SOAP-

ENC:arrayType"

wsdl:arrayType="xsd1:Station[]"/>

Terminamos de definir el array.

155. </xsd:restriction>

156. </xsd:complexContent>

157. </xsd:complexType>

Se cierran los demás tags que fueron

abiertos.

Nos quedaba pendiente definir el tipo de datos “Station”, nuevamente al buscar

en el código encontramos entre las líneas 134 a 147 la definición de este tipo de

datos.

134. <xsd:complexType name="Station">

135. <xsd:sequence>

136. <xsd:element maxOccurs="1" minOccurs="1" name="icao"

nillable="true" type="xsd:string"/>

137. <xsd:element maxOccurs="1" minOccurs="1" name="wmo"

nillable="true" type="xsd:string"/>

138. <xsd:element maxOccurs="1" minOccurs="1" name="iata"

nillable="true" type="xsd:string"/>

139. <xsd:element maxOccurs="1" minOccurs="1" name="elevation"

type="xsd:double"/>

140. <xsd:element maxOccurs="1" minOccurs="1" name="latitude"

17

Page 20: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

type="xsd:double"/>

141. <xsd:element maxOccurs="1" minOccurs="1" name="longitude"

type="xsd:double"/>

142. <xsd:element maxOccurs="1" minOccurs="1" name="name"

nillable="true" type="xsd:string"/>

143. <xsd:element maxOccurs="1" minOccurs="1" name="region"

nillable="true" type="xsd:string"/>

144. <xsd:element maxOccurs="1" minOccurs="1" name="country"

nillable="true" type="xsd:string"/>

145. <xsd:element maxOccurs="1" minOccurs="1" name="string"

nillable="true" type="xsd:string"/>

146. </xsd:sequence>

147. </xsd:complexType>

134. <xsd:complexType

name="Station">

Se define que comienza el tipo de

datos complejo Station.

135. <xsd:sequence>

Indicamos que comenzamos con la

definición del tipo secuencia (es decir

que todos los elementos que se

definen dentro están incluidos en el

tipo de datos Station). Existen otro tipo

que no es secuencia (sequence), y se

llama choice (elección), en el cual se

selecciona entre uno de los elementos

dentro definidos (aquellos

comprendidos entre <xsd:choice>y

</xsd:choice>).

136. <xsd:element maxOccurs="1"

minOccurs="1" name="icao"

Se definen 3 elementos los cuales son

del tipo string, dichos elementos son:

18

Page 21: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

nillable="true" type="xsd:string"/>

137. <xsd:element maxOccurs="1"

minOccurs="1" name="wmo"

nillable="true" type="xsd:string"/>

138. <xsd:element maxOccurs="1"

minOccurs="1" name="iata"

nillable="true" type="xsd:string"/>

icao, wmo, e iata.

139. <xsd:element maxOccurs="1"

minOccurs="1" name="elevation"

type="xsd:double"/>

140. <xsd:element maxOccurs="1"

minOccurs="1" name="latitude"

type="xsd:double"/>

141. <xsd:element maxOccurs="1"

minOccurs="1" name="longitude"

type="xsd:double"/>

Se definen otros 3 elementos, en este

caso son del tipo double. Estos son:

elevation, latitude, y longitude.

142. <xsd:element maxOccurs="1"

minOccurs="1" name="name"

nillable="true" type="xsd:string"/>

143. <xsd:element maxOccurs="1"

minOccurs="1" name="region"

nillable="true" type="xsd:string"/>

144. <xsd:element maxOccurs="1"

minOccurs="1" name="country"

nillable="true" type="xsd:string"/>

145. <xsd:element maxOccurs="1"

Se definen los últimos 4 elementos del

tipo string. Los elementos aquí

definidos son: name, region, country, y

string.

19

Page 22: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

minOccurs="1" name="string"

nillable="true" type="xsd:string"/>

146. </xsd:sequence>

147. </xsd:complexType>

Cierre de los tags abiertos

anteriormente.

un ejemplo de respuesta:

<return xsi:type="cc1:ArrayOfStation" SOAP-ENC:arrayType="cc1:Station[86]">

<item xsi:type="cc1:Station">

<icao xsi:type="xsd:string">SARS</icao>

<wmo xsi:type="xsd:string">87149</wmo>

<iata xsi:nil="true"/>

<elevation xsi:type="xsd:double">91.0</elevation>

<latitude xsi:type="xsd:double">-26.817</latitude>

<longitude xsi:type="xsd:double">-60.45</longitude>

<name xsi:type="xsd:string"> Universidad Dr. Jose Matías Delgado </name>

<region xsi:nil="true"/>

<country xsi:type="xsd:string">El Salvador</country>

<string xsi:type="xsd:string">Facultad de Economía

@ -26.817&apos;S -60.45&apos;W 91m</string>

</item>

<item xsi:type="cc1:Station">

</return>

20

Page 23: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Para aclarar el tipo de estructura de ArrayOfStation usaremos analogías con

otros lenguajes de programación:

// Delphi //

Station = record

icao : String;

wmo : String;

iata : String;

elevation : String;

latitude : String;

longitude : String;

name : String;

region : String;

country : String;

string_ : String;

end;

ArrayOfSation : array of Station;

// C# //

struct Station

{

String icao;

String wmo;

String iata;

String elevation;

String latitude;

String longitude;

String name;

String region;

String country;

String string_;

}

Station[] ArrayOfStation;

Como vemos no es fácil seguir todo lo que esta definido dentro de un

documento WSDL, por suerte muchas veces no nos tenemos que preocupar por

todo esto ya que los mismos sitios donde se encuentran alojados los Web

Services nos proveen de la información necesaria sin necesidad de tener que

recurrir a ver los archivos WSDL.

21

Page 24: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

PROGRAMANDO

La aplicación de prueba del Web Service se divide en dos (2) archivos, uno que

mostrara todas las localidades donde existen pronósticos

(seleccionarLocalidad.php) y otro que mostrara el pronóstico para la localidad

seleccionada (mostrarPronostico.php)

WEB SERVICE (SEARCHBYCOUNTRY):

En el código se han eliminado las comprobaciones de errores para poder facilitar

la lectura de los pasos. Veamos cuales son los pasos para consumir un servicio

web desde PHP:

Require_once(“lib/nusoap.php”);

Debemos incluir la librería NuSOAP. En

este ejemplo asumimos que el

directorio donde se encuentra el

archivo nusoap.php esta ubicado en el

subdirectorio lib (a partir de donde esta

nuestro script).

$oSoapClient = new

soapclient('http://live.capescience.com/

wsdl/GlobalWeather.wsdl', true);

Debemos instanciar la clase soapclient,

ya que en esta ocasión utilizaremos

solo el cliente que nos provee

NuSOAP. Los parámetros enviados

son la ubicación del documento WSDL

y true como segundo parametro (este

último parámetro indica que el primer

documento es un WSDL) .

$aParametros = array("country" => "El

Salvador");

Definimos un array con el país para el

cual se quieren obtener las localidades

que tienen pronósticos disponibles.

Volviendo al documento WSDL

22

Page 25: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

podemos ver que la variable que

debemos enviar es “country” y que es

del tipo string

Al crear una instancia de soapclient, existen varios parámetros que podemos

enviar para su creación:

$oSoapClient = new soapclient(

<url donde se encuentra el web service o WSDL>,

[<booleana indicando si el primer parámetro es un WSDL>],

[<entero con el Portéame>],

[<cadena proxyHost>],

[<cadena proxyPort>],

[<cadena nombre de usuario>],

[<cadena password>],

[<entero con el timeout de la conexión>],

[<entero con el timeout de la respuesta>]);

Solo el primer parámetro es necesario (la ubicación del Web Service o del

documento WSDL del Web Service), todos los demás son opcionales.

Al ejecutar el Web Service, existen varios parámetros que podemos enviar al

método:

call( <método que queremos ejecutar en el servidor>,

[<un array asociativo con los parámetros que debemos enviar (si existen)>],

[<cadena con el espacio de nombres (namespace)>],

23

Page 26: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

[<cadena con el valor de la acción SOAP>],

[<booleana indicando si esta presente los valores de SOAPVAL en los

headers>],

[<booleana la cual ya no se utiliza>],

[<cadena con el style a usar cuando se realiza la serialización de los

parametros>],

[<cadena que puede ser "encoded" o "literal" utilizada para serialización de los

parametros>]);

Cómo vemos existen muchos más parámetros que exigen un conocimiento más

profundo sobre los Web Services. Este es sólo un ejemplo de las muchas

utilidades que los web services nos pueden proporcionar.

24

Page 27: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPÍTULO II

MARCO TEORICO

25

Page 28: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

2. ANTECEDENTES

En el año de 1999 se comenzó a plantear un nuevo estándar, el cual terminaría

utilizando XML, SOAP, WSDL, y UDDI.

Los Servicios Web o Web Service son un sistema software diseñado para

soportar la interoperabilidad máquina - máquina a través de una red. Este tiene

una interfaz descripta en un formato que puede ser procesado por una máquina,

específicamente WSDL (Web Services Description Language). Otros sistemas

interactúan con el Web Service utilizando mensajes SOAP (Simple Object

Access Protocol), protocolo utilizado en los web services, los cuales se

encuentran establecidos previamente.

Entonces podríamos decir que un Web Service es una comunicación por medio

de mensajes SOAP, los cuales son mensajes especiales entre diferentes

equipos a través de una red.

2.1 RSS (Really Simple Syndication)

Sindicar un contenido es crear un fichero con un formato establecido que

contiene la información que se ofrece a los lectores: titular, noticia, autor, fecha

de publicación, fecha de actualización, etc. Este formato debe cumplir una

estructura estándar de forma que cualquier lector de noticias pueda extraer y

presentar su contenido al usuario. En la actualidad existen varias versiones

diferentes de ficheros utilizados en la sindicación de contenidos, ya que aunque

son todos válidos, su formato depende de la herramienta que se haya utilizado.

26

Page 29: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

La creación de este fichero se realiza de forma automática por la aplicación Web

que publica su contenido a través de Internet (periódico online, Weblogs, etc.)

La sindicación de contenido tiene su origen en el lenguaje XML (eXtensible

Markup Language)

La sindicación de contenidos se conoce, como RSS. Es necesario señalar que,

al igual que en otros casos, la creación de tecnologías que tienen su origen en

Internet, son fruto de muchos padres, y por lo tanto de muchos posibles

nombres. Dependiendo de dónde se mire se encontrará como Really Simple

Sindication, en otros Rich Site Summary o incluso: RDF Site Summary. Aunque

en definitiva todos hacen referencia a lo mismo.

Los beneficios prácticos al utilizar esta tecnología son considerables, aunque

fundamentalmente se resumen en uno: ahorro de tiempo y una mejor gestión de

la abundante información que llega al usuario.

2.2 - ALIMENTADOR RSS (Really Simple Syndication)

Un Alimentador RSS en lugar de usar código HTML para dar formato a cada una

de las páginas web que conforman un sitio, usa el estándar XML, el cual ha sido

diseñado para facilitar la lectura desde algún software. De esta manera, usando

XML, se puede asociar el contenido de un sitio para que sea leído en el

momento que se actualiza por el software lector de RSS.

27

Page 30: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Así, una persona que visita muchos sitios diariamente en busca de información

relevante, para lo cual necesita de mucho tiempo, con RSS y un software

adecuado, no tiene que entrar a cada uno de los sitios, sino que el programa se

encarga de “bajar” de cada sitio los titulares de las últimas actualizaciones,

facilitando la selección de contenido por parte del usuario y ahorrando su valioso

tiempo.

2.3 – LECTOR O AGREGADOR RSS (Really Simple Syndication)

Un agregador es un sistema que recoge los titulares de las noticias o historias

publicadas en los weblogs o bitácoras que se elijan, de forma que no se tenga

que consultar las novedades que hay en cada página individual centralizando las

novedades de las páginas seleccionadas en un único lugar de consulta. Los

formatos más conocidos de publicación de noticias son RSS y ATOM.

Los agregadores son un producto reciente en la Web, su función es aglutinar

información de distintas páginas, ofrecida en formatos especiales como RSS,

chequeando además la actualidad de esas fuentes de información.

2.4 - XML ( Extensible Markup Language )

XML es el acrónimo del inglés eXtensible Markup Language (lenguaje de

marcado ampliable o extendible) desarrollado por el World Wide Web

Consortium (W3C).

28

Page 31: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Es una versión simple del Lenguaje de Marcado Estándar Generalizado (SGML

por sus siglas en inglés). Se utiliza principalmente como estándar para el

intercambio de datos entre diversas aplicaciones o software con lenguajes

privados como en el caso del SOAP.

Al igual que el HTML, se basa en documentos de texto plano en los que se

utilizan etiquetas para delimitar los elementos de un documento. Sin embargo,

XML define estas etiquetas en función del tipo de datos que está describiendo y

no de la apariencia final que tendrán en pantalla o en la copia impresa, además

de permitir definir nuevas etiquetas y ampliar las existentes.

Otro de los objetivos de XML es conseguir una página Web más semántica.

separando la estructura del contenido y permitiendo el desarrollo de vocabularios

modulares, compatibles con cierta unidad y simplicidad del lenguaje (objetivo

que se viene desarrollando a través de la especificación XHTML (Extensible

Hypertext Markup Language), tiene otras aplicaciones entre las que destaca su

uso.

A continuación se presenta un ejemplo de un documento XML sobre información de autos:

<?xml version="1.0" encoding="UTF-8"?>

<vehiculos>

<coche>

<marca>Toyota</marca>

<modelo>Corolla</modelo>

<fechaCompra>2002</fechaCompra>

</coche>

29

Page 32: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<coche>

<marca>Honda</marca>

<modelo>Civic</modelo>

<fechaCompra>2003</fechaCompra>

</coche>

</vehiculos>

A continuación, se presenta una breve explicación sobre las secciones del

mismo:

<?xml version="1.0" encoding="UTF-

8"?>

Todo documento XML debe comenzar

indicando que es un documento XML, la

versión del mismo y su codificación. Es

por eso que se utiliza el tag <?xml .... ?> .

Todos los elementos a partir de aquí son

definidos por el usuario.

<vehiculos>

Luego se indica un tag raiz (<vehiculos>)

el cual contendrá a los demás elementos.

Es como en HTML el tag <HTML> ..

</HTML>, que dentro de el se encuentran

los demás tags. Se lo conoce

generalmente como root del documento.

<coche>

Luego definimos un tag <coche> el cual

contendrá un coche en particular (en este

caso solo se incorporaron 3 características

de un coche: marca, modelo, y fecha de

compra).

<marca>Toyota</marca> Se definen 3 tags (marca, modelo, y

30

Page 33: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<modelo>Corolla</modelo>

<fechaCompra>2002</fechaCompra>

fechaCompra), los cuales contienen los

datos para un coche en particular.

<vehiculos>

. <coche>

. . <marca>..</marca>

. . <modelo>..</modelo>

. .

<fechaCompra>..</fechaCompra>

. </coche>

</vehiculos>

En el documento podemos apreciar que

todos los tags que son abiertos <marca>

deben ser cerrados </marca>.

Se pueden anidar tags <coche><marca></marca>…..</coche>. Marca esta

dentro del tag coche. El XML provee muchas otras posibilidades como puede ser

que las etiquetas tengan atributos (<coche color="rojo">..</coche>).etc.

2.5- SOAP

SOAP (Simple Object Access Protocol) es un protocolo elaborado para facilitar la

llamada remota de funciones a través de Internet, permitiendo que dos

programas se comuniquen de una manera muy similar técnicamente a la

invocación de páginas Web.

El protocolo SOAP tiene diversas ventajas sobre otras maneras de llamar

funciones de manera remota como DCOM, CORBA o directamente en TCP/IP:

Es sencillo de implementar, probar y usar.

31

Page 34: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Es un estándar de la industria, creado por un consorcio del cual Microsoft

forma parte, adoptado por W3C (http://www.w3.org/TR/SOAP/) y por

varias otras empresas.

Utiliza los mismos estándares de la Web para casi todo: la comunicación

se hace mediante HTTP con paquetes virtualmente idénticos; los

protocolos de autenticación y encriptación son los mismos; el

mantenimiento de estado se hace de la misma forma; se implementa

normalmente por el propio servidor Web.

Atraviesa "firewalls" y routers, que "piensan" que es una comunicación

HTTP.

Tanto los datos como las funciones se describen en XML, lo que permite

que el protocolo no sólo sea más fácil de utilizar sino que también sea

muy sólido.

Es independiente del sistema operativo y procesador.

Se puede utilizar tanto de forma anónima como con autenticación

(nombre/clave).

Las solicitudes SOAP se pueden hacer en tres estándares: GET, POST y SOAP.

Los estándares GET y POST son idénticos a las solicitudes hechas por

navegadores de Internet. SOAP es un estándar similar a POST, pero las

solicitudes se hacen en XML y permiten recursos más sofisticados, como pasar

estructuras y arreglos ("arrays").

32

Page 35: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Así mismo, SOAP utiliza un estándar llamado Lenguaje de Descripción de

Servicios Web (WSDL por sus siglas en inglés), que describe perfectamente los

objetos y métodos disponibles a través de páginas XML accesibles por la Web.

La idea es la siguiente: quien publica un servicio, crea también estas páginas.

Quien quiera llamar el servicio, puede utilizar estas páginas como

"documentación" de la llamada y también utilizarlas antes de llamar las funciones

para verificar si cambió algo.

SOAP se puede implementar fácilmente en casi cualquier ambiente de

programación. Actualmente, existen diversos paquetes de desarrollo SOAP para

diversos sistemas operativos y lenguajes de alto nivel.

La estructura básica del protocolo y la correspondiente explicación es la

siguiente:

<?xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

Soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>

...

</soap:Header>

<soap:Body>

...

<soap:Fault>

...

</soap:Fault>

</soap:Body>

</soap:Envelope>

33

Page 36: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<?xml version="1.0"?>

Como podemos ver en esta linea SOAP

es un documento XML, y como tal, debe

comenzar con el tag <?xml….?> y la

versión correspondiente.

<soap:Envelope

Aquí se indica que comienza el envelope

(sobre) del mensaje

xmlns:soap =

"http://www.w3.org/2001/12/soap-envelope"

Un mensaje SOAP debe contener

siempre un elemento envelope asociado

con el namespace (espacio de nombres)

http://www.w3.org/2001/12/soap-

envelope

Soap:encodingStyle="http://www.w3.org/20

01/12/soap-encoding">

En esta línea lo que se hace es indicar

donde se encuentran definidos los tipos

de datos utilizados en el documento.

<soap:Header>

Esta línea indica el comienzo del Header

(encabezado). En esta sección se incluye

información específica del mensaje, como

puede ser la autenticación.

</soap:Header> Como todo documento XML los tags que

son abiertos deben ser cerrados, esta

línea indica la finalización del Header

(encabezado).

34

Page 37: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<soap:Body>

Aquí comienza el cuerpo del mensaje, en

esta sección se incorpora toda la

información necesaria para el nodo final.

Por ejemplo, los parámetros para la

ejecución, o la respuesta a una petición.

<soap:Fault>

Cualquier tipo de fallo que se produzca

será notificado en esta sección. La cual

esta contenida dentro del cuerpo del

mensaje.

</soap:Fault>

Cierre de la sección Fault.

</soap:Body>

Indica el final del cuerpo del mensaje.

</soap:Envelope>

Fin del mensaje SOAP.

2.6 - WEB SERVICES DESCRIPTION LANGUAGE (WSDL)

Lenguaje de Descripción de Servicios Web (WSDL por sus siglas en inglés), es

un protocolo basado en XML que describe los accesos al Web Services.

Podríamos decir que es el manual de operación del Web Services, porque nos

indica cuales son las interfaces que provee el Servicio Web y los tipos de datos

necesarios para la utilización del mismo.

Una vez que se ha desarrollado un servicio Web, se publica su descripción y se

construye una liga o apuntador en un depósito UDDI (Universal Description,

35

Page 38: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Discovery and Integration) para que los usuarios potenciales lo puedan utilizar.

Cuando alguien piensa en utilizar este servicio Web, solicitan el archivo WSDL

para conocer la ubicación del servicio, llamado de funciones, y cómo acceder al

servicio Web. Luego utilizan la información en el archivo WSDL para construir

una petición SOAP (Simple Object Access Protocol) y enviarla hacia el

proovedor de servicio.

2.7 - UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION

(UDDI)

Descripción Universal, Descubrimiento e Integración (UDDI, por sus siglas en

inglés), es un modelo de directorios para Web Services. Es una especificación

para mantener directorios estandarizados de información acerca de los Web

Services, sus capacidades, ubicación, y requerimientos en un formato

reconocido universalmente. UDDI utiliza WSDL para describir las interfaces de

los Web Services.

Es un lugar en el cual podemos buscar cuales son los Servicios Web

disponibles, una especie de directorio en el cual podemos encontrar los Web

Services publicados y publicar los Web Services que desarrollemos.

Cómo su nombre lo indica, el estándar UDDI provee un mecanismo para que los

Servicios Web se describan a sí mismos y los tipos de servicios que

proporcionan y luego se pueden registrar y publicarse en un Registro UDDI.

Tales Servicios Web publicados pueden ser buscados, consultados o

descubiertos por otros Servicios Web utilizando mensajes con SOAP. Una vez

36

Page 39: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

descubiertos los Servicios Web con quien se pueden asociar, pueden utilizar

este mecanismo para integrar sus servicios en conjunción con sus socios y

proveer los servicios a sus clientes.

2.8 - NUSOAP

NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo

el lenguaje PHP. Está compuesto por una serie de clases que nos harán mucho

más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de

clientes (aquellos que consumen los Web Services) y de servidores (aquellos

que los proveen). NuSOAP 0.7.2 está basado en SOAP 1.1, WSDL 1.1 y HTTP

1.0/1.1.

2.9. NuSOAP como soporte para Web Services en PHP

No es el único, existen otros, pero es uno de los que están en una fase de

desarrollo mucho más avanzada. Sin ir más lejos, PHP a partir de su versión 5

comienza a dar soporte para SOAP, pero aun esta en fase experimental.

Está en una fase madura de desarrollo. Además, no necesita módulos

adicionales y es muy fácil su instalación y uso.

37

Page 40: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPÍTULO III SITUACION ACTUAL _________________

38

Page 41: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

3.0 SITUACION ACTUAL En la actualidad el término servicios web (web services) forma parte esencial

dentro del mundo del desarrollo de software, ya se ha escrito mucho sobre qué

son y cuáles tecnologías usan, por lo tanto lo que se pretende es realizar una

implementación real de servicios web con una tecnología tan importante como lo

es el PHP.

Para lograr la implementación de servicios web en PHP se usó las tecnologías

XML-RPC y SOAP sobre las cuales se implementaron servidores y clientes

consumidores de servicios web.

Los servicios web han venido a revolucionar el mundo de la programación, nos

ofrecen una infinidad de ventajas y nos ayudan a mejorar la forma de procesar

información. Pero, ¿qué es un servicio web?, pues bien, es computación

distribuida utilizando estándares abiertos como XML y HTTP para llamar o

invocar funciones de otras aplicaciones independientes sea cual sea el sistema

operativo o plataforma en que se ejecutan.

Ahora bien, podemos realizar un servicio web sencillo en nuestra computadora,

pero posiblemente éste no cumplirá con estándares de comunicación, es por eso

que debemos de entender que para realizar una correcta función de nuestros

servicios web es necesario estandarizarlos por medio de protocolos. Existen dos

tendencias en particular que es XML-RPC y SOAP. Estos dos protocolos son

lenguajes de mensajería basada en XML, estandarizados por el consorcio W3C.

39

Page 42: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

XML-RPC

XML-RPC es el protocolo de llamada de procedimientos remotos (RPC: Remote

Procedure Calling), el cual trabaja sobre internet. Un mensaje de XML-RPC es

una petición del HTTP-POST [1]. El cuerpo del mismo está en XML, un

procedimiento es ejecutado en el servidor y el valor que devuelve está en

formato XML. Un ejemplo de una petición [6] sería el siguiente:

POST /RPC2 HTTP/1.0

User-Agent: Frontier/5.1.2 (WinNT)

Host: betty.userland.com

Content-Type: text/xml

Content-length: 181

<?xml version="1.0"?>

<methodCall>

<methodName>ejemplo.buscaIsbn</methodName>

<params>

<param>

<value><i4>1</i4></value>

</param>

</params>

</methodCall>

Un ejemplo de respuesta [6] sería entonces:

HTTP/1.1 200 OK

Connection: close

Content-Length: 158

Content-Type: text/xml

Date: Fri, 17 Jul 1998 19:55:08 GMT

Server: UserLand Frontier/5.1.2-WinNT

40

Page 43: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<?xml version="1.0"?>

<methodResponse>

<params>

<param>

<value><string>PHP</string></value>

</param>

</params>

</methodResponse>

3.1 SOAP

SOAP (Simple Object Access Protocol, Protocolo de acceso a objetos simple)[3]

es un protocolo basado en XML que consiste de tres partes: la primera define

cuál es el mensaje y cómo procesarlo, la segunda es un sistema de reglas de

codificación para expresar tipos de datos definidos y una tercera parte para

representar respuestas de llamadas por parte de procedimientos remotos.

La diferencia básica entre los dos protocolos anteriores es su complejidad. XML-

RPC está diseñado para ser sencillo, mientras que SOAP está hecho con la idea

de ofrecer un soporte completo de todo tipo de servicio web.

Por otro lado, también es conveniente describir qué es WSDL. Pues bien, WSDL

es un formato XML que describe los servicios de red como un conjunto de

puntos finales que procesan mensajes contenedores de información orientada

tanto a documentos como a procedimientos. Las operaciones y los mensajes se

describen de manera abstracta y después se enlazan a un protocolo de red y a

un formato de mensaje concreto para definir un punto final de red.

Desarrollo de un servidor XML-RPC

Como usar el framework XML-RPC [2] para desarrollar nuestros servicios web

basados en XML-RPC.

41

Page 44: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Framework cuenta con la clase xmlrpc_server para construir nuestros

servidores, la cual se ha desarrollado lo más simple posible. El constructor

básicamente hace todo el trabajo, veamos un pequeño ejemplo:

<?php

function foo($parametros)

{

/* Instrucciones php */

}

$servidor=new

xmlrpc_server(array("ejemplo.miFuncion"=>array("function"=>"foo")));

?>

Es todo lo que necesitamos hacer en un servidor. El único argumento que

requiera la clase es un arreglo asociativo de los nombres de los métodos a los

nombres de las funciones que se van a exponer, las cuales son responsables de

regresar un objeto xmlrpcresp, el cual es serializado de regreso.

xmlrpcresp.- Esta clase se usa para proveer las respuestas a las peticiones

XML-RPC. Un método en el servidor construirá el xmlrpcresp y regresará su

valor. Este valor es el que se regresa al invocar el método send de la clase

xmlrpc_client. Existen dos formas de crear esta clase:

<?php $res = new xmlrpcresp($valor_xmlrpc);

$res = new xmlrpcresp(0, $NoError, $err);

?>

La primera instancia se usa cuando la ejecución ocurrió sin excepciones,

$valor_xmlrpc es un valor xmlrpcval con el resultado de la ejecución del método.

El segundo constructor se usa en caso de falla, $NoError y $err son valores para

indicarnos lo que estuvo mal. Los métodos más comunes de esta clase son:

42

Page 45: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

faultCode:

<?php $codigo=$res->faultCode(); ?>

Regresa el código del error. Un valor de 0 indica éxito, cualquier otro valor indica

falla.

faultString:

<?php $error=$res->faultString(); ?>

Regresa la descripción del error.

value:

<?php $valor_xmlrpc=$res->value(); ?>

Regresa un objeto xmlrpcval que contiene el valor regresado por el servidor. Si

el faultCode no es 0 entonces el valor regresado por este método no debe ser

usado (puede que no sea un objeto incluso).

Ahora que ya conocemos el funcionamiento de las clases que crean el servidor y

forman las respuestas vamos a crear nuestro servidor XML-RPC que contendrá

el servicio web de buscar el título de un libro enviando su ISBN con el que

hemos trabajado.

<?php

//Ejemplo de un servidor XML-RPC en PHP

//Recibe un ISBN y regresa el Título //del libro.

include("xmlrpc.inc");

include("xmlrpcs.inc");

function BuscaIsbn($NoIsbn) {

global $NoError;

$err="";

43

Page 46: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

// Obtenemos el parametro

$ParIsbn=$NoIsbn->getParam(0);

// Vemos si es del tipo correcto

if (isset($ParIsbn) && ($ParIsbn->scalartyp()=="int"))

{ // Obtenemos el valor numerico

$isbn=$ParIsbn->scalarval();

// Buscamos el libro

switch($isbn)

{

case 1: $titulo="PHP";

break;

case 2: $titulo="XML_RPC";

break;

case 3: $titulo="Sitios web";

break;

case 4: $titulo="Linux";

break;

default:$NoError=1;

$err="No hay libro ". "con el ISBN '". $isbn . "'";

}

} else // No es entero

{$err="Se requiere un número";}

// Creamos la respuesta

if ($err) // Si hay error

{ return new xmlrpcresp(0, $NoError, $err); }

else // Si no hay error

{ return new xmlrpcresp(new xmlrpcval($titulo)); }

}

//Creamos el servidor

$s=new xmlrpc_server(array("libros.buscaIsbn" =>array("function" =>

44

Page 47: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

"BuscaIsbn")));

?>

Ya contamos con nuestro servidor XML-RPC y nuestro servicio web listo para

ser usado.

Desarrollo de un cliente XML-RPC

El siguiente paso es conocer las clases que podemos usar para crear un cliente

XML-RPC para que consuma servicios web XML-RPC, demos un vistazo rápido

a las clases principales.

xmlrpc_client.- Esta es la clase básica para un cliente XML-RPC, la forma de

usarla es la siguiente:

<?php $cliente = new

xmlrpc_client($ruta_servidor,$nombre_servidor,$puerto_servidor); ?>

El puerto es opcional si se omite usa por defecto el 80 para HTTP y el 443 para

HTTPS. Los métodos más comunes de esta clase son:

send:

<?php $respuesta = $cliente-

>send($mensaje_xmlrpc,$tiempo_limite,$metodo_servidor); ?>

Donde $mensaje_xmlrpc es una instancia de xmlrpcmsg. $tiempo_limite es

opcional y será 0 su valor si es omitido lo cual indica que censará siempre. El

parámetro $metodo_servidor también es opcional si se omite será por defecto

"http", el otro valor permitido es "https" que es una conexión SSL_HTTP. Si el

valor de repuesta es 0, significa que ocurrió un error de entrada / salida, se

puede conocer los valores del error en $cliente->errno y en $client->errstring.

setDebug:

45

Page 48: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

<?php $cliente->setDebug($valor); ?>

Donde $valor es 0 o 1 dependiendo si deseamos que el cliente imprima la

información de depuración en el navegador. Por defecto no imprime la

información (0).

xmlrpcmsg.- Esta clase provee una representación para una petición a un

servidor XML-RPC. Un cliente envía un xmlrpcmsg al servidor y recibe un

xmlrpcresp.

<?php $msg = new xmlrpcmsg($nombre_metodo,$arreglo_parametros); ?>

Donde $nombre_metodo es una cadena que indica el nombre del método que se

desea invocar y $arreglo_parámetros es un arreglo simple de objetos xmlrpcval.

El método más común de esta clase es:

xmlrpcval.- Esta clase es la que permite la creación y encapsulamiento de los

valores para XML-RPC (hace el trabajo sucio). Cuenta con diferentes

constructores:

<?php $valor=new xmlrpcval(); ?>

Crea un valor vacío, que debe ser alterado usando los métodos addScalar,

addArray o addStruct antes de ser usado.

<?php $valor=new xmlrpcval($cadena_texto); ?>

Crea una cadena de texto sencilla.

<?php $valor=new xmlrpcval(

$valor_escalar,"int"|"boolean"|"string"|"double"|"dateTime.iso860"|"base64"); ?>

Es usado para crear un valor escalar. El segundo parámetro debe ser el nombre

de un tipo XML-RPC.

46

Page 49: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Ejemplos:

<?php $entero=new xmlrpcval(123,"int"); ?> <?php $cadena=new xmlrpcval("Hola","string"); ?> <?php $boleano=new xmlrpcval(1,"boolean"); ?>

<?php $valor=new xmlrpcval($arreglo,"array"|"struct"); ?>

Se usa para crear valores complejos XML-RPC. EL primer argumento es un

arreglo simple en el caso de usar "array" o un arreglo asocativo en el caso de

"struct". Los elementos del arreglo deben ser objetos xmlrpcval.

Ejemplos:

<?php $arreglo=new xmlrpcval( array(new xmlrpcval("Abi"), new

xmlrpcval("Pedro")), "array"); ?>

<?php $estructura=new xmlrpcval( array("nombre"=>new xmlrpcval("Abi"),

"edad"=>new xmlrpcval( 23,"int")),"struct"); ?>

Con estas clases son suficientes para poder desarrollar nuestro cliente XML-

RPC, que esta de la siguiente manera:

<?php

include("xmlrpc.inc");

if ($HTTP_POST_VARS["txtIsbn"]!="")

{ $f=new xmlrpcmsg('libros.buscaIsbn',array(new

xmlrpcval($HTTP_POST_VARS["txtIsbn"], "int")));

print "<pre>".htmlentities($f->serialize())."</pre>\n";

$c=new xmlrpc_client("/servidor.php", "localhost", 80);

$c->setDebug(0);

$r=$c->send($f);

if (!$r)

47

Page 50: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

{ die("Falló SEND"); }

$v=$r->value();

if (!$r->faultCode())

{ print "Título del libro ".$HTTP_POST_VARS["txtIsbn"]." es ".$v-

>scalarval()."<BR>"; }

else

{ print "Falla: ";

print "Número de error: " .$r->faultCode()." Descripción del error '".$r-

>faultString()."'<BR>";}

}

?>

Listo ya hemos implementado nuestro servidor y nuestro cliente XML-RPC, pero

no es la única forma de consumir o crear servicios, veamos otra forma de crear y

consumir servicios web.

Desarrollo de clientes SOAP con PHP

La mayoría de los servicios web que encontramos en la actualidad se basan en

los estándares SOAP y WSDL [5] analizados anteriormente.

La implementación de SOAP sobre PHP que vamos a utilizar se llama NuSOAP

[4] que es desarrollado por la empresa NuSphere y que fue liberado bajo licencia

LPGL.

Veamos el siguiente script en PHP que usa SOAP para consumir un servicio

web que regresa el típico mensaje de "Hola Mundo":

<?php

// Manejo de la forma para ver si ya se envió

if (!(string)$_POST["boton"] == "") {

// Incluimos las clases de SOAP

require("nusoap.php");

48

Page 51: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

// crea el cliente

$cliente = new soapclient("http://www.pecesama.net/ws/server.php?wsdl",

"wsdl");

$proxy = $cliente->getProxy();

// llamada al metodo (BuscaIsbn)

$resultado = $proxy->BuscaIsbn((string)$_POST["isbn"]);

// Revisa errores

if (!$cliente->getError()) {

// muestra resultados

print "El titulo del libro con ISBN ".(string)$_POST["isbn"]." es: ".$resultado;

}

// Error

else {

echo "<h1>Error: ".$cliente->getError()."</h1>";

}

}

?>

<!-- Forma de busqueda -->

<form name="datos" action="#" method="POST">

ISBN: <input type="text" name="isbn">

<input name="boton" type="submit" value="Buscar">

</form>

De esta sencilla manera podemos consumir servicios web basados en SOAP,

solo enviándole la dirección del WSDL que como vimos es la descripción del

servicio web creando una clase proxy por medio de la cual llamamos el método.

De esta manera logramos consumir con nuestro lenguaje favorito (PHP) tantos y

tantos servicios web que existen en la actualidad basados en SOAP y WSDL de

una manera sencilla y rápida.

Desarrollo de servidores SOAP con PHP

49

Page 52: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Solo nos falta desarrollar un servidor de servicios web con SOAP y PHP, para

ello usaremos NuSOAP y se usará el ejemplo de buscar el título del libro

mediante su ISBN:

<?php

// Incluimos las clases de SOAP

require("nusoap.php");

// Creamos el objeto del servidor

$servidor=new soap_server();

// Registramos la función que queremos exponer como servicio web

$servidor->register("buscaIsbn");

// Generación del WSDL

$servidor->debug_flag=false;

$servidor->configureWSDL("ISBN", "http://www.pecesama.net/ws");

$servidor->wsdl->schemaTargetNamespace = "http://www.pecesama.net/ws";

/*// Agregamos un tipo de dato complejo

$servidor->wsdl->addComplexType(

"datosLibro",

"complexType",

"struct",

"all",

"",

array(

"titulo" => array("name"=>"titulo", "type"=>"xsd:string"))

);*/

// Registramos el método

$servidor->register("BuscaIsbn", array("titulo" => "xsd:string"),

array("return"=>"xsd:string"), http://www.pecesama.net/ws");

function BuscaIsbn($isbn)

{

if (isset($isbn))

50

Page 53: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

{

switch($isbn) /*No usaremos base de datos*/

{

case 111: $titulo="Taller de PHP";

break;

case 222: $titulo="PHP y XML_RPC";

break;

case 333: $titulo="Creando sitios web con PHP";

break;

case 444: $titulo="PHP para principiantes";

break;

default: return new soap_fault("Client", "", "El libro no existe.",

"");

}

}

else

{

// No hay isbn

return new soap_fault("Client", "", "No envio ISBN.", "");

}

return $titulo;

}

// Enviar el resultado como una respuesta SOAP por HTTP

$servidor->service($HTTP_RAW_POST_DATA);

exit();

?>

51

Page 54: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPÍTULO 4 PROPUESTA DE SOLUCION ________________________

52

Page 55: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.1 DESCRIPCIÓN GENERAL En la actualidad, Internet es la principal fuente de acceso a la información, ya

que permite encontrar una gran cantidad de referencias, de acuerdo a las

diferentes necesidades e intereses de los usuarios, lo cual obliga a los

cibernautas a ser hábiles para localizar el material que necesita de manera

eficiente, pero a veces, hasta el navegante más diestro no puede escapar del

difícil hecho de tener que visitar muchos Sitios y navegarlos para poder

encontrar la información que se requiere, acción que implica la pérdida de

tiempo y de productividad para las organizaciones al no tener la información en

el momento oportuno.

Hasta hace poco tiempo, cuando un usuario observaba una página Web que le

interesaba, lo que hacía era añadirla a su lista de favoritos del navegador y de

vez en cuando la visitaba. La frecuencia de dichas visitas ha estado

directamente relacionada con la actualización de las páginas Web de un Sitio.

A medida que se actualizan y se incorporan nuevos e interesantes contenidos,

los usuarios demuestran mayor interés en visitar una página web.

Cuando se hace una rutina, el tener que navegar en estos Sitios de noticias,

deportes, periódicos, economía, foros de noticias en el que se discuten temas de

actualidad, e incluso Weblogs1 para informarse de temas diversos, la actividad

de estar al día puede ser muy tediosa, ya que se tiene que buscar uno por uno el

Sitio o la noticia de su preferencia, y eso a pesar de que se tiene un número de

fuentes de información que crece día con día.

Para informar de las novedades a sus lectores algunos medios de comunicación

en la Red proponen el envío de listas de novedades por correo electrónico. Sin

embargo; este sistema, como cualquiera que emplee el correo electrónico, cada

1 Weblog: Página web en la que el contenido se centra en un registro de notas ordenadas cronológicamente donde se aporta un conjunto de enlaces con comentarios y reflexiones que el autor o autores va añadiendo en un periodo de tiempo dado.

53

Page 56: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

vez esta resultando menos efectivo y más problemático por culpa del spam o

correo basura.

4.2 DELIMITACION DE CONTENIDO.

El presente proyecto está enfocado a desarrollar un alimentador RSS, el cual

pueda generar los índices del Sitio Web para su posterior publicación y de esta

forma los usuarios se enteren de forma oportuna cuando el sitio ha sido

actualizado, sin que ellos necesiten visitar el sitio para darse cuenta si este ha

cambiado su contenido o no.

A la vez se realizará un Web Service utilizando NuSoap de PHP, lo que permitirá

compartir información con otras aplicaciones independientemente de cómo se

hayan creado, sea cuál sea el Sistema Operativo o la plataforma en que se

ejecutan y cuáles los dispositivos utilizados para obtener acceso a ellas.

4.3 DELIMITACION DE TIEMPO.

Para la investigación se ha determinado una delimitación temporal de tipo

TRANSVERSAL ó SINCRONICA, la cual se trata básicamente de analizar y

desarrollar un proyecto social en un momento determinado del tiempo, que para

el caso en específico se ha considerado que se va a realizar entre los meses de

Enero y Diciembre del 2007.

54

Page 57: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.4. PLATAFORMAS DE DESARROLLO Y HERRAMIENTAS PARA EL

ANÁLISIS Y DISEÑO DE SISTEMAS

4.4.1. PLATAFORMAS DE DESARROLLO

Las plataformas de desarrollo son aquellas con las que se pretende realizar el

Sitio Web y son aquellas que permiten integrar el uso de varios recursos de

forma automática, hoy en día existen varias plataformas que hacen más fácil el

trabajo a los desarrolladores.

Una de las herramientas más utilizadas en el ambiente Web es Zend Studio, la

cual permite desarrollar y manejar aplicaciones PHP. También se puede

mencionar editores de páginas Web como lo son Microsoft FrontPage,

Macromedia Dreamweaver, Adobe GoLive entre otros.

4.4.2. HERRAMIENTAS PARA EL ANÁLISIS Y DISEÑO DE SISTEMAS

En general, una herramienta es cualquier dispositivo que, cuando se emplea en

forma adecuada, mejora el desempeño de una tarea,

Como todo sistema se cuenta con diferentes tipos de herramientas que ayudan

al diseño y desarrollo de la plataforma entre las cuales se pueden mencionar:

55

Page 58: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.4.3. HERRAMIENTA PARA EL ANÁLISIS

Las herramientas de análisis son las principales ya que con estas se identifican

todas las etapas en el desarrollo así también todos aquellos requerimientos con

lo que se deberá contar para poder desarrollar.

Es importante también porque ayuda a recopilar una mayor cantidad de

información sobre lo que va a solucionar o quiere mostrar el Sitio, es decir, su

propósito. Entre estas se pueden mencionar:

Herramientas para la recolección de datos: estas herramientas se

encargan de capturar los datos y documentarlos como apoyo en la

identificación de requerimientos.

Herramientas para diagramación: En estas se hace un esquema

utilizando diferentes tipos de nomenclatura en el que se muestran por

medio de gráficos como funciona el sistema.

A medida que la tecnología evoluciona el arribo de más plataformas de

programación se hace inevitable y con esto se pretende ayudar a los

desarrolladores a que trabajen de forma eficiente y eficaz.

56

Page 59: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.4.4. HERRAMIENTAS PARA DISEÑO

Estas herramientas son aquellas que se encargan de apoyar todos aquellos

requerimientos que se obtuvieron en la etapa de análisis, como se mencionó

anteriormente muchas veces depende de los requerimientos el uso de la

plataforma. Entre estas están:

Herramientas de especificación: En estas herramientas se determina la

presentación de los datos y las características de éstos como lo son la

entrada, el procesamiento y la salida de dichos datos.

Herramientas para presentación: Estas son utilizadas como forma de

estructurar todos los datos, posición, tamaño, encabezados, plantillas, etc.

Los analistas han utilizado las herramientas para el diseño de sistemas desde el

inicio de la era de las computadoras.

4.4.5. HERRAMIENTAS DE DESARROLLO

Estas son las herramientas que dan marcha a todo lo que se obtuvo en la etapa

de análisis y diseño. Entre las herramientas de desarrollo podemos mencionar:

Herramientas como las de ingeniería de software hacen que se vaya

formulando el diseño en base a la documentación incluyendo

procedimientos y controles.

Generadores de código: Estas son las que muestran y producen toda la

codificación del sistema siendo esta la principal herramienta ya que esta

se define todas las validaciones y especificaciones.

57

Page 60: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Herramientas para pruebas: Como todo sistema es necesario contar con

una herramienta para monitorear y comprobar que la aplicación funcione

en base a lo establecido en las anteriores etapas, estas apoyan la fase de

evaluación de un sistema o de partes del mismo. Y sirve para corregir

errores en caso de que el sistema no se vaya ejecutando en base a las

expectativas.

4.5 NOMENCLATURA Y ESTANDARES

4.5.1. DEFINICIÓN DE TÉRMINOS BÁSICOS

INTERNET

Internet es una red de redes a escala mundial de millones de computadoras

interconectadas con el conjunto de protocolos TCP/IP. También se usa este

nombre como sustantivo común y por tanto en minúsculas para designar a

cualquier red de redes que use las mismas tecnologías que la Internet,

independientemente de su extensión o de que sea pública o privada.

Las líneas para el intercambio de datos más utilizadas por el momento en

Internet son las telefónicas, pero también nos podemos conectar a través de:

La Fibra Óptica

Vía Satélite.

Teléfonos Móviles (WAP (Wireless Application Protocol) y UMTS

(Universal Mobile Telecommunication System)).

La Red Eléctrica (PLC: Tecnología Power Line Communications)

La Ondas de Radio (LMSD:Local Multipoint Distribution System)

La Televisión.

58

Page 61: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

WWW (World Wide Web)

La World Wide Web es toda la información que hay en Internet enlazada en

forma de páginas Web.

Otra definición: WWW, WEB o W3 World Wide Web. Telaraña mundial, para

muchos la WWW es Internet, para otros es solo una parte de ésta. Podríamos

decir estrictamente que la WEB es la parte de Internet a la que accedemos a

través del protocolo HTTP y utilizando navegadores normalmente gráficos como

Netscape.

World Wide Web, o simplemente Web, es el universo de información accesible a

través de Internet, una fuente inagotable del conocimiento humano. El

componente más usado en el Internet es definitivamente el Web. Su

característica sobresaliente es el hipertexto, un método para referencias

cruzadas instantáneas.

PÁGINA WEB

Una página Web es la unidad básica del World Wide Web. Esta tiene la

característica peculiar de que el texto se combina con imágenes para hacer que

el documento sea dinámico y permita que se puedan ejecutar diferentes

acciones, una tras otra, a través de la selección de texto remarcado o de las

imágenes, acción que nos puede conducir a otra sección dentro del documento,

abrir otra página Web, iniciar un mensaje de correo electrónico o transportarnos

a otro Sitio Web totalmente distinto a través de sus hipervínculos.

Al igual que los edificios, oficinas y casas, las páginas Web requieren de una

dirección particular para que los usuarios puedan acceder a la información

59

Page 62: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

contenida en ellos. Estas direcciones o URLs (Uniform Resource Locator)

aparecen cotidianamente en todos los medios de comunicación como son

prensa escrita, radio, televisión, revistas, publicaciones técnicas y en el propio

Internet a través de los motores de búsqueda (por su denominación en inglés

search engines). Los nombres de estos Sitios Web obedecen a un sistema

mundial de nomenclatura y están regidos por el ICANN (Internet Corporation for

Assigned Names and Numbers).

DISEÑO DE APLICACIONES WEB.

El amplio desarrollo que ha tenido la Internet como medio de comunicación y

herramienta avanzada, hace posible y necesaria la participación de distintas

disciplinas que contribuyan a mejorar los ambientes virtuales de aprendizaje.

El diseño de estos Sitios involucra una gran cantidad de recursos y aplicaciones

con las que se cuentan hoy en día, entre las cuales podemos mencionar las

imágenes y sonidos como sus principales atributos.

Cada ves los usuarios exigen mas a los Sitios Web, como por ejemplo hoy en

día es muy común hacer diferentes tipos de transacciones en la Web, como

pagar impuestos, compra de electrodomésticos e inclusive compra de comida.

WEB SERVICES

Es un software diseñado para soportar la interoperabilidad máquina - máquina a

través de una red. Este tiene una interfaz descripta en un formato que puede ser

procesado por una máquina (específicamente WSDL, que veremos más

adelante). Otros sistemas interactúan con el Web service utilizando mensajes

SOAP los cuales se encuentran establecidos previamente.

60

Page 63: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Entonces podríamos decir que un Web Service es una comunicación por medio

de mensajes SOAP entre diferentes equipos a través de una red.

SOAP

SOAP es un protocolo elaborado para facilitar la llamada remota de funciones a

través de Internet, permitiendo que dos programas se comuniquen de una

manera muy similar técnicamente a la invocación de páginas Web.

El protocolo SOAP tiene diversas ventajas sobre otras maneras de llamar

funciones de manera remota como DCOM, CORBA o directamente en TCP/IP:

Es sencillo de implementar, probar y usar.

Es un estándar de la industria, creado por un consorcio del cual Microsoft

forma parte, adoptado por W3C (http://www.w3.org/TR/SOAP/) y por

varias otras empresas.

Utiliza los mismos estándares de la Web para casi todo: la comunicación

se hace mediante HTTP con paquetes virtualmente idénticos; los

protocolos de autenticación y encriptación son los mismos; el

mantenimiento de estado se hace de la misma forma; se implementa

normalmente por el propio servidor Web.

Atraviesa "firewalls" y routers, que "piensan" que es una comunicación

HTTP.

Tanto los datos como las funciones se describen en XML, lo que permite

que el protocolo no sólo sea más fácil de utilizar sino que también sea

muy sólido.

Es independiente del sistema operativo y procesador.

Se puede utilizar tanto de forma anónima como con autenticación

(nombre/clave).

61

Page 64: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Las solicitudes SOAP se pueden hacer en tres estándares: GET, POST y SOAP.

Los estándares GET y POST son idénticos a las solicitudes hechas por

navegadores de Internet. SOAP es un estándar similar a POST, pero las

solicitudes se hacen en XML y permiten recursos más sofisticados, como pasar

estructuras y arreglos ("arrays").

Independientemente de cómo se haga la solicitud, las respuestas siempre son

en XML. XML describe perfectamente los datos en tiempo de ejecución y evita

los problemas ocasionados por cambios inadvertidos en las funciones, ya que

los objetos llamados tienen la posibilidad de validar siempre los argumentos de

las funciones, haciendo que el protocolo sea muy sólido.

Así mismo, SOAP utiliza un estándar llamado Lenguaje de Descripción de

Servicios Web (WSDL por sus siglas en inglés), que describe perfectamente los

objetos y métodos disponibles a través de páginas XML accesibles por la Web.

La idea es la siguiente: quien publica un servicio, crea también estas páginas.

Quien quiera llamar el servicio, puede utilizar estas páginas como

"documentación" de la llamada y también utilizarlas antes de llamar las funciones

para verificar si cambió algo.

SOAP se puede implementar fácilmente en casi cualquier ambiente de

programación. Actualmente, existen diversos paquetes de desarrollo SOAP para

diversos sistemas operativos y lenguajes de alto nivel.

WEB SERVICES DESCRIPTION LANGUAGE (WSDL)

Lenguaje de Descripción de Servicios Web (WSDL por sus siglas en inglés), es

un protocolo basado en XML que describe los accesos al Web Services.

Podríamos decir que es el manual de operación del Web Services, porque nos

indica cuales son las interfaces que provee el Servicio Web y los tipos de datos

necesarios para la utilización del mismo.

62

Page 65: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Una vez que se ha desarrollado un servicio Web, se publica su descripción y se

construye una liga o apuntador en un depósito UDDI (Universal Description,

Discovery and Integration) para que los usuarios potenciales lo puedan utilizar.

Cuando alguien piensa en utilizar este servicio Web, solicitan el archivo WSDL

para conocer la ubicación del servicio, llamado de funciones, y cómo acceder al

servicio Web. Luego utilizan la información en el archivo WSDL para construir

una petición SOAP (Simple Object Access Protocol) y enviarla hacia el

proovedor de servicio.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

Descripción Universal, Descubrimiento e Integración (UDDI, por sus siglas en

inglés), es un modelo de directorios para Web Services. Es una especificación

para mantener directorios estandarizados de información acerca de los Web

Services, sus capacidades, ubicación, y requerimientos en un formato

reconocido universalmente. UDDI utiliza WSDL para describir las interfaces de

los Web Services.

Es un lugar en el cual podemos buscar cuales son los Servicios Web

disponibles, una especie de directorio en el cual podemos encontrar los Web

Services publicados y publicar los Web Services que desarrollemos.

Cómo su nombre lo indica, el estándar UDDI provee un mecanismo para que los

Servicios Web se describan a sí mismos y los tipos de servicios que

proporcionan y luego se pueden registrar y publicarse en un Registro UDDI.

Tales Servicios Web publicados pueden ser buscados, consultados o

descubiertos por otros Servicios Web utilizando mensajes con SOAP. Una vez

descubiertos los Servicios Web con quien se pueden asociar, pueden utilizar

este mecanismo para integrar sus servicios en conjunción con sus socios y

proveer los servicios a sus clientes.

63

Page 66: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

NUSOAP

NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo

el lenguaje PHP. Está compuesto por una serie de clases que nos harán mucho

más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de

clientes (aquellos que consumen los Web Services) y de servidores (aquellos

que los proveen). NuSOAP 0.7.2 está basado en SOAP 1.1, WSDL 1.1 y HTTP

1.0/1.1.

RSS (Really Simple Syndication)

Sindicar un contenido es crear un fichero con un formato establecido que

contiene la información que se ofrece a los lectores: titular, noticia, autor, fecha

de publicación, fecha de actualización, etc. Este formato debe cumplir una

estructura estándar de forma que cualquier lector de noticias pueda extraer y

presentar su contenido al usuario. En la actualidad existen varias versiones

diferentes de ficheros utilizados en la sindicación de contenidos, ya que aunque

son todos válidos, su formato depende de la herramienta que se haya utilizado.

La creación de este fichero se realiza de forma automática por la aplicación Web

que publica su contenido a través de Internet (periódico online, Weblogs, etc.)

La sindicación de contenido tiene su origen en el lenguaje XML (eXtensible

Markup Language) que tantas utilidades está proporcionando. Sin entrar en

demasiados aspectos técnicos.

La sindicación de contenidos se conoce, como RSS. Es necesario señalar que,

al igual que en otros casos, la creación de tecnologías que tienen su origen en

Internet, son fruto de muchos padres, y por lo tanto de muchos posibles

nombres. Dependiendo de dónde se mire se encontrará como Really Simple

Sindication, en otros Rich Site Summary o incluso: RDF Site Summary. Aunque

en definitiva todos hacen referencia a lo mismo.

64

Page 67: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Los beneficios prácticos al utilizar esta tecnología son considerables, aunque

fundamentalmente se resumen en uno: ahorro de tiempo y una mejor gestión de

la abundante información que llega al usuario.

ALIMENTADOR RSS (Really Simple Syndication)

Un Alimentador RSS en lugar de usar código HTML para dar formato a cada una

de las páginas web que conforman un sitio, usa el estándar XML, el cual ha sido

diseñado para facilitar la lectura desde algún software. De esta manera, usando

XML, se puede asociar el contenido de un sitio para que sea leído en el

momento que se actualiza por el software lector de RSS.

Así, una persona que visita muchos sitios diariamente en busca de información

relevante, para lo cual necesita de mucho tiempo, con RSS y un software

adecuado, no tiene que entrar a cada uno de los sitios, sino que el programa se

encarga de “bajar” de cada sitio los titulares de las últimas actualizaciones,

facilitando la selección de contenido por parte del usuario y ahorrando su valioso

tiempo.

LECTOR O AGREGADOR RSS (Really Simple Syndication)

Un agregador es un sistema que recoge los titulares de las noticias o historias

publicadas en los weblogs o bitácoras que se elijan, de forma que no se tenga

que consultar las novedades que hay en cada página individual centralizando las

novedades de las páginas seleccionadas en un único lugar de consulta. Los

formatos más conocidos de publicación de noticias son RSS y ATOM.

Los agregadores son un producto reciente en la Web, su función es aglutinar

información de distintas páginas, ofrecida en formatos especiales como RSS,

chequeando además la actualidad de esas fuentes de información.

65

Page 68: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

XML ( Extensible Markup Language )

XML es el acrónimo del inglés eXtensible Markup Language (lenguaje de

marcado ampliable o extendible) desarrollado por el World Wide Web

Consortium (W3C).

Es una versión simple del Lenguaje de Marcado Estándar Generalizado (SGML

por sus siglas en inglés). Se utiliza principalmente como estándar para el

intercambio de datos entre diversas aplicaciones o software con lenguajes

privados como en el caso del SOAP.

Al igual que el HTML, se basa en documentos de texto plano en los que se

utilizan etiquetas para delimitar los elementos de un documento. Sin embargo,

XML define estas etiquetas en función del tipo de datos que está describiendo y

no de la apariencia final que tendrán en pantalla o en la copia impresa, además

de permitir definir nuevas etiquetas y ampliar las existentes.

Otro de los objetivos de XML es conseguir una página Web más semántica.

separando la estructura del contenido y permitiendo el desarrollo de vocabularios

modulares, compatibles con cierta unidad y simplicidad del lenguaje (objetivo

que se viene desarrollando a través de la especificación XHTML (Extensible

Hypertext Markup Language), tiene otras aplicaciones entre las que destaca su

uso.

66

Page 69: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.6 ANALISIS DEL SISTEMA

DIAGRAMA

Introducir los datos

Mostar Información de registro agregado S/N

Conectar a Internet o intranet.

Logearse en el sitio

Buscar datos a introducir

Indicar campo faltante FIN

67

Page 70: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

4.7 DISEÑO DEL SISTEMA

Recorrido de pantallas Pantalla de Inicio:

Imágenes

68

Page 71: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Texto

Pantalla de ingreso como administrador

69

Page 72: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPÍTULO V CONCLUSIONES Y RECOMENDACIONES ____________________________________

70

Page 73: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

5.1 CONCLUSIONES

Los web services facilitan el intercambio de datos entre aplicaciones y son

basados en peticiones y respuestas.

RSS nos facilita obtener información de la manera más conveniente, sin

necesidad de acceder al sitio web para saber que ha sido actualizado.

A través de la sindicacion de contenidos o RSS, se puede optimizar el tiempo en

la búsqueda de nueva información disponible en los sitios Web mas visitados

Los web service permiten que diversas aplicaciones realizadas en diferentes

tecnologías puedan comunicarse y ejecutase en una variedad de entornos.

Los web services forman protocolos basados en texto lo que facilita la

transferencia de información.

71

Page 74: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

5.2 RECOMENDACIONES

Al utilizar Web Services se recomienda compartir información que no sea

confidencial, ya que los datos corren peligro de ser interceptados debido a su

formato HTTP

Se recomienda que la Universidad incorpore el estudio de este tipo de

tecnologías en los temarios de las materias relacionadas con el entorno web

para facilitar el desarrollo de futuras investigaciones.

72

Page 75: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

BIBLIOGRAFIA

Computer Dictionary. Third Edition. Charles J. Sippl y Cía, Ingeniería del Software.5° Edición. Roger Pressman Principios de Sistemas de Información. Cuarta Edición. Ralph M. Stair; George W.

Reynolds Análisis y Diseño de Sistemas de Información. Jeffrey L. Whitten, Lonnie D. Bentley,

Victor M. Barlow, Editorial Mc Graw-Hill, Tercera Edición Análisis y Diseño de Sistemas de Información. James A. Senn, Editorial Mc Graw-

Hill, Segunda Edición Manual de Referencia Diseño de Sitios WEB. Thomas A. Powell, Editorial Osborne,

Mc Graw-Hill, Primera Edición Diseño de Páginas Web. J. Mariano González Romano / J. Manuel Cordero Valle,

Editorial Osborne-Mc Graw-Hill, Segunda Edición Manual de Referencia Dreamweaver 4. Jennifer A. Kettell, Editorial Osborne-Mc

Graw-Hill, Primera Edición El Internet Para Dummies. 3° Edición. John R. Levine y Cía Océano Uno Color, Diccionario Enciclopédico Edición 1995

Consultas en Internet (Junio a Diciembre de 2006) http://www.monografias.com/trabajos15/sist-informacion/sist-informacion.shtml http://www.monografias.com/trabajos14/implantacion-datos/implantacion-datos.shtml http://www.monografias.com/trabajos15/analista-sistem/analista-sistem.shtml http://www.monografias.com/trabajos7/resi/resi.shtml www.noticiasdot.com/publicaciones/2004/0904/2509/noticias250904/noticias250904-

7.htm http://www.desarrolloweb.com/desde0/ http://www.webestilo.com/asp/ http://www.desarrolloweb.com/articulos/1133.php?manual=5 http://www.informaticamilenium.com.mx/paginas/mn/articulo11.htm http://www.desarrolloweb.com/articulos/449.php?manual=18 http://geneura.ugr.es/~maribel/xml/introduccion/index.shtml http://www.unav.es/cti/manuales/HTML/indice.html#_Toc424020530 http://geneura.ugr.es/beatriz/contenido1.html http://www.programacion.com/html/tutorial/dreamweaver/2/#introdream-dreamweaver http://www.monografias.com/trabajos6/mafla/mafla.shtml#con http://www.informaticaintegral.net/links.htm http://www.abcdatos.com/tutoriales/tutorial/l7634.html http://joveninformatico.mendoza.edu.ar/www5.htm http://www.anacondaweb.com/es_faq.php http://www.noticiasdot.com/publicaciones/2004/0904/2509/noticias250904/noticias250904-7.htm http://www.foundation-marketing.com/spanish/ecommerce.esp.htm http://platea.cnice.mecd.es/~jmas/manual/html/java__javascript.html http://www6.uniovi.es/sgml.html http://www.deinsa.com.mx/deinsa2/sae.htm http://www.misrespuestas.com/que-es-el-ebusiness http://www.redaragon.com/informatica/wireless/redwireless.asp http://www.ujaen.es/sci/redes/rimuja/guias/introduccion.htm#tres

73

Page 76: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/REDES02.htm http://www.monografias.com/trabajos3/impomarketing/impomarketing.shtml http://es.wikipedia.org/wiki/Windows_2003_Server http://es.wikipedia.org/wiki/Windows_2000 http://www.cepm.com.do/consumo.htm www.juntaex.es/consejerias/ect/dgsi/proyectosi/docs/Glosario.htm http://es.wikipedia.org/wiki/Transacci%C3%B3n_electr%C3%B3nica_segura http://www.elzondabusiness.diarioelzonda.com.ar/businees/0903.htm http://www.preciomania.com/search_getprod.php/masterid=701201

74

Page 77: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

ANEXOS

75

Page 78: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

MANUAL DE USUARIO DEL ALIMENTADOR RSS

Page 79: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

ÍNDICE

CAPITULO I ........................................................................................................80

DESCRIPCIÓN DE ESTRUCTURA DEL SISTEMA ..........................................80

1. COMO INGRESAR AL ALIMENTADOR RSS ................................................................... 81

2. ESTRUCTURA BÁSICA DE PRESENTACIÓN Y MANEJO DE INFORMACIÓN.................... 86 NUEVO REGISTRO ......................................................................................................................... 86 CREACION DE USUARIOS............................................................................................................. 88 GENERAR RSS ................................................................................................................................ 89

CAPITULO II .......................................................................................................90

FINALIDAD DEL SISTEMA................................................................................90

CAPITULO III ......................................................................................................92

DESCRIPCIÓN DE LAS OPERACIONES..........................................................92

DESCRIPCIÓN DE LAS OPERACIONES......................................................................................... 93

2

Page 80: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPITULO I

DESCRIPCIÓN DE ESTRUCTURA DEL SISTEMA

1.

3

Page 81: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

COMO INGRESAR AL ALIMENTADOR RSS

Abrir el Internet Explorer o el navegador a utilizar.

Figura 1.1

Digitar la dirección donde se encuentra el servidor web, puede ser localhost o una dirección http:// especifica.

Figura 1.2

4

Page 82: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Inmediatamente se visualiza la pantalla del sistema donde se muestra en la

parte superior de la pantalla el nombre de la Universidad, el título de la tesis, (ver

Figura No. I-3) en este caso DESARROLLO DE UN ALIMENTADOR RSS EN

PHP UTILIZANDO WEB SERVICE (ver Figura No. I-3) y los nombres de los

integrantes del grupo de tesis.

Figura No. I-3

En la parte superior izquierda de la pantalla se ubica el modulo

de registro de usuarios donde se solicitan las claves de acceso,

(ver Figura No. I-4) en la cual se solicita la digitación de los

siguientes datos:

Usuario: en esta opción deberá digitarse el nombre de usuario

asignado.

Contraseña: o clave secreta de acceso.

Ambos datos son absolutamente necesarios, para garantizar un

acceso seguro para los usuarios registrados o autorizados.

Figura No.1-4

5

Page 83: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

En caso de digitación incorrecta de cualquiera de los datos solicitados, se

presentará una advertencia, (Ver Figura No. I-5), para efectos de corrección.

Figura No. I-5

Refiriéndose nuevamente a la Figura No. I-4 debe seguirse el siguiente paso:

Al haber ingresado correctamente el usuario y la contraseña requeridos, deberá presionarse el botón con la etiqueta INGRESAR para hacer efectivo el ingreso.

6

Page 84: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Una vez ingresado los datos se visualizara la pantalla principal ( Ver Figura No.

I-6)

Figura No. I-6

En esta pantalla se muestra la barra principal de accesos directos para algunas

opciones selectas del menú.

Esta barra ayudará al usuario para acceder a las diferentes opciones que se

describen a continuación:

7

Page 85: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Inicio: Esta opción permite al usuario ver la pagina principal del alimentador

Usuarios: Esta opción permite crear un nuevo usuario del alimentador

Nuevo Registro: Esta opción permite ingresar nueva información para la creación del archivo RSS

Generar RSS: Esta opción permite generar el archivo RSS directamente en XML

Mostrar Usuarios: Esta opción, permite ver todos los usuarios registrados en la BDA

8

Page 86: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

2. ESTRUCTURA BÁSICA DE PRESENTACIÓN Y MANEJO DE INFORMACIÓN

NUEVO REGISTRO El acceso y navegación sobre los datos que se administran a través de este

módulo, se facilita a través de la adopción de un estándar de presentación que

tiene como objetivo brindar un mecanismo intuitivo para acceder a los datos,

registrar o generar información.

La estructura de manejo y presentación de información se estructura

básicamente de los siguientes componentes:

Área de ingreso de título, donde el usuario ingresará el nombre de la

noticia o información que quiere dar a conocer (Ver figura I-7)

Figura I-7

Área de ingreso de Link, donde el usuario ingresará la dirección URL del

sitio donde se encuentra la información que quiere darse a conocer. (Ver

figura I-8)

Figura I-8

9

Page 87: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Área de ingreso de Descripción, donde el usuario ingresará una breve

descripción acerca del contenido de la noticia, la cual acompañara al título

de la noticia cuando se publique el contenido para ser descargado. (Ver

figura I-9

Figura I-9

Área de ingreso de Fecha, donde el usuario ingresará la fecha en que se

esta generando el archivo RSS (Ver figura I-10)

Figura I-10

Área de Selección de Sección, para su posterior publicación, de acuerdo

a la opción seleccionada. (Ver figura I-11)

Figura I-11

10

Page 88: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CREACION DE USUARIOS

El administrador deberá de crear los usuarios, y proporcionar los privilegios

respectivos, ya sea para Administrar, Editar o publicador el archivo XML

Para esto el alimentador cuenta con una pantalla de ingreso, en la cual

únicamente un usuario registrado por el administrador del Sitio podrá acceder,

con su respectivo, nombre de Usuario y contraseña.

Área de ingreso de Usuario, el Administrador creara el usuario, y

posteriormente le proporcionara el privilegio arriba mencionado.

Figura 1.11

Área de ingreso de contraseña, en esta el administrador del sitio, creara la

contraseña al usuario y posteriormente se la dará a conocer.

Figura 1.12

Área de Correo, este campo se solicita, para tener informado a los

Usuarios, de cualquier cambio, actualización o mantenimiento de la Base

de datos.

Figura 1.13

Asignación de Rol, a través de esta opción, el Administrador asigna un rol

especifico a cada usuario creado

Figura 1.14

11

Page 89: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

GENERAR RSS

En esta parte el publicador tiene la opción de elegir el tipo de archivo final

que se desea generar, ya sea por tipo de formato o por un rango de fechas

determinado, la opción predeterminada es la de noticias, queda a discreción

del publicador el de seleccionarla o no, al no seleccionar una opción al

presionar el botón de ingresar devolverá un mensaje de error, mencionando

de que se debe seleccionar al menos una opción.

Seleccionar Formato, en esta parte, el publicador debe elegir el tipo de

formato a generar, en este caso se tienen 3 opciones, Deportes, noticias y

Entretenimiento.

Figura 1.15

Rango de fechas, en esta área, el publicador puede seleccionar fechas

previas para volver a publicar.

Figura 1.16

12

Page 90: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPITULO II FINALIDAD DEL SISTEMA

13

Page 91: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

El alimentador RSS en PHP utilizando Web Service, tiene como finalidad la

facilitación para el ingreso de noticias, agregando un formato acorde a las

necesidades del administrador del sistema, en este caso, se desarrolla el titulo

de la noticia o información, el link directo hacia esta y una breve descripción,

para que así el usuario final, elija si visita o no el sitio.

La creación de usuarios con sus respectivos privilegios como el de administrar,

editar y el del publicador del archivo XML, hace que el sitio sea bien controlado

por el administrador del sitio, para esto se solicita al momento de crear usuarios,

el digitar el correo electrónico, de esta manera se tendrán informado a los

usuarios, sobre cualquier actualización o mantenimiento q se realice a la base de

datos.

Al generar un archivo XML en tiempo real, hace de una forma eficiente la

publicación de la información.

Este archivo se puede generar por rangos de fecha o por tipo de sección,

ejemplo, Deportes, Entretenimiento o por Noticia, esto dependerá de las

secciones agregadas por el administrador.

Al momento de generar el archivo, el publicador decidirá si generar el archivo

físico o la dirección xml para su pronta publicación.

14

Page 92: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

CAPITULO III DESCRIPCIÓN DE LAS OPERACIONES

15

Page 93: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

DESCRIPCIÓN DE LAS OPERACIONES

A continuación se describe el listado de las operaciones mas importantes que se

realizan en el Alimentador RSS:

1. Ingreso al Sistema:

Esta Área únicamente el usuario registrado podrá acceder al sitio a sus

distintas operaciones, el Administrador es el único encargado de la

creación de usuarios y de asignar los respectivos privilegios

2. Registro de Usuarios:

En esta operación se deberá registrar a los usuarios del alimentador RSS,

con el propósito de clasificarlos según el nivel de acceso que les sea

permitido.

3. Ingreso de registros:

En esta área se gestionan o se ingresan todas aquellos datos

confirmados por el Departamento de redacción para su publicación, se

utiliza el titulo, link, descripción, fecha y a la sección que pertenece.

4. Generador de RSS o XML:

En esta operación se utiliza el webservice y nusoap para gestionar los

datos con un formato establecido por el administrador del sitio, al cumplir

con todos estos requerimientos se publica de forma inmediata, pudiendo

elegir entre generar la dirección XML o guardar el archivo para su

posterior publicación, también se me permite crear el archivo por medio

de un rango de fechas o por medio de una sección en especifica.

16

Page 94: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Muestra de Usuarios:

Área donde se muestran todos los usuarios registrador por el

administrador del sitio, como se menciono anteriormente la única forma de

ingreso al sitio, es por medio del administrador y que este cree el usuario

y contraseña.

17

Page 95: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

MANUAL DE INSTALACION

1. Extraer el contenido del archivo servicio.rar en el directorio raíz del servidor web comúnmente llamado www

2. Una vez desempacados los archivos podremos observar en el nuevo directorio llamado servicio

3. Dentro de el directorio servicio verificamos la existencia del archivo llamado rss_dump.sql, que es el que contiene la información de la base de datos

Paso siguiente sera necesario utilizar un manejador de la administración de la base de datos MySql o bien utilizando el Mysql en modo consola, para este caso utilizaremos phpMyAdmin.

Abrimos el phpMyAdmin:

Creamos la Base de Datos:

1

Page 96: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Procedemos a ubicar y seleccionar el archivo rss_dump.sql que se encuentra en la carpeta servicio dentro de nuestro servidor web:

Después de seleccionar el archivo seleccionamos continuar para que se

ejecuten las sentencias que en el se encuentran, si todo ha sido ejecutado con éxito podremos observar un mensaje como el siguiente donde muestra la información de las tareas que se procesaron:

2

Page 97: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Ahora podremos observar que la Base de Datos y las tablas ya se

encuentran creadas y listas para utilizarse.

Abrimos el navegador y nos direccionamos a la ruta de nuestro servidor

web seleccionando la carpeta donde se extrajeron los archivos que en este caso es la carpeta servicio e iniciamos la aplicación.

Page 98: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

MANUAL TECNICO La Base de Datos RSS esta conformada por las tablas contenido, roles, secciones y usuarios las cuales se detallan a continuación: Contenido Almacena la información de las noticias a publicar

Roles Almacena los privilegios que poseen los usuarios de la base de datos rss Usuarios Almacena los usuarios registrados en la base de datos rss Secciones Almacena la información de las diferentes áreas de noticias

Las tareas principales de la aplicación son controladas por tres archivos los cuales se encargan del procesamiento de la información, las actividades que realizan se detallan a continuación:

Config.php Almacena la información del servidor, usuario, password y nombre de la base de datos que utiliza la aplicación.

Cliente.php El cliente es el ente encargado de hacer las peticiones al servicio web Server.php El server es el ente encargado de recibir las peticiones del cliente,

procesar la información y devolver los datos solicitados.

1

Page 99: Licenciatura en Ciencias de la Computación

Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service

Dentro de la carpeta donde se extraen los archivos se encuentran las librerías del NuSoap que se utilizan para poder ejecutar el web service.

2

2