lunes, 2 de agosto de 2010

CANALES SINCRONICOS Y ASINCRONICOS

CANALES SINCRONICOS Y ASINCRONICOS

Los protocolos de transferencia de información en canales de microprocesadores, se pueden
clasificar en tres grupos:

1. Sincrónicos: transferencias sincronizadas, una transferencia por período de reloj.
2. Asincrónicos: transferencias sin reloj de sincronismo.
3. Semisincrónicos: transferencias sincronizadas, una transferencia por uno o mßs
períodos de reloj.

Un microprocesador posee un canal de datos, uno de direcciones y uno de control. Este
último es el encargado de manejar el sincronismo. Para ello dispone de líneas a tal efecto,
llamadas de sincronismo o de "handshake". La función de estas líneas es la de indicar el
comienzo y el fin de una transferencia de datos o de información. La complejidad de estas
líneas depende del tipo de máquina.

1. Canales Sincrónicos
Los canales sincrónicos son los más fáciles de implementar ya que la única línea de control
es un reloj. El flanco ascendente del reloj indica el comienzo de la transferencia y el
descendente el fin de la misma. En este tipo de canales, las transferencias son controladas
por el reloj maestro. La principal ventaja de estos es que además de ser los más simples de
los tres protocolos, también conducen a las transacciones más rápidas, siempre y cuando la
respuesta de los dispositivos sean suficientemente rápidas para operar a la velocidad
impuesta por el reloj.

Un ejemplo de un microprocesador con estas características de transferencia es el 6800, tal

2. Canales Asincrónicos
El problema más importante de los buses sincrónicos se presenta cuando el procesador
debe manejar dispositivos de distintas velocidades de operación, ya que el procesador
debería funcionar a la velocidad del dispositivo más lento (en algunos procesadores como
el 6800, es posible "estirar" un poco el ancho del pulso del reloj).
Lo ideal sería contar con transacciones rápidas para los dispositivos rápidos y lentas para
los dispositivos lentos o distantes en el bus.
Las señales de control, tal como se muestra en la Fig. C2, se denominan MASTER y
SLAVE. Este protocolo requiere un cambio nivel (flanco) para alternar entre las señales de
control. Esto garantiza que la información en el canal de datos y direcciones se transmita
sin conflictos y sin pérdida o duplicación en el bus. Un ejemplo de este tipo de canal es el
del microprocesador LSI-11 de Digital.
La principal desventaja de este tipo de canal es el retardo de propagación, que limitan el
ancho de banda del canal.

3. Canal Semisincrónico
Una solución alternativa intermedia entre velocidad de operación y compatibilidad entre
dispositivos de distintas velocidades sería el canal semisincrónico. En este se distinguen
dos señales de control: una es el reloj o una señal proporcional al reloj del microprocesador
(señales RD o WR), que son enviadas por el master y la otra es la señal WAIT que es
enviada por el slave, la cual controla la velocidad de transferencia "estirando" los accesos a los dispositivos.

La se±al WAIT se la denomina también XACK ("transfer acknowledge"). El slave
direccionado debe proveer al maestro con una señal de reconocimiento en respuesta a un
control de la transferencia (comando read o write). Esta línea la emite el slave para
indicarle al master que la operación del comando de lectura o escritura fue completada y
que la información sobre el canal de datos fue aceptada. Por lo tanto, la línea XACK le
permite a la CPU completar el ciclo corriente de canal. Si la línea XACK no es retornada a
la CPU, ésta entra en un estado "WAIT" hasta que la misma sea devuelta. En estos
sistemas, para evitar los tiempos indefinidos de estados "WAIT", debido a un error de
direccionamiento, se debe preveer funciones de "time-out" para finalizar el ciclo de canal,
después de un determinado período de tiempo.

En el caso en el cual los dispositivos sean lo suficientemente rápidos, el canal se comporta
como sincrónico; en cambio si el slave no puede responder en el tiempo de acceso de la
CPU, debe generar un tiempo de espera, comportándose en este caso como asincrónico. Un
ejemplo de un microprocesador con estas características de transferencia es el 8085, tal
La ventaja de estos tipos de canales es que pueden tener la velocidad de los sincrónicos y la
versatilidad de los asincrónicos. Sin embargo la desventaja sería la máxima longitud del
canal, ya que la señal wait debe ser establecida en un período de tiempo fijo.

Proceso de Sincronismo

Cuando se desea transferir información de un dispositivo a otro (microprocesador -
memoria o entrada/salida), se deben considerar una serie de operaciones:
- Presentar dirección de memoria.
- Proceso de sincronismo.
- Transferencia de información.

En el proceso de sincronismo actúan ciertas líneas del canal de control del
microprocesador. Por proceso de sincronismo se entiende el hecho de determinar el
momento (tiempo) exacto cuando se produce la transferencia de información y de
establecer la dirección de la transferencia de la información (lectura o escritura). Por lo
tanto es necesario diferenciar 3 estados:
- Lectura.
- Escritura.
- No acceso al canal (canal ocioso).

Esto nos indica que es por lo menos necesario contar con 2 líneas del canal de control para
poder diferenciar dichos estados. Existen históricamente 2 escuelas bién diferenciadas para
la implementación: La primera sigue las técnicas de los microprocesadores de Intel
(8080/8085), que consiste en emplear dos líneas de sincronismo mutuamente excluídas:
señal /WR y señal /RD, las cuales indican el instante (temporizado) y la operación de
escritura o de lectura respectivamente. La segunda sigue las técnicas de los
microprocesadores de Motorola (6800), que consiste en emplear una línea lógica de
lectura-escritura (R/W), que indica la dirección de los datos y otra de sincronismo (φ2),
indicando el instante de la transferencia.

