Nicolai Ustinov
Nicolai Ustinov

Reputation: 541

Recommended .Net soft real-time

I'm interested in getting comprehensive information about soft (hard too) real-time application in .Net 3.5/4 Winforms mainly (WPF perhaps). Google results for the thing are quite poor - some quides on parallelism only ... the question is how could I for example write a real-time patient-health monitoring client for some medical appliance? or broker application with real-time stock data? or navigation system for a train? or a house-automation software which is responsible for opening/closing doors? etc ... so this kind of realtime app is the target.

So far I haven't found any books on it except Concurrent Programming on Windows - which is basicly not about this , rather parallelism handling ...

Thanks in advance

Upvotes: 3

Views: 958

Answers (4)

Mark
Mark

Reputation: 2432

Parralelism and threading are some of the tools .NET provides to help you write real time applications, but the architecture of real time systems is language independent.

This MSDN article has some good links for parallel computing.

Perhaps the Smart Client Software Factory might be a good reference implimentation for you to start investigating.

Upvotes: 1

JJJ
JJJ

Reputation: 569

In my company we have developed an telphony IVR server in C# and C++/CLI. It handles millions of calls per year, runs 24/7, never crashes and is generally as robust as we could wish for. There is nothing fancy about it, it is just regular windows service and while speed, efficiency and response time has obviously been something we've aimed for, it doesn't do anything esoteric like trying to control GB etc.

There is however a big but. The drivers for the hardware controlled by our application is obviously not .Net. So at the very lowest level we are not concerned by unwanted GBC and so on, all the millisecond dependent stuff like forwarding of IP telephony packets or voice streaming is handled by the firmware on our telephony boards.

So to summarize the above: I would never even consider writing drivers or very very low latency code in .Net, but I would definitely write the controlling code/logic in .Net.

Unfortunately I cannot point you to any useful resources, since I've never encountered any either, but I hope this use case will help you make an informed decission on whether you should consider .Net for your real-time projects.

Upvotes: 2

kenny
kenny

Reputation: 22414

I disagree with @Simon, you can build real-time systems with Windows and .NET. You may not be able to build very specific hard time systems, but with proper design and testing you can and I have.

There are many techniques to push hard time requirements on to software solutions or hardware such as motion/IO controllers. Windows/.NET makes much of the system easier to develop than RTOS development and the few time critical elements can be addressed. My approach is to address these time critical concerns first and test.

Upvotes: 1

Simon P Stevens
Simon P Stevens

Reputation: 27509

My personal feeling is that if your requirements are for real time software you shouldn't be using .net

.net uses a virtual machine that is not geared towards real time applications. For example, you cannot predict when the garbage collector is going to run, or how long it is going to take. If this happened at a critical moment, your real time software would no longer be real time.

[Edit: Sorry, I know that's not really answering your question, but I think this is probably the reason why you are having trouble finding information on it - because nobody does it. If you are writing real time software you should probably be looking at C or C++ instead. And depending how critical it is, a dedicated deterministic real time operating system. Or even specific languages designed with real time in mind]

Upvotes: 5

Related Questions