C# Modules everywhere but no cross talk anywhere

Hello, I have a task to accomplish and I have not put any research into it yet.  I'd like to hear from you on the best way to accomplish the task, and then I will consentrate my efforts there.  The task at hand deals with two windows forms (seperate projects).  I will need to pass info from 1 to the other on a fairly regular basis...  (here's the big question)  What is the most effective way to continually pass this info?  Pass it through the filestream, network stream, sql database , use the force?

This could be going into a multithreaded busy busy situation, so any help is greatly appreciated.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Simplest way, MHO, is Remoting.
Ah, sorry, you have two win forms. Then I'd advice you to use MSMQ. It's very easy to use, fast and reliable.
Here is pos and cons of different integration types:
- Files
- Database
- Messaging

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
OWASP: Avoiding Hacker Tricks

Learn to build secure applications from the mindset of the hacker and avoid being exploited.

You talk about "passing information". Do you mean you want to send a message from one to the other and the other form is supposed to react to that immediately? Or do you mean that both are supposed to share information, i.e., one writes down a customer's name and the other form is supposed to "see" it if a user is querying it? Are the windows (separate applications) running on the same machine, the same network or are accessible through the internet?

If you want the most freedom: choose web services plus databases. The web services for the messaging (other form must react immediately), the database for persistence (the lookup example). But if you're unsure what these are or how to apply them, you might be up to a steep learning curve...
the_b1ackfoxCIOAuthor Commented:

You talk about "passing information". Do you mean you want to send a message from one to the other and the other form is supposed to react to that immediately?

Exactly.  1 of several services will log a user into the system, but will not know what server or service a user is using.  So I want to pass messages to a "librarian" module which will lookup the user and service and and pass the message to be delivered onto the server/serivce that the recipient is logged into  

I can handle a steep learning curve, once I know I am headed in the right direction ;)
Well, user lazyberezovsky already mentioned the more classical means of communication using RPC and messaging (better than files or databases for immediate reactions). Memory mapped files (MMF) is another, but can be tricky to get right.

Considering that you are using .NET, that you don't mind some learning curve and that you need (configurable) messaging, it seems to me the easiest way to go is using web services. WS are integrated into .NET and Visual Studio and are easy to set up. You need a web server, though, to run web services. However, your client applications (the forms) do not need to run in a web environment. However, they must be able to connect to the (local or remove) web server.

Web services are normally built on HTTP for transport and SOAP (which is XML) for carrying the data. There are other technologies involved. When you use .NET you don't have to worry too much about those technologies. Click "create new project" and select "web services project" under "Web". It's probably best to google for some tutorials or to buy yourself a book to have a quick start.

Once you have it set up, using it is as easy as 1-2-3: you can use web services from your applications as if you were using the objects in the other program's address space. The whole messaging under the hood is hidden from you.

One word of warning: keep the objects that you send back and forth (they must be serializable!) rather small from a memory point of view. Sending integers, doubles, small strings, structs is ok. But don't send large arrays, dictionaries or binary data like files back and forth. I usually keep things easy: string, value types and structs (which are value types) are automatically serializable and don't require any extra handling. Use them as the types for your parameters and you should be fine. Note that methods on types don't add to the memory footprint.
the_b1ackfoxCIOAuthor Commented:
Thank you for the info guys!
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.