Muy amenudo surgen problemas de sincronización cuando se desean conectar dispositivos
periféricos diseñados para un tipo de microprocesador, a otro microprocesador. Por
ejemplo si se desea conectar un dispositivo compatible con el microprocesador 6800 a un
microrpocesador 8085, surgen problemas en los ciclos de escritura. La línea /WR del mp
tiene la polaridad correcta con respecto a la línea R/W del dispositivo, sin embargo como la
primera define además el sincronismo de escritura, no podría conectarse directamente a la
segunda, debido a que estos dispositivos necesitan un tiempo de establecimiento ("set-up")
Para lograr la conexión deseada sería necesario
generar la línea E como la función lógica Nand de las líneas /RD y /WR y además generar
un estado tWAIT desactivando la línea READY del mp 8085.


Operaciones sincrónicas y asincrónicas

Describe implementaciones asincrónicas locales e invocaciones, así como el uso sincrónico de intercambios de mensajes asincrónicos.
Muchas aplicaciones llaman de forma asincrónica a los métodos porque permite que la aplicación siga realizando trabajo útil mientras se ejecuta la llamada al método. Los servicios y clientes Windows Communication Foundation (WCF) pueden participar en llamadas de operación asincrónicas en dos niveles distintos de la aplicación, que proporcionan a las aplicaciones WCF aún más flexibilidad para maximizar el rendimiento buscando el equilibrio con la interactividad.


Tipos de operaciones asincrónicas

Todos los contratos de servicio en WCF, sin tener en cuenta los tipos de parámetros y valores de retorno, usan atributos WCF para especificar un determinado modelo de intercambio de mensajes entre el cliente y el servicio. WCF enruta automáticamente mensajes de entrada y salida a la operación de servicio adecuada o al código de cliente ejecutor.
El cliente posee solo el contrato de servicio, que especifica el modelo de intercambio de mensajes para una operación determinada. Los clientes pueden ofrecer cualquier modelo de programación que elijan al programador, siempre y cuando se observe el modelo de intercambio de mensajes subyacente. Así, también, los servicios pueden implementar operaciones de cualquier manera, siempre que se observe el modelo del mensaje especificado.

La independencia del contrato de servicio del servicio o de la implementación del cliente habilita los formularios siguientes de ejecución asincrónica en aplicaciones WCF:

• Los clientes pueden invocar operaciones de solicitud/respuesta asincrónicamente mediante un intercambio de mensajes sincrónico.
• Los servicios pueden implementar una operación de solicitud/respuesta asincrónicamente mediante un intercambio de mensajes sincrónico.
• Los intercambios de mensajes pueden ser unidireccionales, sin tener en cuenta la implementación del cliente o servicio.


Escenarios asincrónicos sugeridos

Use un enfoque asincrónico en una implementación de operación de servicio si la implementación del servicio de la operación realiza una llamada en bloque, como al realizar operaciones de E/S. En una implementación de operación asincrónica, intente llamar a métodos y operaciones asincrónicos para extender la ruta de acceso de la llamada asincrónica al máximo. Por ejemplo, llame a una BeginOperationTwo() desde BeginOperationOne().

• Use un enfoque asincrónico en una aplicación de cliente o que realiza la llamada en los casos siguientes:
• Si invoca operaciones desde una aplicación de nivel intermedio. (Para obtener más información acerca de estos escenarios, consulte Aplicaciones cliente de nivel intermedio.)
• Si invoca operaciones desde una página ASP.NET, use páginas asincrónicas.
• Si invoca operaciones desde cualquier aplicación de proceso simple, como Windows Forms o Windows Presentation Foundation (WPF). Si utiliza el modelo de llamada asincrónica basado en evento, el evento resultante se produce en el proceso de interfaz de usuario, agregando capacidad de respuesta a la aplicación sin que sea necesario controlar procesos múltiples.
• En general, si puede elegir entre una llamada sincrónica y una asincrónica, elija la asincrónica.


Llamadas asincrónicas del cliente

Una aplicación de cliente WCF puede utilizar uno o dos modelos de llamada asincrónica, ambos descritos en Asynchronous Programming Design Patterns:
• Operaciones asincrónicas que utilizan eventos.
• Operaciones asincrónicas que utilizan objetos System.IAsyncResult.

El primer enfoque, el modelo asincrónico basado en eventos, se recomienda para llamar a aplicaciones, ya que solo requiere agregar un controlador de eventos para recibir una notificación de la respuesta, y el evento resultante que se genera automáticamente en el proceso de la interfaz de usuario. Para aplicar este enfoque, especifique las opciones de comando /async y /tcv:Version35 con la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe), como en el ejemplo siguiente.

Copiar

svcutil http://localhost:8000/servicemodelsamples/service/mex /async /tcv:Version35
Una vez hecho esto, Svcutil.exe genera una clase de cliente WCF con la infraestructura de cliente que permite a la aplicación de llamada implementar y asignar un controlador de eventos para recibir la respuesta y realizar la acción apropiada. Para obtener un ejemplo completo, consulte Cómo llamar a operaciones del servicio WCF de forma asincrónica.
El modelo asincrónico basado en eventos, sin embargo, solo está disponible en Versión 3.5 de .NET Framework. Además, no está permitido ni en .NET Framework 3,5 cuando se crea un canal de cliente WCF mediante System.ServiceModel.ChannelFactory. Con objetos de canal de cliente WCF, debe utilizar objetos System.IAsyncResult para invocar sus operaciones asincrónicamente. Para aplicar este enfoque, especifique la opción de comando /async con la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe), como en el ejemplo siguiente.

