[patrones] Observer Pattern Remoto
Hola gente! Me alegro, Leandro, que te haya interesado… Una aclaracion: no tiene nada que ver con Biztalk, con el Biztalk que conocemos como producto. Por alguna razón lo llamaron asi a Biztalk Service (algún genio del marketing… J), pero creo que le van a cambiar el nombre, algo bajo el paraguas del proyecto con nombre clave Zurich. Pero aparte del nombre, no usa nada de Biztalk de tu lado. Del lado del servidor de Microsoft, usa nuevas tecnologías, no vi que estuviera el producto Biztalk involucrado. Desconozco el tema precios, cuando sea liberado, como se va a ofrecer, o si ya hay una lista de precios, si va a ser como los servicios de Amazon, mi desconocimiento en el tema es total. Lo mismo de Biztalk Services, lo “taguie” como zurich: http://delicious.com/ajlopez/zurich http://delicious.com/ajlopez/zurich Una explicación de hacia donde apunta Zurich, Ray Ozzie, y las movidas que vienen en: Ozzie foreshadows ‘Zurich,’ Microsoft’s elastic cloud http://blogs.zdnet.com/microsoft/?p=1503 http://blogs.zdnet.com/microsoft/?p=1503 Nos leemos! Angel “Java” Lopez http://www.ajlopez.com/ From: patrones@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of Leandro Tuttini Sent: Friday, September 05, 2008 12:27 PM To: patrones List Member Subject: [patrones] Observer Pattern Remoto
[patrones] Observer Pattern Remoto
Hola Leandro, Mirá yo no soy arquitecto, y no se si tu solución será la óptima; pero para hacer lo que queres de abrir puertos etc, lo que podrías es crear una VPN entre el server Web y tus clientes; y de esta forma crear una zona segura con puertos abiertos. Una herramienta de la gente de LogMeIn que te permite hacer esto es Hamachi, tiene dos version, una gratuita y otra paga. Es sólo un granito de arena Saludos! Walter G. Poch .NET Developer Cell: +54 (9 341) 3353273 e-Mail: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] Skype: walter.poch wpoch.com.ar From: Leandro Tuttini Sent: Thursday, September 04, 2008 10:36 AM To: patrones List Member Subject: [patrones] Observer Pattern Remoto Hola que tal. Queria plantear una situacion a ver que cosnejos me dan, y si es posible implementarla. La idea es aplicar el patron observer pero de forma remota. Planteo el escenario: Tengo una aplicacion expuesta en la web, que expone una aplicacion web y varios servicios, usando wcf y asmx, es indistinto. Por otro lado tengo aplicaciones de escritorio que estan dentro de un red local, y tienen salida a internet para utilizar la aplicacion. Resulta que ante cierta operacion con la aplicacion se deberia procesar la logica de negocio (en el servidor remoto) y lanzar una impresion en ciertos print server (que se encuentran locales en el red), esto ultimo de imprimir es solo una idea, puede se que mas adelante se necesite para enviar otras cosas comos e un cash dispenser, o alertas, etc. La cuestion es que los clientes tienen salida a internet con lo cual pueden acceder a la aplicacion y sus servicios, pero desde el servidor expuertos en la web no me puedo comunicar hacia adentro de la empresa, ya que como sabran hay firewall y demas aspectos de seguridad. Nota: el cliente no tiene servicio expuestos en la web, ni posee infraestructura para poder tenerlos, es por eso que la aplicacion esta hosteada en servidores de terceros expuestos a internet, con toda la seguridad que esto requiere (uso de SSL, etc) Entonces que pense, desarrollar un servicio de windows que corrar en los sevidores de impresion o en alguna otro pc local a la empresa y que al iniciarse se subscriba mediante la llamada a un servicio web, pasandoles la informacion de su localizacion, esto se puede sin problemas ya que se tiene salida. Ahora la otra pata es la compleja y por la cual queria consultar, como comunico el servidor con el servicio corriente en las maquians locales, habia pensado implementar algo parecido a los que hace la aplicacion de LogMeIn (https://secure.logmein.com/home.asp). Creo que por ahi saben como funciona, se descarga un cliente que envia info a un servidor para registrase, y cuando entra una peticion el server es el que se contacta con el cliente, y lo mas interesante es que pasa todos los firewall sin necesidad de abrir puertos. Esto me permitiria que al procesar en el servidor enviar un mensaje al servicio de windows (que se registro) para que imprima localmente o envie un mensaje, o etc. Se que me diran que realice un servicio que cada cierto tiempo realice una consulta a un servicio web para ver si tiene alguna peticion que puede estar almacenada en un msqueue, o en una table en la db; pero justamente por eso consulto por el patron observer, es mas linda la solucion, ya que los clientes se subscriben y desde el servidor se envian los mensajes, ante un evento La pregunta es: tienen idea como se puede implementar algo similar a como funciona logmein, y como es que este servicio puede funcionar sin que los firewalls le molesten e identificar una pc en particular. Bueno cualquier sugerencia sera de gran ayuda. Saludos ¡Buscá desde tu celular! Yahoo! oneSEARCH ahora está en Claro http://ar.mobile.yahoo.com/onesearchEmoticon1.gif
[patrones] Observer Pattern Remoto
Hola Leandro. Pregunto: ¿no te sirve usar un servicio tipo DynDNS para que desde fuera se vea un servidor de la empresa? Incluso podes mapear puertos del router a determinado puerto e IP interno. Te digo esto porque por ejemplo, nosotros porbamos de acceder a un SQL Server interno, desde internet usando DynDNS y funcionó de 10, aunque tenés el tema de la seguridad (que no sería mayor problema si en la empresa pones un web service que haga el trabajo) Saludos El 4 de septiembre de 2008 10:54, Alejandro G. Jack [EMAIL PROTECTED]escribió: Event Broker, Remoting *From:* patrones@mug.org.ar [mailto:[EMAIL PROTECTED] *On Behalf Of *Leandro Tuttini *Sent:* Thursday, September 04, 2008 10:36 AM *To:* patrones List Member *Subject:* [patrones] Observer Pattern Remoto Hola que tal. Queria plantear una situacion a ver que cosnejos me dan, y si es posible implementarla. La idea es aplicar el patron observer pero de forma remota. Planteo el escenario: Tengo una aplicacion expuesta en la web, que expone una aplicacion web y varios servicios, usando wcf y asmx, es indistinto. Por otro lado tengo aplicaciones de escritorio que estan dentro de un red local, y tienen salida a internet para utilizar la aplicacion. Resulta que ante cierta operacion con la aplicacion se deberia procesar la logica de negocio (en el servidor remoto) y lanzar una impresion en ciertos print server (que se encuentran locales en el red), esto ultimo de imprimir es solo una idea, puede se que mas adelante se necesite para enviar otras cosas comos e un cash dispenser, o alertas, etc. La cuestion es que los clientes tienen salida a internet con lo cual pueden acceder a la aplicacion y sus servicios, pero desde el servidor expuertos en la web no me puedo comunicar hacia adentro de la empresa, ya que como sabran hay firewall y demas aspectos de seguridad. Nota: el cliente no tiene servicio expuestos en la web, ni posee infraestructura para poder tenerlos, es por eso que la aplicacion esta hosteada en servidores de terceros expuestos a internet, con toda la seguridad que esto requiere (uso de SSL, etc) Entonces que pense, desarrollar un servicio de windows que corrar en los sevidores de impresion o en alguna otro pc local a la empresa y que al iniciarse se subscriba mediante la llamada a un servicio web, pasandoles la informacion de su localizacion, esto se puede sin problemas ya que se tiene salida. Ahora la otra pata es la compleja y por la cual queria consultar, como comunico el servidor con el servicio corriente en las maquians locales, habia pensado implementar algo parecido a los que hace la aplicacion de LogMeIn (https://secure.logmein.com/home.asp). Creo que por ahi saben como funciona, se descarga un cliente que envia info a un servidor para registrase, y cuando entra una peticion el server es el que se contacta con el cliente, y lo mas interesante es que pasa todos los firewall sin necesidad de abrir puertos. Esto me permitiria que al procesar en el servidor enviar un mensaje al servicio de windows (que se registro) para que imprima localmente o envie un mensaje, o etc. Se que me diran que realice un servicio que cada cierto tiempo realice una consulta a un servicio web para ver si tiene alguna peticion que puede estar almacenada en un msqueue, o en una table en la db; pero justamente por eso consulto por el patron observer, es mas linda la solucion, ya que los clientes se subscriben y desde el servidor se envian los mensajes, ante un evento La pregunta es: tienen idea como se puede implementar algo similar a como funciona logmein, y como es que este servicio puede funcionar sin que los firewalls le molesten e identificar una pc en particular. Bueno cualquier sugerencia sera de gran ayuda. Saludos -- ¡Buscá desde tu celular! Yahoo! oneSEARCH ahora está en Claro http://ar.mobile.yahoo.com/onesearch
[patrones] Observer Pattern Remoto
Leete esto Distributed Systems Patterns http://msdn.microsoft.com/en-us/library/ms998483.aspx Broker http://msdn.microsoft.com/en-us/library/ms978706.aspx Context Many complex software systems run on multiple processors or distributed computers. There are a number of reasons to distribute software across computers, for example: · A distributed system can take advantage of the computing power of multiple CPUs or a cluster of low-cost computers. · Certain software may only be available on specific computers. · Parts of the software may have to run on different network segments due to security considerations. · Some services may be provided by business partners and may only be accessed over the Internet. However, implementing a distributed system is not easy because you have to deal with issues such as concurrency, cross-platform connectivity, and unreliable network connections. Problem How can you structure a distributed system so that application developers don't have to concern themselves with the details of remote communication? Forces The following forces must be reconciled as you build a distributed system: · Although distributed systems provide a lot of advantages, they also tend to introduce significant complexity into the software system. Physical and logic boundaries exist between processes or computers running on the same network. To have objects running on different processes or computers communicating with each other across these boundaries, you have to deal with issues such as communications, encoding, and security. If you mix these implementation details with the application code, a simple change in the communications infrastructure could lead to significant code changes. · The distribution of the system often occurs after development is complete. For example, software may be distributed across multiple servers to increase processing power. You would not want to change the application code at this late a stage in the life cycle. · The details of cross-process communication can be quite tedious. You have to deal with TCP/IP sockets, marshaling and unmarshaling, serialization, timeouts, and many other challenges. Therefore, it makes sense to have a special team focus on the infrastructure so that the application developers do not have to learn about remote communications. · To maintain the flexibility of being able to move components to different locations at deployment time, you must avoid hard-coding the location of specific components. Esto viene de aca y ted a un marco teorico base Enterprise Solution Patterns Using Microsoft .NET http://msdn.microsoft.com/en-us/library/ms998469.aspx despues pasa a CAB -Event Broker: Pub-Sub for your components http://blogs.msdn.com/edjez/archive/2005/04/20/CABEventBroker101.aspx aunque sea smart client te sirven los conceptos Smart Client - Composite UI Application Block http://msdn.microsoft.com/en-us/library/aa480450.aspx From: patrones@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of Leandro Tuttini Sent: Thursday, September 04, 2008 10:36 AM To: patrones List Member Subject: [patrones] Observer Pattern Remoto Hola que tal. Queria plantear una situacion a ver que cosnejos me dan, y si es posible implementarla. La idea es aplicar el patron observer pero de forma remota. Planteo el escenario: Tengo una aplicacion expuesta en la web, que expone una aplicacion web y varios servicios, usando wcf y asmx, es indistinto. Por otro lado tengo aplicaciones de escritorio que estan dentro de un red local, y tienen salida a internet para utilizar la aplicacion. Resulta que ante cierta operacion con la aplicacion se deberia procesar la logica de negocio (en el servidor remoto) y lanzar una impresion en ciertos print server (que se encuentran locales en el red), esto ultimo de imprimir es solo una idea, puede se que mas adelante se necesite para enviar otras cosas comos e un cash dispenser, o alertas, etc. La cuestion es que los clientes tienen salida a internet con lo cual pueden acceder a la aplicacion y sus servicios, pero desde el servidor expuertos en la web no me puedo comunicar hacia adentro de la empresa, ya que como sabran hay firewall y demas aspectos de seguridad. Nota: el cliente no tiene servicio expuestos en la web, ni posee infraestructura para poder tenerlos, es por eso que la aplicacion esta hosteada en servidores de terceros expuestos a internet, con toda la seguridad que esto requiere (uso de SSL, etc) Entonces que pense, desarrollar un servicio de windows que corrar en los sevidores de impresion o en alguna otro pc local a la empresa y que al iniciarse se subscriba mediante la llamada a un servicio web, pasandoles la informacion de su localizacion, esto se puede sin problemas ya que se tiene salida. Ahora la otra pata es la compleja y por la cual queria consultar, como comunico el servidor
[patrones] Observer
Hola gente! Leandro, gracias por el dato, ya lo estoy agregando a mis enlaces de delicious (delicious es adictivo...:-) Bien, no vi algo asi en .NET, pero en el articulo que te habia mencionado mas abajo http://msdn.microsoft.com/msdnmag/issues/06/10/wcfessentials/default.aspx encontraran la forma de establecer un Http Dual (si, como Florencia de la V chiste para argentinos...no pude contenerme :-) Nos leemos! Angel Java Lopez http://www.ajlopez.com/ - Original Message - From: Leandro Tuttini To: patrones List Member Sent: Tuesday, February 27, 2007 3:49 PM Subject: [patrones] Observer Hola, que tal. No existe algo similar a esto en .NET Build asynchronous applications with the Distributed Event-Based Architecture for Web Services http://www-128.ibm.com/developerworks/webservices/library/ws-dbarch/?Openca=daw-ws Se trata de DEBA - Distributed Event-Based Architecture Este permite por ejemplo implementar un observer sobre web services, pero creo que va mas alla ya que esta orientado a objetos distribuidos. No se migro algo parecido a .net, jeje, lo pregunto porque como se migran tanto proyectos de java por ahi algo como esto es util, aunque veo que es complejo. Por ahi se puede implementar algo similar adaptando WCF, es posible? Saludos Angel \Java\ Lopez [EMAIL PROTECTED] escribió: Hola gente! Leandro, WCF hace bidireccion sobre algunos transportes, no sobre todos. Pueden ver algun detalle mas explicativo que esta corta respuesta en http://msdn.microsoft.com/msdnmag/issues/06/10/wcfessentials/default.aspx En cuanto al caso remoto de Observer preguntas por la interfaz en el cliente? Por abajo se puede implementar un objeto cliente que converse con el objeto Observador que esta en el servidor. En el servidor, el que observa es este objeto, y en cuanto recibe algo, le hace callback al objeto en el cliente. Nos leemos! Angel Java Lopez http://www.ajlopez.com/ - Original Message - From: Leandro Tuttini To: patrones List Member Sent: Tuesday, February 20, 2007 9:51 AM Subject: [patrones] Observer Angel que tal. Me dejaste pensando sobre el comentario de WCF y el canal bidireccional. Como se implementaria esto si se tratara de una aplicarlo sobre el protocolo http, sea mediante servicios web. Entiendo que WCF abstrae de la implementacion fisica del servicio, o sea pudiendo cambiar de HTTP, a TCP, o MSQ, etc. En FTP entiendo que el framework deje escuchando en un puerto determinado, pero en http, no me cierra como queda escuchando sobre el puerto 80 sabiendo que este si se encuentra en una WAN seguro un firewall impedira esto. Segun vi el patron observer hace uso de un interfaz para disminuir el acoplamiento si es remoto no me cierra como interviene la interfaz. A que me refiero como registrar la referencia al objeto remoto. Implementar Observer remoto, no seria casi como estar en una arquitertura orientada a eventos? En donde objetos remotos se subscriben a eventos que les interesan. Gracias por la respuesta. Saludos Angel \Java\ Lopez [EMAIL PROTECTED] escribió: Hola gente! Tema interesante, respuesta rapidisima... - Ahora con WCF (Windows Communication Framework), podemos implementar un canal bidireccional, entre dos AppDomains, asi que uno puede escuchar al otro - El Observer puede servir para alertar a otro sistema o parte de nuestra aplicacion, de algo que le interese. No necesariamente es una presentacion, puede ser, digamos, un sistema de CRM que quiere enterarse que hay una nueva venta... - El Observer local podria igual distribuir remotamente, algun evento... Recuerdo alguna implementacion con Remoting... Podria dejar tambien algo en una cola de mensajeria, para que alguien remoto se entere de algo, por ejemplo el CRM se entere de una nueva venta - Un Observer local podria grabar algo, como un Event Log, o algo de WMI y eso luego ser tomado y procesado mas adelante - Me daria una vuelta por http://www.martinfowler.com/eaaDev/OrganizingPresentations.html http://www.martinfowler.com/eaaDev/MediatedSynchronization.html en caso de no tener miedo a quedarme pegado con todos los temas interesantes que ahi se tratan - Le daria un vistazo a Enterprise Service Bus para un tema mas grande y fascinante... debe haber algo en http://www.ajlopez.net/Busqueda.php?Filtro=esb Y para integracion entre aplicaciones, como siempre www.integrationpatterns.com Nos leemos! Angel Java Lopez http://www.ajlopez.com/ - Original Message - From: Leandro Tuttini To: patrones List Member Sent: Monday, February 19, 2007 5:17 PM Subject: [patrones] Observer Que
[patrones] Observer
Hola gente! Tema interesante, respuesta rapidisima... - Ahora con WCF (Windows Communication Framework), podemos implementar un canal bidireccional, entre dos AppDomains, asi que uno puede escuchar al otro - El Observer puede servir para alertar a otro sistema o parte de nuestra aplicacion, de algo que le interese. No necesariamente es una presentacion, puede ser, digamos, un sistema de CRM que quiere enterarse que hay una nueva venta... - El Observer local podria igual distribuir remotamente, algun evento... Recuerdo alguna implementacion con Remoting... Podria dejar tambien algo en una cola de mensajeria, para que alguien remoto se entere de algo, por ejemplo el CRM se entere de una nueva venta - Un Observer local podria grabar algo, como un Event Log, o algo de WMI y eso luego ser tomado y procesado mas adelante - Me daria una vuelta por http://www.martinfowler.com/eaaDev/OrganizingPresentations.html http://www.martinfowler.com/eaaDev/MediatedSynchronization.html en caso de no tener miedo a quedarme pegado con todos los temas interesantes que ahi se tratan - Le daria un vistazo a Enterprise Service Bus para un tema mas grande y fascinante... debe haber algo en http://www.ajlopez.net/Busqueda.php?Filtro=esb Y para integracion entre aplicaciones, como siempre www.integrationpatterns.com Nos leemos! Angel Java Lopez http://www.ajlopez.com/ - Original Message - From: Leandro Tuttini To: patrones List Member Sent: Monday, February 19, 2007 5:17 PM Subject: [patrones] Observer Que tal, queria plantear la siguiente consulta. Resulta que esto repasando el libro de Larman, UML y Patrones, y me surgen alguans dudas que queria plantear. En muchos ejemplo hace referencia a que el dominio podria hacer uso del patron Observer para enviar alertas a la presentacion, cuando comenta esto lo hace junto a una aplicacion confeccionada en Swing. Esto ultimo me parecio raro ya que a medida que avanza despues habla de distribuido pero hasta dodne se el Observer solo funciona si esta en el mismo AppDomain, o sea presentacion y Dominio corriendo en el mismo proceso. Ahora bien como se aplicaria este mismo concepto si se tratara de una aplicacion distribuida, o web, es viable? Que alternativas hay para que el negocio informe a la presentacion de cambios?. Si no se puede utilizar el observer en con al presentacion, en que otros casos se usaria?, la verdad mucha utilidad no le veo, mejor dicho no encuentro ejemplos mas claros, salvo con al presentacion. Bueno seria esto simplemente. Saludos -- Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). Probalo ya!