Другие языки программирования и технологии

обмен данными C# и надежность жесткого диска

Есть две программы. Необходимо организовать между ними обмен данными. Предполагаю использовать какой нибудь общий файл. Собственно вопрос, а так можно делать? Так как файл будет перезаписываться каждые секунды две. Если есть какой нибудь другой вариант, озвучьте пожалуйста.
Ринас Фарсыев
Ринас Фарсыев
3 211
Почитайте на тему обмена сообщениями между приложениями вообще. Их много. Сокеты, файлы, общая база данных и пр. ..Все от условий зависит

Для больших объемов изменяющихся данных - сокеты, для небольших и статичных - файлы общие (временные в заранее известном формате) и так далее
Игорь Егоров
Игорь Егоров
38 927
Лучший ответ
Ринас Фарсыев не успею до завтра доделать (
Через файл это как-то.. . Э-э-э-э.. . Непрофессионально, мягко говоря, и чревато излишней глюкавостью.
Я бы рекомендовал веб-сервисы. Кури мануалы по SOA.
каждые 2 секунды? не думаю работа с общим файлом позволит вам такую скорость.
как синхронизация будет проходить при записи? ведь покуда файл открыт одним приложением для записи, второе приложение будет сидеть курить бамбук покуда файл не закроется..
Ринас Фарсыев пускай курит, сделаю два файлика. И будет норм. Но вопрос не в том
V.i.p Alik Это не так, многие программы прекрасно работают с совместно открытыми файлами, хотя там конечно есть тонкости.
Смотря какой файл. Если относительно маленький - то 2 секунды - это большой промежуток. Бояться, что диск испортится не надо, все ОС имеют механизмы кеширования и часто используемый файл скорее всего будет обрабатываться в памяти. Не думаю, что надо о таких вещах задумываться.. .

С большим файлом проблема будет только в скорости работы - все-таки запись-чтение довольно медленная операция.

При совместном доступе, естественно, возникает вопрос синхронизации, то есть надо обеспечить механизм, чтобы читающая программа читала только тогда, когда записывающая закончила запись, чтобы не было "недозаписанных" данных. В некоторых системах программирования такие вещи встроены, например в настолькных СУБД, типа Аксеса, ФоксПро и т. п.

Ну а насчет других способов - думаю можно что-нибудь найти. Разделяемая память, использование COM+ объектов, обмен с помощью портов и сетевых протоколов - так, что в голову сразу приходит.
Лучше общая база данных скьюлайт.
На киберфоруме был готовый исходник в разделе по ВБ. НЕТ в факью. Ищите.