Copiar

svcutil http://localhost:8000/servicemodelsamples/service/mex /async
Esto genera un contrato de servicio en el cual cada operación se modela como un método con la propiedad AsyncPattern establecida en true y un método correspondiente. Para obtener un ejemplo completo mediante ChannelFactory, vea Cómo llamar a operaciones de manera asincrónica mediante un generador de canales.

En cualquier caso, las aplicaciones pueden invocar una operación asincrónicamente aun cuando se implementa el servicio sincrónicamente, del mismo modo que una aplicación puede usar el mismo modelo para invocar de forma asincrónica un método sincrónico local. Cómo se implementa la operación no es significativo para el cliente; cuando llega el mensaje de respuesta, su contenido se envía al método de extremo asincrónico del cliente y el cliente recupera la información.

Implementaciones de operación asincrónica
Igualmente, una operación de servicio se puede implementar asincrónicamente mediante el modelo de programación asincrónico .NET Framework y marcando el método con la propiedad AsyncPattern establecida en true. En este caso, la operación asincrónica se expone en metadatos de la misma manera que una operación síncrona: se expone como una operación única con un mensaje de solicitud y un mensaje de respuesta correlativo. Los modelos de programación de cliente tienen entonces una opción. Pueden representar este modelo como una operación síncrona o como una asincrónica, siempre que se origine un intercambio de mensajes solicitud-respuesta cuando se invoque el servicio.

Para ver un ejemplo, consulte Cómo: Implementar una operación de servicios asincrónica.
Para definir una operación de contrato X que se ejecuta asincrónicamente sin tener en cuenta cómo se llama en la aplicación cliente:

• Defina dos métodos mediante el modelo BeginOperation y EndOperation.
• El método BeginOperation incluye parámetros in y ref para la operación y devuelve un tipo IAsyncResult.
• El método EndOperation incluye un parámetro IAsyncResult así como los parámetros ref y out y devuelve el tipo de valor devuelto de las operaciones.
Por ejemplo, vea el método siguiente.
VB
C#
C++
F#
JScript
Copiar
Este idioma no es compatible o no hay ningún ejemplo de código disponible.
VB
C#
C++
F#
JScript
Copiar
Function DoWork(ByVal data As String, ByRef inout As String, _
out outonly As out) As Integer
Para crear una operación asincrónica, los dos métodos serían:
VB
C#
C++
F#
JScript
Copiar
Este idioma no es compatible o no hay ningún ejemplo de código disponible.
VB
C#
C++
F#
JScript
Copiar
_
Function BeginDoWork(ByVal data As String, _
ByRef inout As String, _
ByVal callback As AsyncCallback, _
ByVal state As Object) _
As IAsyncResult

Function EndDoWork(ByRef inout As String, _
ByRef outonly As String, _
ByVal result As IAsyncResult) _
As Integer


Nota:
El atributo OperationContractAttribute se aplica solamente a los métodos de BeginDoWork. El contrato resultante tiene una operación WSDL denominada DoWork.

Modelos de intercambio de mensajes unidireccional

También puede crear un modelo de intercambio de mensajes asincrónico en el que las operaciones unidireccionales (las operaciones para las que System ServiceModel.OperationContractAttribute.IsOneWay es true no tienen ninguna respuesta puesta en correlación) se pueden enviar en cualquier dirección por el cliente o por el servicio, independientemente del otro lado. (Esto utiliza el modelo de intercambio de mensajes dúplex con mensajes unidireccionales.) En este caso, el contrato de servicio especifica un intercambio de mensajes unidireccional que cada parte puede implementar como llamadas asincrónicas o implementaciones, o no, según corresponda. Por lo general, cuando el contrato es un intercambio de mensajes unidireccionales, las implementaciones pueden ser muchas veces sincrónicas porque una vez se envía un mensaje, la aplicación no espera a una respuesta y puede continuar haciendo otro trabajo.

Clientes asincrónicos y contratos de mensajes basados en eventos
Las directrices de diseño del modelo asincrónico basado en eventos afirman que si se devuelve más de un valor, uno de los valores se devuelve como propiedad Result y los demás se devuelven como propiedades del objeto EventArgs. De esto resulta que si un cliente importa metadatos mediante opciones de comando asincrónicas basadas en eventos y la operación devuelve más de un valor, el objeto EventArgs predeterminado devuelve un valor como propiedad Result y el resto son propiedades del objeto EventArgs.
Si desea recibir el objeto del mensaje como propiedad Result y que los valores devueltos sean propiedades de ese objeto, use la opción de comando /messageContract. Esto genera una firma que devuelve el mensaje de respuesta como la propiedad Result del objeto EventArgs. Todos los valores de devolución internos se convierten, pues, en propiedades del objeto de mensaje de respuesta.

CANALES SINCRONICOS Y ASINCRONICOS

CANALES SINCRONICOS Y ASINCRONICOS

Los protocolos de transferencia de información en canales de microprocesadores, se pueden
clasificar en tres grupos:

