I am working on development of an embedded Linux device which needs to exchange data with a system that runs in a Windows desktop environment. My team is developing the software on the embedded device and designing the API to exchange data with the device. I would like some ideas on the data exchange architecture. I would like the architecture to follow SOA principles.
Here are the important specs:
- Database: The device will run a SQL database server locally.
- Network: The device and the desktop system will be connected via WLAN
or LAN. Running a web server on the device is also possible if there
is a compelling reason to do so. - Data will be exchanged in both directions. Textual customer information and jpeg image files (~1MB of data once per day).
My first thought is a traditional approach: run a process on the Linux device that communicates via TCP socket to a process on the Windows side. In this scenario, my team needs to write a Windows DLL (either .NET library or Win32) to implement the API. I’m thinking the data format would be XML here, though, I’m not sure how to transfer the .jpg image files with this approach.
I guess a more “modern” approach would be to run a web server on the Linux device and provide a set of web services to handle the interaction with the external system. I’ve not had much experience in this arena, so I’m not sure if this would be appropriate for our situation.
Your thoughts on these approaches are greatly appreciated. I’m confident that the collective wisdom here on SO will help me make an informed decision. Thanks for your help.
I’d also go with web-services. If you use a raw TCP connection you may end up with problems of encoding or even endianess (you talk about embedded linux, you may have different endianess on embedded processor).
My experience are:
Ladon also supports SOAP, but if you want to exchange files it has some small limitations. Give a look at this.