У меня есть приложение Silverlight, которое состоит из MainWindow и нескольких классов, которые обновляют и рисуют изображения в MainWindow. Сейчас я расширяю это, чтобы отслеживать все в базе данных.
Не вдаваясь в подробности, допустим, у меня есть такая структура:
MainWindow
Drawing-Surface
Class1 -- Supports Drawing
DataContext + DataServiceCollection<T> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
Class3
Каждому «Классу» передается ссылка на поверхность рисования, чтобы они могли взаимодействовать с ней независимо.
Я начинаю использовать WCF Data Services в Class1, и он работает хорошо; однако другим классам также потребуется доступ к службам данных WCF. (Должен ли я определить свой «DataContext» в MainWindow и передать ссылку на каждый дочерний класс?)
Class1 потребуется доступ READ к данным «транзакций», а Class2 потребуется доступ READ к некоторым данным чертежа. Итак, мой вопрос: где имеет смысл определить мой DataContext?
Имеет ли смысл:
- Определить «глобальный» объект «Контекст» службы данных WCF и передать ссылки на него во всех моих последующих классах?
- Определить экземпляр «контекста» для каждого Class1, Class2 и т. Д.
- Может ли каждый метод, которому требуется доступ к данным, определить свой собственный экземпляр «контекста» и использовать замыкания для обработки событий асинхронной загрузки / завершения?
Будет ли такая структура иметь больше смысла? Есть ли какая-либо опасность в сохранении активного «DataContext» открытым в течение длительного периода времени? Типичный случай использования этого приложения может составлять от 1 минуты до 40+ минут.
MainWindow
Drawing-Surface
DataContext
Class1 -- Supports Drawing
DataServiceCollection<DrawingType> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
DataServiceCollection<TransactionType> w/events
Class3
DataServiceCollection<T> w/events