1. Sincrónicos: transferencias sincronizadas, una transferencia por período de reloj.
2. Asincrónicos: transferencias sin reloj de sincronismo.
3. Semisincrónicos: transferencias sincronizadas, una transferencia por uno o mßs
períodos de reloj.

Un microprocesador posee un canal de datos, uno de direcciones y uno de control. Este
último es el encargado de manejar el sincronismo. Para ello dispone de líneas a tal efecto,
llamadas de sincronismo o de "handshake". La función de estas líneas es la de indicar el
comienzo y el fin de una transferencia de datos o de información. La complejidad de estas
líneas depende del tipo de máquina.

1. Canales Sincrónicos
Los canales sincrónicos son los más fáciles de implementar ya que la única línea de control
es un reloj. El flanco ascendente del reloj indica el comienzo de la transferencia y el
descendente el fin de la misma. En este tipo de canales, las transferencias son controladas
por el reloj maestro. La principal ventaja de estos es que además de ser los más simples de
los tres protocolos, también conducen a las transacciones más rápidas, siempre y cuando la
respuesta de los dispositivos sean suficientemente rápidas para operar a la velocidad
impuesta por el reloj.

Un ejemplo de un microprocesador con estas características de transferencia es el 6800, tal

2. Canales Asincrónicos
El problema más importante de los buses sincrónicos se presenta cuando el procesador
debe manejar dispositivos de distintas velocidades de operación, ya que el procesador
debería funcionar a la velocidad del dispositivo más lento (en algunos procesadores como
el 6800, es posible "estirar" un poco el ancho del pulso del reloj).
Lo ideal sería contar con transacciones rápidas para los dispositivos rápidos y lentas para
los dispositivos lentos o distantes en el bus.
Las señales de control, tal como se muestra en la Fig. C2, se denominan MASTER y
SLAVE. Este protocolo requiere un cambio nivel (flanco) para alternar entre las señales de
control. Esto garantiza que la información en el canal de datos y direcciones se transmita
sin conflictos y sin pérdida o duplicación en el bus. Un ejemplo de este tipo de canal es el
del microprocesador LSI-11 de Digital.
La principal desventaja de este tipo de canal es el retardo de propagación, que limitan el
ancho de banda del canal.

3. Canal Semisincrónico
Una solución alternativa intermedia entre velocidad de operación y compatibilidad entre
dispositivos de distintas velocidades sería el canal semisincrónico. En este se distinguen
dos señales de control: una es el reloj o una señal proporcional al reloj del microprocesador
(señales RD o WR), que son enviadas por el master y la otra es la señal WAIT que es
enviada por el slave, la cual controla la velocidad de transferencia "estirando" los accesos a los dispositivos.

La se±al WAIT se la denomina también XACK ("transfer acknowledge"). El slave
direccionado debe proveer al maestro con una señal de reconocimiento en respuesta a un
control de la transferencia (comando read o write). Esta línea la emite el slave para
indicarle al master que la operación del comando de lectura o escritura fue completada y
que la información sobre el canal de datos fue aceptada. Por lo tanto, la línea XACK le
permite a la CPU completar el ciclo corriente de canal. Si la línea XACK no es retornada a
la CPU, ésta entra en un estado "WAIT" hasta que la misma sea devuelta. En estos
sistemas, para evitar los tiempos indefinidos de estados "WAIT", debido a un error de
direccionamiento, se debe preveer funciones de "time-out" para finalizar el ciclo de canal,
después de un determinado período de tiempo.

En el caso en el cual los dispositivos sean lo suficientemente rápidos, el canal se comporta
como sincrónico; en cambio si el slave no puede responder en el tiempo de acceso de la
CPU, debe generar un tiempo de espera, comportándose en este caso como asincrónico. Un
ejemplo de un microprocesador con estas características de transferencia es el 8085, tal
La ventaja de estos tipos de canales es que pueden tener la velocidad de los sincrónicos y la
versatilidad de los asincrónicos. Sin embargo la desventaja sería la máxima longitud del
canal, ya que la señal wait debe ser establecida en un período de tiempo fijo.

Proceso de Sincronismo

Cuando se desea transferir información de un dispositivo a otro (microprocesador -
memoria o entrada/salida), se deben considerar una serie de operaciones:
- Presentar dirección de memoria.
- Proceso de sincronismo.
- Transferencia de información.

En el proceso de sincronismo actúan ciertas líneas del canal de control del
microprocesador. Por proceso de sincronismo se entiende el hecho de determinar el
momento (tiempo) exacto cuando se produce la transferencia de información y de
establecer la dirección de la transferencia de la información (lectura o escritura). Por lo
tanto es necesario diferenciar 3 estados:
- Lectura.
- Escritura.
- No acceso al canal (canal ocioso).

Esto nos indica que es por lo menos necesario contar con 2 líneas del canal de control para
poder diferenciar dichos estados. Existen históricamente 2 escuelas bién diferenciadas para
la implementación: La primera sigue las técnicas de los microprocesadores de Intel
(8080/8085), que consiste en emplear dos líneas de sincronismo mutuamente excluídas:
señal /WR y señal /RD, las cuales indican el instante (temporizado) y la operación de
escritura o de lectura respectivamente. La segunda sigue las técnicas de los
microprocesadores de Motorola (6800), que consiste en emplear una línea lógica de
lectura-escritura (R/W), que indica la dirección de los datos y otra de sincronismo (φ2),
indicando el instante de la transferencia.

