Pregunta

Así que estamos construyendo un sistema de punto de venta personalizado, alojado localmente (en el sitio de los clientes), nada fuera de lo común. Es todo .NET, C # y SQL Server.

Uno de los requisitos es que el sistema permite que los pedidos también se tomen por Internet. Por varias razones (fiabilidad / velocidad de conexión, copias de seguridad, estabilidad, mantenimiento, etc.), el portal web se alojará fuera del sitio, con alguna empresa de alojamiento web estándar.

Los detalles del producto están en la base de datos local y, por lo tanto, debemos sincronizar de alguna manera la base de datos del sitio web externo con estos datos. Tiene que ser seguro, obviamente, y no demasiado ancho de banda.

Se nos ocurrió una solución que minimiza la exposición de la base de datos local al mundo exterior:

  • la aplicación web no puede acceder a nada desde la aplicación local.
  • la única forma en que los datos se pueden mover es mediante un envío enviado desde la aplicación local a la aplicación web.
  • lo único que puede hacer la aplicación web es enviar una notificación a la base de datos local de que se ha tomado un nuevo pedido. La aplicación local se conectará a la aplicación externa y extraerá los detalles del pedido.

Así que estábamos pensando en un diseño como este, usando servicios web y simplemente definiendo acciones básicas en la aplicación web como addProduct (id, bla, bla, bla)

Pero luego tenemos que escribir rutinas para mantener las cosas sincronizadas, como si un producto se elimina de la aplicación local, pero la aplicación externa no está disponible temporalmente, etc., etc ...

¿Es este un enfoque razonable, o hay una mejor manera?

¿Fue útil?

Solución

Este es un caso en el que SOA me parece aplicable. Me gustaría exponer ciertas funciones de la aplicación POS utilizando WCF. Esto tiene al menos lo siguiente:

  • puede reutilizar la funcionalidad del sistema POS en lugar de duplicar partes del mismo en el sitio web
  • Usando, por ejemplo, un enlace MSMQ, puede funcionar en situaciones desconectadas
  • WCF tiene excelentes mecanismos de seguridad, soporte transaccional, etc. ...

de esta manera terminaría agregando una gran cantidad de valor al sistema POS en lugar de hacer un acoplamiento único entre el POS y el sitio web.

Para obtener más información sobre WCF, puedo recomendar Programación de servicios WCF de Juval Lowy

Otros consejos

Realmente no es una respuesta a su pregunta directamente ... ¿Trataría de instalar un túnel VPN entre los dos sitios, y si no puede, intente usar un túnel SSH?

Además de que la seguridad es simplemente buena, se abren muchas más opciones una vez que la VPN está allí, en mi experiencia, ya que las cosas que anteriormente habrían sido demasiado inseguras para considerarlas son pensar en el trabajo.

@olle Esto parece prometedor. Un problema es que el portal en línea de conexión en blanco y negro y la aplicación local no son confiables. Sin embargo, aún queremos poder tomar pedidos cuando el enlace está inactivo. Entonces, creo que vamos a usar WCF en la aplicación web para leer datos del servidor y almacenarlos en la memoria caché en tablas locales. La aplicación web solicitará datos a través de una capa intermedia, que sirve el contenido de las tablas almacenadas en caché si la llamada WCF no regresa en poco tiempo. Si regresa con éxito, el caché se borrará y se reemplazará con los resultados. ¿Suena como un plan?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top