Pregunta

Ir recompensa!

Esta pregunta me ha ganado una insignia rodadora (7 visitas en 7 días!), Que es de alguna manera una fuerte confirmación de que Navision tiene una cuota de mercado muy limitado, lo que - sospecho - debe ser una confirmación de Navision es ni toda esa gran pieza de software ...

Pero bueno ... eso es lo que tenemos como un back-end, así que estoy listo para luchar con esto. : -O

Si hay algún desarrollador de Navision atrevida que es capaz de arrojar luz sobre esto ... la recompensa está allí para usted! :)


Post original

Me han puesto en marcha recientemente un sistema de comercio electrónico más complejo que ha sucedido interactúa con un back-end legado basado en Navision 5. Hasta ahora, el intercambio de datos entre los dos plataforma a través de archivos XML, pero este método es bastante torpe y muy propenso a los accidentes.

Nuestras necesidades son:

  1. exponer a ciertos elementos de la lógica de negocio de cada plataforma a la otra (por ejemplo: "¿cuál es la cantidad total comprado alguna vez por este cliente?", "¿Cuáles son los productos que actualmente se ofrecen ?", "¿cómo muchos nuevos clientes se han registrado en la página web?", etc ...).
  2. cuenta con mecanismos de retroalimentación / validación para las diferentes operaciones (por ejemplo: "Este es el nuevo pedido de cliente X" ... "Entendido, el pedido ahora comenzará a ser procesado" ... "Ok, copia que, adiós!").
  3. Si es posible, evitar jugar un poco con los archivos , pero manteniendo todo esto sucede en términos de llamadas / puertos / servicios ...

La forma más natural que podía pensar sería integrar los dos sistemas a través de servicio web, pero Navision 5 no es compatible de forma nativa. Así que hice mi "diligencia debida" y encontré algunas cosas en MSDN incluyendo este artículo y este otro .

De acuerdo con estos artículos no debería ser tan difícil de crear un servicio web en Navision 5 , pero cuando me sugirió esta solución para el equipo encargado del sistema heredado, nos dijeron que es "teoría pura" y no sé de nadie que alguna vez puso en práctica.

No tengo ninguna razón para dudar de su palabra, pero kilometraje puede variar ... y pensé que a lo mejor en la comunidad por lo que no son profesionales de otros países que implementaron algo similar y están disponibles para compartir su experiencia.

Por lo tanto, mi pregunta es de dos dobla:

  1. ¿Hay alguien que ha intentado esto en casa y estaría disponible para compartir un poco de lo que han sido las mayores dificultades, si el resultado final es fiable, si creen que el resultado vale la pena el esfuerzo, etc ...?
  2. ¿Hay alguien que se enfrentó a un problema similar, pero lo resolvió con un enfoque diferente y que estaría disponible para presentar su solución ( "Nunca hice yo mismo, pero si tuviera que hacerlo lo haría como esto .. ." tipo de respuestas también son bienvenidos)?

Gracias de antemano por su tiempo! :)

¿Fue útil?

Solución

Yo también se interrumpiría con una respuesta no muy útil acerca de Nav 6:)

Me acaba de completar un proyecto utilizando Nav 6. Sorprendentemente, los servicios web son muy fáciles de exponer y consumir. Es realmente una cuestión trivial para ir a buscar un objeto en los servicios web de interfaz y marcar una casilla para indicarle que debe exponerse.

Unsuprisingly, los servicios web no funcionan como era de esperar, usted tiene que utilizar a menudo un poco de ensayo y error para obtener objetos y propiedades de persistir, ya que es muy delicado en cuanto a la secuencia de eventos que se utiliza para guardar y objeto. Y cada objeto parece que funciona de forma ligeramente diferente. por ejemplo: Para crear un cliente, al final me enteré de que usted tiene que crear y guardar un cliente en blanco, masajear este nuevo disco con un codeunit, a continuación, buscar el registro y luego escribir los atributos del cliente y guardar de nuevo. I esperada para simplemente crear un nuevo cliente (), establecer los atributos y guardar en un solo golpe rápido.

supongo que no está demasiado interesado en la actualización a Nav6, pero fuera de la parte superior de mi cabeza, aquí es cómo se puede simular servicios web:

