Я создаю WCF-Сервис , который размещен в Windows Service . Служба WCF вызывается приложением ASP.Net с использованием прокси.
using (WcfServiceRef.MonitorClient proxy = new WcfServiceRef.MonitorClient())
{
//WCF Service proxy
proxy.Open();
proxy.DoSomething();
}
Кроме того, у меня есть класс Singleton DataAdapter , который используется в WCF-сервисе следующим образом (большую часть времени он просто перенаправляет вызов в DataAdapter, чтобы иметь возможность изменить реализацию фактического доступ к данным легко):
DataAdapter.GetInstance().DoSomething();
Мой DataAdapter выглядит следующим образом и содержит данные myData, которые должны поддерживаться в рабочем состоянии:
public static DataAdapter DataAdapterInstance;
private List<CustomObjects> myData;
internal static ServiceAdapter GetInstance()
{
if (DataAdapterInstance == null)
{
DataAdapterInstance = new DataAdapter();
}
return DataAdapterInstance;
}
Теперь пришло время столкнуться с тем, с чем у меня возникли проблемы: (Я не уверен, что все, что я пишу здесь, правильно)
- Служба Windows 'теоретически работает вечно (как и должно быть)
- WCF-сервис запускается только когда он вызывается / создается моим прокси (из
asp.net) * +1021 *
Когда мой DataAdapter (который содержит все мои данные) «умирает» ... так что я спрашиваю здесь, каково время жизни объекта, когда на него фактически нет ссылки. (я бы сказал, что он собирается, когда работает сборщик мусора)
- Я думаю, что мой подход не слишком хорош, я был бы признателен за любые предложения о том, как хранить мои данные (желательно без использования БД или внешнего файла)
Спасибо, что заглянули в мою проблему!