Pass data between two desktop applications

V

VC

Hi

I'm working on a check imagem management system, and I was told to
split it into two applicatiosn:

One for control the check scanner and manager the capture
One to manager the data recognized by an OCR system (that doesn matter
now)
Another one to send the images to a imager server

The capture manager and the send images app are called inside the ocr
manager through a Process.Start() from Process object.

The problem is
- the customer can buy the three applications
- buy the OCR manager application and build the two other ones
- buy the OCR manager and one of the another two and biuld the left
one by himself.

So I was asked to build a kind of 'open architeture' where the
customer should know how to pass to the OCR app some data, in case he
build the application

One issue is that the application that will receive the data must work
on a kind of 'queue', I mean when it is started, the caller app must
be able to send more data without call a second instance of the called
app.

I'm confuse about which aproach to take. How to send/receive data,
between a csharp app and other platform like VB6, Java etc?

I thought about a web service, but I would run a web server on the
same machine the desktop would run and this doenst have sense for me.
 
P

Pavel Minaev

I thought about a web service, but I would run a web server on the
same machine the desktop would run and this doenst have sense for me.

If you go for TCP/IP (which really is the most generic approach here),
then one of your apps would have to be the server, anyway, so some
port would have to be open. At that point, it might as well be the
HTTP port. Note that you do not need a separate Web server - if you
write web services in WCF, it can actually run a basic server thread
right inside your own process.

Now, whether a web service is actually suitable here or not depends on
what kind of data you're pushing... if it's low-bandwidth stream of
records with little binary data then it makes sense (very easy to deal
with from .NET, pretty easy for Java too, solutions exist for VB6, C++
etc). If there's a lot of binary data (scanned images?), then it's
probably best to work with sockets directly on low level to maximize
bandwidth.

Other options... if you're absolutely sure it will all run on a single
machine (I wouldn't be - why restrict yourself thus?), you may want to
consider named pipes (see PipeStream class in .NET), as they are
somewhat faster than sockets. But this should only matter to you if
there is really a lot of data to be pushed through, otherwise go for
raw sockets or HTTP.
 
V

VC

Hi Pavel

Now, whether a web service is actually suitable here or not depends on
what kind of data you're pushing... if it's low-bandwidth stream of
records with little binary data then it makes sense (very easy to deal
with from .NET, pretty easy for Java too, solutions exist for VB6, C++
etc). If there's a lot of binary data (scanned images?), then it's
probably best to work with sockets directly on low level to maximize
bandwidth.

Yes, there's a lot of scanned image. It's a app for banks and believe
me, there a lots of clients that use to make deposits with 60, 70
check. Maybe working with sockets will be suitable for my needs.
Other options... if you're absolutely sure it will all run on a single
machine (I wouldn't be - why restrict yourself thus?),

Yes. The first solution was a mix of ocx built in c++, html pages,
javascript and IIS and imagem manipulation. We were living in hell.
The ocx controls the scanner, it's a environment hard to link with
browsers, and it's a solution were the user generally types very fast.
So we decide change the platform to a destop application. The need of
split the entire solution is a requirement from the product ares guy
(reasons described in my prior email). But all of them will run in the
same machine.
consider named pipes (see PipeStream class in .NET), as they are
somewhat faster than sockets. But this should only matter to you if
there is really a lot of data to be pushed through, otherwise go for
raw sockets or HTTP.

Ok, Named Pipes were my first idea. Do you know if there an API for
Java and VB6 ?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top