Wcf несколько служб чтения файла - PullRequest
1 голос
/ 15 мая 2011

Я использую wcf для реализации распределенного приложения с использованием нескольких сервисов.

Одна из моих служб должна использовать привязку MSMQ, чтобы получать запросы асинхронно, чтобы запросы не игнорировались при отключении. Проблема с привязкой MSMQ заключается в том, что это только один путь, и поэтому у меня не может быть методов, возвращаемых в контракте. Поэтому мне пришлось создать другую конечную точку с привязкой wshttp.

Теперь у меня есть проблема, которая может даже не быть связана со службами wcf.

Служба с привязкой msmq записывает в файл, который читается другой службой. Проблема в том, что когда первая служба вносит изменения в файл, я должен перезапустить обе, чтобы вторая прочитала эти изменения.

Я записываю информацию из файла, используя следующее:

string filename = "holder.txt";
if (!File.Exists(filename))
    File.Create(filename);
Stream stream = File.Open(filename, FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, requests_list);
stream.Close();

Я закрываю поток, чтобы изменения, сделанные другими службами, не просматривались при его чтении? с помощью:

string filename = "holder.txt";
if (!File.Exists(filename))
    return null;
Requests requests_list;
Stream stream = File.Open(filename, FileMode.Open);
BinaryFormatter bFormatter = new BinaryFormatter();
try
{
    requests_list = (Requests)bFormatter.Deserialize(stream);
}
catch (Exception)
{
    stream.Close();
    return null;
}
stream.Close();
return requests_list;

Кстати, оба метода находятся в классе, совместно используемом обеими службами.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...