Рекомендуется. Net Soft в режиме реального времени - PullRequest
3 голосов
/ 23 июня 2009

Я заинтересован в том, чтобы получить исчерпывающую информацию о программном (жестком) приложении реального времени в .Net 3.5 / 4 в основном Winforms (возможно, WPF). Результаты Google довольно плохие - некоторые сводятся только к параллелизму ... вопрос в том, как я могу, например, написать клиент для мониторинга состояния пациента в реальном времени для какого-нибудь медицинского прибора? или брокерское приложение с биржевыми данными в реальном времени? или навигационная система для поезда? или программное обеспечение для автоматизации дома, которое отвечает за открытие / закрытие дверей? и т.д. ... так что это приложение в реальном времени является целью.

До сих пор я не нашел ни одной книги, кроме «Параллельное программирование в Windows», которая, в основном, не об этом, а о параллелизме ...

Заранее спасибо

Ответы [ 4 ]

5 голосов
/ 23 июня 2009

По моему личному мнению, если ваши требования касаются программного обеспечения реального времени, вам не следует использовать .net

.net использует виртуальную машину, не предназначенную для приложений реального времени. Например, вы не можете предсказать, когда будет запущен сборщик мусора или сколько времени это займет. Если бы это произошло в критический момент, ваше программное обеспечение в реальном времени больше не было бы в реальном времени.

[Редактировать: Извините, я знаю, что это не совсем отвечает на ваш вопрос, но я думаю, что это, вероятно, причина, почему у вас возникают проблемы с поиском информации по нему - потому что никто не делает это. Если вы пишете программное обеспечение для реального времени, вам, вероятно, стоит обратить внимание на C или C ++. И в зависимости от того, насколько это важно, выделенная детерминированная операционная система реального времени. Или даже конкретные языки, разработанные с учетом реального времени]

2 голосов
/ 23 июня 2009

В моей компании мы разработали IVR-сервер telphony на C # и C ++ / CLI. Он обрабатывает миллионы вызовов в год, работает 24/7, никогда не дает сбоев и, как правило, настолько надежен, насколько мы могли бы пожелать. В этом нет ничего особенного, это просто обычная служба Windows, и хотя скорость, эффективность и время отклика, очевидно, были тем, к чему мы стремились, это не делает ничего эзотерического, например, попытки контролировать ГБ и т. Д.

Однако есть большое но. Драйверы для оборудования, контролируемого нашим приложением, очевидно, не .Net. Поэтому на самом низком уровне нас не беспокоит нежелательный GBC и т. Д., Все зависящие от миллисекунды вещи, такие как пересылка пакетов IP-телефонии или потоковая передача голоса, обрабатываются встроенным программным обеспечением на наших телефонных платах.

Итак, подведем итог вышесказанному: я бы никогда не подумал о написании драйверов или кода с очень очень низкой задержкой в ​​.Net, но я бы определенно написал управляющий код / ​​логику в .Net.

К сожалению, я не могу указать вам какие-либо полезные ресурсы, поскольку я никогда не сталкивался ни с одним из них, но я надеюсь, что этот вариант использования поможет вам принять обоснованное решение о том, следует ли вам рассматривать .Net для своих проектов в реальном времени.

1 голос
/ 23 июня 2009

Паррализм и многопоточность - вот некоторые из инструментов, которые предоставляет .NET для написания приложений в реальном времени, но архитектура систем реального времени не зависит от языка.

В этой статье MSDN есть несколько полезных ссылок для параллельных вычислений.

Возможно, фабрика программного обеспечения для интеллектуальных клиентов может послужить хорошим справочным материалом для начала расследования.

1 голос
/ 23 июня 2009

Я не согласен с @Simon, вы можете создавать системы реального времени с Windows и .NET. Возможно, вам не удастся построить очень специфичные системы с трудным временем, но при правильном проектировании и тестировании вы можете и я это сделать.

Существует много способов выдвинуть жесткие требования к программным решениям или аппаратному обеспечению, таким как контроллеры движения / ввода-вывода . Windows / .NET облегчает разработку большей части системы, чем разработка RTOS, и можно решить несколько критических по времени элементов. Мой подход состоит в том, чтобы сначала решить эти критические проблемы и проверить их.

...