Licenciatura en Ciencias de la Computación
Transcript of 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
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
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPITULO I SITUACION ACTUAL ____________________________________________
5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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'S -60.45'W 91m</string>
</item>
<item xsi:type="cc1:Station">
</return>
20
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPÍTULO II
MARCO TEORICO
25
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
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
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
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
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
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
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
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
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPÍTULO III SITUACION ACTUAL _________________
38
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
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
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
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
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
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
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
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
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
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPÍTULO 4 PROPUESTA DE SOLUCION ________________________
52
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
Texto
Pantalla de ingreso como administrador
69
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPÍTULO V CONCLUSIONES Y RECOMENDACIONES ____________________________________
70
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
ANEXOS
75
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
MANUAL DE USUARIO DEL ALIMENTADOR RSS
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPITULO I
DESCRIPCIÓN DE ESTRUCTURA DEL SISTEMA
1.
3
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
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
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
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
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
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
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
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
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPITULO II FINALIDAD DEL SISTEMA
13
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
Proyecto de Graduación: Desarrollo de un Alimentador RSS en PHP Utilizando Web Service
CAPITULO III DESCRIPCIÓN DE LAS OPERACIONES
15
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
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
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
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
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.
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
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