Muy amenudo surgen problemas de sincronización cuando se desean conectar dispositivos
periféricos diseñados para un tipo de microprocesador, a otro microprocesador. Por
ejemplo si se desea conectar un dispositivo compatible con el microprocesador 6800 a un
microrpocesador 8085, surgen problemas en los ciclos de escritura. La línea /WR del mp
tiene la polaridad correcta con respecto a la línea R/W del dispositivo, sin embargo como la
primera define además el sincronismo de escritura, no podría conectarse directamente a la
segunda, debido a que estos dispositivos necesitan un tiempo de establecimiento ("set-up")
Para lograr la conexión deseada sería necesario
generar la línea E como la función lógica Nand de las líneas /RD y /WR y además generar
un estado tWAIT desactivando la línea READY del mp 8085.


Operaciones sincrónicas y asincrónicas

Describe implementaciones asincrónicas locales e invocaciones, así como el uso sincrónico de intercambios de mensajes asincrónicos.
Muchas aplicaciones llaman de forma asincrónica a los métodos porque permite que la aplicación siga realizando trabajo útil mientras se ejecuta la llamada al método. Los servicios y clientes Windows Communication Foundation (WCF) pueden participar en llamadas de operación asincrónicas en dos niveles distintos de la aplicación, que proporcionan a las aplicaciones WCF aún más flexibilidad para maximizar el rendimiento buscando el equilibrio con la interactividad.


Tipos de operaciones asincrónicas

Todos los contratos de servicio en WCF, sin tener en cuenta los tipos de parámetros y valores de retorno, usan atributos WCF para especificar un determinado modelo de intercambio de mensajes entre el cliente y el servicio. WCF enruta automáticamente mensajes de entrada y salida a la operación de servicio adecuada o al código de cliente ejecutor.
El cliente posee solo el contrato de servicio, que especifica el modelo de intercambio de mensajes para una operación determinada. Los clientes pueden ofrecer cualquier modelo de programación que elijan al programador, siempre y cuando se observe el modelo de intercambio de mensajes subyacente. Así, también, los servicios pueden implementar operaciones de cualquier manera, siempre que se observe el modelo del mensaje especificado.

La independencia del contrato de servicio del servicio o de la implementación del cliente habilita los formularios siguientes de ejecución asincrónica en aplicaciones WCF:

• Los clientes pueden invocar operaciones de solicitud/respuesta asincrónicamente mediante un intercambio de mensajes sincrónico.
• Los servicios pueden implementar una operación de solicitud/respuesta asincrónicamente mediante un intercambio de mensajes sincrónico.
• Los intercambios de mensajes pueden ser unidireccionales, sin tener en cuenta la implementación del cliente o servicio.


Escenarios asincrónicos sugeridos

Use un enfoque asincrónico en una implementación de operación de servicio si la implementación del servicio de la operación realiza una llamada en bloque, como al realizar operaciones de E/S. En una implementación de operación asincrónica, intente llamar a métodos y operaciones asincrónicos para extender la ruta de acceso de la llamada asincrónica al máximo. Por ejemplo, llame a una BeginOperationTwo() desde BeginOperationOne().

• Use un enfoque asincrónico en una aplicación de cliente o que realiza la llamada en los casos siguientes:
• Si invoca operaciones desde una aplicación de nivel intermedio. (Para obtener más información acerca de estos escenarios, consulte Aplicaciones cliente de nivel intermedio.)
• Si invoca operaciones desde una página ASP.NET, use páginas asincrónicas.
• Si invoca operaciones desde cualquier aplicación de proceso simple, como Windows Forms o Windows Presentation Foundation (WPF). Si utiliza el modelo de llamada asincrónica basado en evento, el evento resultante se produce en el proceso de interfaz de usuario, agregando capacidad de respuesta a la aplicación sin que sea necesario controlar procesos múltiples.
• En general, si puede elegir entre una llamada sincrónica y una asincrónica, elija la asincrónica.


Llamadas asincrónicas del cliente

Una aplicación de cliente WCF puede utilizar uno o dos modelos de llamada asincrónica, ambos descritos en Asynchronous Programming Design Patterns:
• Operaciones asincrónicas que utilizan eventos.
• Operaciones asincrónicas que utilizan objetos System.IAsyncResult.

El primer enfoque, el modelo asincrónico basado en eventos, se recomienda para llamar a aplicaciones, ya que solo requiere agregar un controlador de eventos para recibir una notificación de la respuesta, y el evento resultante que se genera automáticamente en el proceso de la interfaz de usuario. Para aplicar este enfoque, especifique las opciones de comando /async y /tcv:Version35 con la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe), como en el ejemplo siguiente.

Copiar

svcutil http://localhost:8000/servicemodelsamples/service/mex /async /tcv:Version35
Una vez hecho esto, Svcutil.exe genera una clase de cliente WCF con la infraestructura de cliente que permite a la aplicación de llamada implementar y asignar un controlador de eventos para recibir la respuesta y realizar la acción apropiada. Para obtener un ejemplo completo, consulte Cómo llamar a operaciones del servicio WCF de forma asincrónica.
El modelo asincrónico basado en eventos, sin embargo, solo está disponible en Versión 3.5 de .NET Framework. Además, no está permitido ni en .NET Framework 3,5 cuando se crea un canal de cliente WCF mediante System.ServiceModel.ChannelFactory. Con objetos de canal de cliente WCF, debe utilizar objetos System.IAsyncResult para invocar sus operaciones asincrónicamente. Para aplicar este enfoque, especifique la opción de comando /async con la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe), como en el ejemplo siguiente.