Sharepoint ya se puede consumir servicios web y exponer, de manera que niveles no es un problema. Nav 5 no los tiene 'naturalmente', pero se puede cocinar su propio programa que actúa como un servicio web 'broker' - que ya está recibiendo información dentro y fuera de NAV, a través de su mayoría XML. Se puede construir este corredor para tomar la entrada como los archivos XML y masaje a utilizar en una llamada de servicio web. Incluso se puede renunciar a la XML y escribir y leer directamente desde el Db, ya que toda la información de navegación se almacena allí de todos modos. Así que esto es lo que pienso:

NAV <-> SQL SERVER <-> Nueva 'broker' servicio web <-> Sharepoint

O si ya tiene la API NAV por pat y desea resuse el código XML:

NAV <-> archivos XML <-> Nueva 'broker' servicio web <-> Sharepoint

Si está utilizando XML y uso filewatchers, la latencia no debe ser demasiado malo, por lo general filewatchers recoger en una caída o cambio en milisegundos.

Hmm, pero estoy pensando que es probablemente supone que el uso de BizTalk para cosas como esta: NAV <-> BizTalk <-> Sharepoint

Pero no sé lo fácil que sería para configurar BizTalk para comunicarse con Nav. Apuesto a que es bastante lisa y llana para obtener comunicaciones de trabajo, pero esto es especulación.

En cualquier caso, no sé lo útil que es este post, pero tal vez le da algunas ideas para ir con.

Cheers, Lanza

Otros consejos

Donde trabajo, hemos sido capaces de utilizar uno de los servicios web desde NAV 6 de integrar con SharePoint, por lo que puede buscar un cliente o disco y mostrar en un elemento Web en SharePoint. Sé que su pregunta es sobre el NAV 5 en particular, pero sólo he visto este trabajo sobre el NAV 6. Y yo no era el desarrollador que trabajó en esto, así que no tengo más detalles me temo.

¿Usted intentó preguntar en mibuso.com? Están mucho más Navision-enfocados.

Cuando dice exponer la lógica de negocio, ¿Esto incluye la ejecución de código AL (por ejemplo, un codeunit)? Si sólo necesita realizar consultas en la base de datos se puede utilizar NODBC y System.Data.Odbc o la API Cfront .NET. Cualquiera de estos puede ser fácilmente envuelto usando un servicio web .NET, y tanto apoyo la base de datos NAV nativa. Para pasar mensajes de un lado a pesar de ello necesidad de utilizar COM, tal como se describe en el primer artículo que mencionas.

Cualquiera de los anteriores son perfectamente posible, y relativamente fácil en función de su competencia en .NET, COM y NAV.

El segundo artículo se ha vinculado a la describe el uso de la NAS. No soy un experto en esto, pero creo que esto podría requerir un gránulo licencia especial. Antes de pasar el tiempo la aplicación de nada vale la pena comprobar si su licencia incluye el NAS, Cfront o NODBC.

En realidad se puede hacer una "actualización técnica" del NAV 5 a NAV 2009 y luego utilizar los servicios web nativas. Es decir, la sustitución de los archivos exe y toda la aplicación (pero no los objetos, que seguirán siendo la versión 5), y un par de otros trucos. Pero funciona, y por lo tanto tiene 2009-servicio web-funcionalidad en su NAV 5: -)

Para el beneficio de cualquier persona googlear esto, si todavía estás en Navision 6 con la base de datos nativa, una forma buena de la conexión es a través de la cola de mensajes ventanas.

Usted puede escribir su propio servicio web que pone solicitudes XML en la cola y luego esperar por la respuesta para que aparezca. En el lado Navision, usted tiene uno clientes que tira de la cola de respuestas y la pone en la cola de respuestas. Hay un cliente especial no GUI llamada NAS para eso.

He estado usando este enfoque durante 15 años a reservar motores de conexión a cabo parte de atrás de Navision. Funciona muy bien y tiene la ventaja de que se puede echar un vistazo a las peticiones antes de que lleguen Navision, por lo que puede proteger su extremo posterior de demasiadas peticiones o defectuosas.

El único problema con este enfoque es que el comando COMMIT Navision es super caro. Es difícil de servir a un gran volumen de peticiones. Tan pronto como el back-end necesita cometer, que se han reducido a unos pocos solicitudes por segundo. Esto puede estar bien para un volumen bajo.

Para gran volumen que necesita para implementar el almacenamiento en caché o conseguir algo de la lógica de negocio a cabo. Para mí fue ser golpeado por los sitios web de comparación de precios, así que aquí la solución es servir a los de los servicios web escritas en Python y sólo pasan en las solicitudes si alguien compra algo ...

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