2010-04-08 2 views
3

Я ищу несколько советов/предложений о том, как мне настроить рабочий процесс небольшого приложения Im building. Когда приложение будет запущено, datagrid будет заполнен через XML-файл. После запуска приложение получит поток данных, который, я надеюсь, обновит файл и datagrid.C# Process flow - Datastream, XML и datagrid

Итак, интересно, что вы предложите, как настроить рабочий процесс (т. Е. Разделить данные из потока данных и одновременно заполнить файл и сетку или вы предложите сначала заполнить файл XML и настроить таймер, чтобы сетка читает файл?) Im действительно ищет оптимальную производительность.

ответ

2

Во-первых, элемент данных представляет собой элемент пользовательского интерфейса, поэтому его работа должна быть ориентирована только на пользовательский интерфейс - он не должен контролировать процесс/рабочий процесс вашего приложения. Я не думаю, что вы предлагали, чтобы вы сделали это, поэтому я просто пытаюсь вас не сделать :)

Как это сделать? Разделите приложение на части, где каждый выполняет одно задание и делает это хорошо:

  • Внутри логического уровня имеется компонент (интерфейс/служба), который обрабатывает поток данных. Выясните это, если сможете, для будущей гибкости. WCF может быть вариантом (?)
  • «Управляйте» данными в логическом уровне - используйте это как первичный источник данных.
  • использует управляемую событиями модель для хранения первичного источника данных в syunc с изменениями, вызванными пользователем и сервисом.
  • Имейте (под) компоненты, которые обрабатывают определенные задачи обновления (файл/UI & DataGrid).
  • И, наконец, логический уровень также будет содержать центральное место, где вы orchstrate все.

См. Изображение ниже.

Будут какие-то шаблоны дизайна, которые вы можете использовать, но я не уверен, какие из них подходят, но на основе предоставленной информации, но, надеюсь, это будет полезно в среднем.

Что касается производительности - в каких областях вы воспринимаете производительность как проблему?

  • Передача данных?
  • рендеринг для пользователя?
  • , отражающий изменения (если так - между какими битами)?
  • Сколько данных вы перемещаете, как часто это меняется?
  • Веб-сайт или толстый клиент?

alt text http://www.freeimagehosting.net/uploads/09a5e70b03.jpg

боксы показать основные компоненты, они могут состоять из различных классов. Линии показывают основные информационные потоки.

«Центральный контроллер» запускает шоу. «Первичные данные» - это личная копия данных. DataGrid (или любой другой «клиент») может отправлять обновления в центральный контроллер через события. Данные передаются в контроллер (кто решает, что с ним делать) через те же ведро обработчиков событий (то же самое, что они существуют в одной логической области).Вероятно, вы захотите, чтобы они были определены за интерфейсом, поэтому вы можете поменять местами реализации по мере необходимости. Одним из них может быть локальный поставщик данных, который отправил и запросил данные (в отличие от того, что он был нажат на контроллер/обработчики событий.)