Copiar

svcutil http://localhost:8000/servicemodelsamples/service/mex /async
Esto genera un contrato de servicio en el cual cada operación se modela como un método con la propiedad AsyncPattern establecida en true y un método correspondiente. Para obtener un ejemplo completo mediante ChannelFactory, vea Cómo llamar a operaciones de manera asincrónica mediante un generador de canales.

En cualquier caso, las aplicaciones pueden invocar una operación asincrónicamente aun cuando se implementa el servicio sincrónicamente, del mismo modo que una aplicación puede usar el mismo modelo para invocar de forma asincrónica un método sincrónico local. Cómo se implementa la operación no es significativo para el cliente; cuando llega el mensaje de respuesta, su contenido se envía al método de extremo asincrónico del cliente y el cliente recupera la información.

Implementaciones de operación asincrónica
Igualmente, una operación de servicio se puede implementar asincrónicamente mediante el modelo de programación asincrónico .NET Framework y marcando el método con la propiedad AsyncPattern establecida en true. En este caso, la operación asincrónica se expone en metadatos de la misma manera que una operación síncrona: se expone como una operación única con un mensaje de solicitud y un mensaje de respuesta correlativo. Los modelos de programación de cliente tienen entonces una opción. Pueden representar este modelo como una operación síncrona o como una asincrónica, siempre que se origine un intercambio de mensajes solicitud-respuesta cuando se invoque el servicio.

Para ver un ejemplo, consulte Cómo: Implementar una operación de servicios asincrónica.
Para definir una operación de contrato X que se ejecuta asincrónicamente sin tener en cuenta cómo se llama en la aplicación cliente:

• Defina dos métodos mediante el modelo BeginOperation y EndOperation.
• El método BeginOperation incluye parámetros in y ref para la operación y devuelve un tipo IAsyncResult.
• El método EndOperation incluye un parámetro IAsyncResult así como los parámetros ref y out y devuelve el tipo de valor devuelto de las operaciones.
Por ejemplo, vea el método siguiente.
VB
C#
C++
F#
JScript
Copiar
Este idioma no es compatible o no hay ningún ejemplo de código disponible.
VB
C#
C++
F#
JScript
Copiar
Function DoWork(ByVal data As String, ByRef inout As String, _
out outonly As out) As Integer
Para crear una operación asincrónica, los dos métodos serían:
VB
C#
C++
F#
JScript
Copiar
Este idioma no es compatible o no hay ningún ejemplo de código disponible.
VB
C#
C++
F#
JScript
Copiar
_
Function BeginDoWork(ByVal data As String, _
ByRef inout As String, _
ByVal callback As AsyncCallback, _
ByVal state As Object) _
As IAsyncResult

Function EndDoWork(ByRef inout As String, _
ByRef outonly As String, _
ByVal result As IAsyncResult) _
As Integer


Nota:
El atributo OperationContractAttribute se aplica solamente a los métodos de BeginDoWork. El contrato resultante tiene una operación WSDL denominada DoWork.

Modelos de intercambio de mensajes unidireccional

También puede crear un modelo de intercambio de mensajes asincrónico en el que las operaciones unidireccionales (las operaciones para las que System ServiceModel.OperationContractAttribute.IsOneWay es true no tienen ninguna respuesta puesta en correlación) se pueden enviar en cualquier dirección por el cliente o por el servicio, independientemente del otro lado. (Esto utiliza el modelo de intercambio de mensajes dúplex con mensajes unidireccionales.) En este caso, el contrato de servicio especifica un intercambio de mensajes unidireccional que cada parte puede implementar como llamadas asincrónicas o implementaciones, o no, según corresponda. Por lo general, cuando el contrato es un intercambio de mensajes unidireccionales, las implementaciones pueden ser muchas veces sincrónicas porque una vez se envía un mensaje, la aplicación no espera a una respuesta y puede continuar haciendo otro trabajo.

Clientes asincrónicos y contratos de mensajes basados en eventos
Las directrices de diseño del modelo asincrónico basado en eventos afirman que si se devuelve más de un valor, uno de los valores se devuelve como propiedad Result y los demás se devuelven como propiedades del objeto EventArgs. De esto resulta que si un cliente importa metadatos mediante opciones de comando asincrónicas basadas en eventos y la operación devuelve más de un valor, el objeto EventArgs predeterminado devuelve un valor como propiedad Result y el resto son propiedades del objeto EventArgs.
Si desea recibir el objeto del mensaje como propiedad Result y que los valores devueltos sean propiedades de ese objeto, use la opción de comando /messageContract. Esto genera una firma que devuelve el mensaje de respuesta como la propiedad Result del objeto EventArgs. Todos los valores de devolución internos se convierten, pues, en propiedades del objeto de mensaje de respuesta.

jueves, 17 de junio de 2010

NAVEGADOR DE INTERNET

NAVEGADOR DE INTERNET


I. Historia del navegador de Internet
Docenas de innovadores navegadores de Internet han sido desarrollados a lo largo de los últimos años por muchas personas y equipos.
El primer navegador de Internet ampliamente usando fue el NSCA Mosaic. El grupo de programación del Mosaic entonces desarrolló el primer navegador de Internet comercial llamado Netscape Navigator, mas tarde renombrado Communicator, y finalmente llamado solamente Netscape. Este navegador fue el mas utilizado entre la gente hasta que llegó Microsoft Internet Explorer entro en escena en 1999, con una amplia distribución. En el 2002, una versión de Netscape de código libre fue creada con el nombre de Mozilla, el cual era el nombre interno del antiguo navegador Netscape.
Desde entonces, Mozilla se ha introducido bastante bien en el mercado, particularmente en plataformas ajenas a Windows gracias a su base de código abierto. En el 2004 fue lanzada en la popular versión de Firefox.

