We are starting to develop a new application and I'm searching for information/tips/guides on application architecture.
Application should:
- read the data from an external (USB) device
- send the data to the remote server (through internet)
- receive the data from the remote server
- perform a video call with to the calling (support) center
- receive a video call call from the calling (support) center
support touch screens
In addition: some of the data should also be visible through the web page.
So I was thinking about: On the server side:
- use the database (probably MS SQL)
- use ORM (nHibernate) to map the data from the DB to the domain objects
- create a layer with business logic in C#
- create a web (WCF) services (for client application)
- create an asp.net mvc application (for item 7.) to enable data view through the browser
On the client side I would use WPF 4 application which will communicate with external device and the wcf services on the server.
So far so good. Now the problem begins. I have no idea how to create a video call (outgoing or incoming) part of the application. I believe that there is no problem to communicate with microphone, speaker, camera with WPF/C#. But how to communicate with the call center? What protocol and encoding should be used?
I think that I will need to create some kind of server which will:
- have a list of operators in the calling center and track which operator is occupied and which operator is free
- have a list of connected end users
- receive incoming calls from end users and delegate call to free operator
- delegate calls from calling center to the end user
Any info, link, anything on where to start would be much appreciated.
Many thanks!