II. ¿Qué es un navegador de internet?
Un navegador o navegador web (del inglés, web browser) es un programa que permite visualizar la información que contiene una página web (ya se encuentre ésta alojada en un servidor dentro de la World Wide Web o en un servidor local).
El navegador interpreta el código, HTML generalmente, en el que está escrita la página web y lo presenta en pantalla permitiendo al usuario interactuar con su contenido y navegar hacia otros lugares de la red mediante enlaces o hipervínculos.



III. DIFERENTES TIPOS DE NAVEGADORES

A. BROWSERS en Modo Texto: Los primeros browsers de Web no hacían uso de multimedia, fueron llamados browsers en modo texto, no eran muy cómodos de usar pero cumplían su propósito. Estos browsers siguen siendo utilizados por usuarios que poseen ordenadores antiguos o con poca potencia, que no permiten el manejo de gráficos. Uno de los browsers más populares perteneciente a esta categoría es el browser de línea desarrollado por el CERN, que trabaja en ordenadores bajo los sistemas operativos UNIX, VMS y VC/VMS.


B. BROWSERS Gráficos: Los browsers que han dado la popularidad a Web son los browsers gráficos. El primero perteneciente a esta categoría fue el NCSA Mosaic. Entre los actuales pueden encontrarse Cello, WinWeb, el browser de Prodigy, Netscape y Explorer. Entre ellos, algunos son de libre distribución y otros no.
Una pregunta lógica es porqué hay gente que compra un browser de Web cuando algunos son gratis. La razón principal es que el comprador puede ignorar que existen que tener una conexión con Internet, pero es necesario el programa para conectarse. La razón más probable de comprar un browser es que el comprador prefiere adquirirlo de un vendedor que le proporcionará soporte técnico del producto, lo cual es una necesidad para muchos usuarios, además, al comprar un producto comercial se tiene derecho a disfrutar del soporte comercial. Se estudiará a continuación, de manera resumida, algunos de los browsers disponibles de forma gratuita.

C. MOSAIC: Fue el primer browser gráfico. Existen versiones para UNIX y Macintosh de forma que Mosaic se convierte en una solución para plataformas cruzadas. A Mosaic se le ha llamado el “matador” de Internet porque proporciona un acceso muy sencillo a World Wide Web, así como a otros servicios de Internet.
El 12 de Diciembre de 1994 la revista Fortune distinguió a Mosaic nombrándolo Producto del Año 1994. La revista escribió “este programa está transformando a Internet en una red manejable que conecta con sencillez a usuarios y servidores”. Se puede estar seguro de que cuando una publicación de este tipo alaba a una aplicación, es que ésta es de rabiosa actualidad. Mosaic fue desarrollado en el National Center for Supercomputing Applications (de donde viene NCSA). Fue diseñado por estudiantes y se puso a disposición del público de forma gratuita; con frecuencia aparecen nuevas versiones del producto.

D. CELLO: Fue diseñado por Thomas R. Bruce del Instituto de Información Legal de la Universidad de Cornell. Es una buena alternativa para aquellos usuarios que no tengan ordenadores con gran potencia pues necesita menos espacio disponible en disco y no parece ralentizar el ordenador en que se ejecuta más que otras aplicaciones sencillas.
Cello permite adaptar a las preferencias personales del usuario el aspecto de las páginas iniciales de Web. También permite manejar listas de ”bookmarks” que facilitan el acceso a Web para usuarios noveles. Estas listas contienen una serie de direcciones de páginas iniciales mostradas por orden alfabético. Además, el sistema de ayuda de Cello está incluido en el programa por lo que no deberá conectarse a la dirección Web donde lo consiguió cada vez que tenga una duda sobre como manejarlo. Otros browsers obligan a que el usuario se conecte a Web cada vez que desee consultar algo en su sistema de ayuda. Aunque este último modo de proceder proporcionará siempre una información actualizada del producto, implica la necesidad de conectarse a Web, y si todavía no se sabe manejar el browser volvemos a toparnos con la contradicción de siempre.

E. WINWEB: Está disponible gracias a EINet, donde reside el servidor de Internet denominado EINet Galaxy. La versión de Windows de este producto se diseñó posteriormente a la de Macintosh (MacWeb).
WinWeb proporciona las funciones básicas necesarias para conectarse a Web, pero no se trata de un programa especialmente potente. Otro aspecto negativo del programa es que no parece trabajar tan rápido como lo hacen otros browsers. Por ejemplo, al pulsar un hiperenlace se presenta un cuadro de diálogo indicando que el documento se está recuperando, pero realmente no se sabe nada de lo que está pasando. Otros browsers visualizan un gráfico o una barra de progreso que indica al usuario el porcentaje de transferencia que ya ha sido realizada. Cuando se conecte al servicio Web resulta de gran interés el hecho de conocer si los datos se están transmitiendo correctamente desde un punto a otro. En ciertas ocasiones, puede suceder que esté intentando conectarse a un servidor que no esté funcionando. En la mayoría de las ocasiones recibirá un mensaje de aviso pero, probablemente, tenga que esperar algunos minutos antes de que aparezca por pantalla. Cuando se le informe con frecuencia del porcentaje de página inicial que ha sido cargada ya en la memoria de su ordenador y no se muestre nada en su monitor, podrá abortar el proceso con la seguridad de que algo está fallando.

F. NAVEGADOR NETSCAPE: El browser Netscape Navigator fue diseñado por Marc Andreessen, que creó el prototipo de NCSA Mosaic siendo estudiante en NCSA. Una vez graduados él y uno de sus compañeros de promoción, fueron contratados por Jim Clark, ex-director general de Silicon Graphics, para crear una nueva empresa de informática cuyo principal objetivo sería desarrollar programas para Web. Netscape Navigator incluye un marcador que indica el porcentaje del proceso de transferencia que ya ha sido realizado. El programa indica cuándo consigue conectarse a un servidor, visualiza el número total de bytes que hay que importar y mantiene la cuenta de los que ya han sido recibidos. Al recibir imágenes de las páginas iniciales lo hace por partes, esto es, en lugar de esperar a que aparezca la imagen completa, comienza por visualizar una imagen de baja resolución y, posteriormente, la actualiza tres o cuatro veces hasta que se ve perfecta. Realmente, el usuario tiene la sensación de contemplar cómo se va generando el gráfico. Estos indicadores son realmente interesantes. Es destacable la forma en que Netscape maneja la lista de bookmarks ya que se visualizan como opciones adicionales de uno de los menús. Por lo tanto, conectarse a una de estas direcciones se convierte en un juego de niños (se despliega el menú y se elige la dirección deseada). Netscape Navigator también es compatible con ciertas extensiones del lenguaje HTML utilizado para la elaboración de páginas Web que, en la actualidad, emplean ya muchos servidores de Web.

G. PRODIGY: Fue el primer servicio telefónico comercial en proporcionar acceso a Web. Se formó como una compañía con la aportación de Sears e IBM y lleva funcionando unos cuantos años. Desde el principio, Prodigy se ha situado dentro del mercado de los servicios telefónicos orientados a la familia. Debido a esto, no ha tenido tanto éxito como otros negocios más generales. El browser Web de Prodigy genera una ventana independiente y tiene un aspecto distinto al del resto del servicio Prodigy. El browser de Prodigy para Windows se parece mucho a Mosaic y Netscape Navigator. Cuenta con la función de almacenamiento en disco de las páginas Web previamente visualizadas. Cuando se quiere volver a examinar una página inicial recuperada momentos antes, es posible encontrar su información en nuestro disco duro y, por lo tanto, no es necesario tener que esperar para volver a mostrarla por pantalla. Otra característica muy interesante de este browser es que muestra todo el texto contenido en una página antes de proceder a importar las imágenes, con lo que agiliza la navegación por Web.

H. NETCRUISER: Este programa proporciona todo lo necesario para la conexión a Internet. El programa provee no sólo el browser de Web sino también los programas necesarios para acceder al correo electrónico, Gopher, grupos de debate, ftp y telnet. El browser NetCruiser cuenta con las funciones básicas necesarias para navegar por Web, incluyendo la capacidad de almacenamiento en disco de las páginas vistas previamente, graba el contenido de páginas iniciales en el disco duro para su posterior edición y crea listados de bookmarks de los centros Web más interesantes.
Con el programa NetCruiser no necesitará contar con ningún otro programa para acceder a Internet. Esta aplicación por sí misma proporciona todo lo necesario en un único producto.

I. INTERNET EXPLORER: El nuevo Explorer 5 es la última versión del conocido navegador web de Microsoft. Sus posibilidades en el trabajo con Internet y su integración con Windows, lo convierten en una buena herramienta, al aunar las capacidades avanzadas de la Red y del sistema operativo de Microsoft. Explorer dispone de modernas posibilidades, conjuntando un manejo cómodo, con buenas prestaciones. Así, aumenta en velocidad al visitar las páginas y visualizar sus elementos, es compatible con las aplicaciones Java y contenidos activos modernos, permite el manejo de formatos multimedia, mejora en el campo de la seguridad en la navegación, es capaz de gestionar los canales y páginas locales, etc. Esto se realiza mediante una interfaz gráfica funcional, siguiendo la estructura de menús y barras de herramientas, que es posible personalizar, para adecuarlas a las diferentes necesidades.

IV. La influencia del navegador
Cuando muchos de nosotros iniciamos en el mundo del Internet y paginas web, a mediados y finales de la década de los 90, la variedad y diversidad de navegadores web era casi nula, teníamos poco o nada de donde escoger para navegar a través de la red mundial. Quitando a Mosaic, y su variación Spyglass que más tarde se convertiría en Internet Explorer, Netscape dominaba el mercado casi en su totalidad, en cada PC en la que nos sentábamos en aquellos años encontrábamos el curioso icono del “Timón” que aparecía en nuestro escritorio y nos llevaba al famoso Internet del que muchos hablaban pero pocos conocían.

V. Enlaces externos
A. General

• Funciones del navegador
• Primer navegador web Descripción e imágenes (en inglés)
• Historial de navegadores Línea de tiempo entre 1993-2003 (en inglés)
• Fechas de publicación de las versiones de navegadores Fechas de publicación de los principales navegadores web a lo largo de la historia
B. Noticias
• BBC Mundo - Internet Explorer pierde terreno