Инструменты для создания ОСА (иногда подключенного приложения)

Я буду создавать собственное, иногда подключаемое приложение (ОСА). Какие технологии вы бы предложили мне использовать.

Вот мои параметры:

  1. .NET Shop (3.5sp1)
  2. C# для кода позади (winform, wpf, silverlight)
  3. SQL Server Backend (2005 или, возможно, 2008 ожидает утверждения)
  4. Индивидуальный разработчик
  5. Solo SQL Administrator
  6. Low Tech конечные пользователи
  7. Низкая пропускная способность до 5 филиалов
  8. Это приложение LOB, но не POS.
  9. У большинства пользователей есть ноутбуки, которые они берут в дом члена
  10. Данные для этого приложения хранятся в 5 отдельных базах данных, хотя в одном экземпляре SQL.

Я ищу конкретные рекомендации о том, какой путь выбрать. Слияние репликации или синхронизация базы данных провайдеров синхронизации? SQL Express или SQL CE у подписчика? Могу ли я использовать LINQ to SQL для DAL?

Является ли пример Silverlight 'Offline/Out of Browser App' здесь возможным?

Это мое первое БОЛЬШОЕ бизнес-приложение, поэтому любые опытные комментарии приветствуются.


В соответствии с запросом здесь приведена дополнительная информация о типе данных. Мои пользователи - медсестры и социальные работники, которые ходят по домам Участника и создают для них "Планы" или "Обзоры состояния здоровья". Это такие вещи, как Список лекарств или Список существующих "Поставщиков". Шаги для достижения целей членов или список текущих / прошлых диагнозов. Такие вещи.

Также типичное имя участника, адрес, номер телефона и т. Д. В основном это приложение для хранения и поиска данных, которое облегчает составление отчетов. Происходит очень мало "обработки", и медсестры и социальные работники работают в командах, которым назначены члены, поэтому у меня обычно очень мало перекрестных или потенциальных конфликтов данных. Медсестры и СР также несут ответственность за различные области MCP(План, ориентированный на участников)


Дополнительный вопрос; Является ли Sync Framework действительно приемлемым вариантом, если я могу использовать SQL 2008? Кажется, так из-за отслеживания изменений и т.д.... мысли?

6 ответов

Решение

Как только вы решите проблему обнаружения изменений и перемещения данных, все остальное становится тривиальным. Другими словами, такие технологии, как WPF, Silverlight, Forms и даже WCF ортогональны вашей основной проблеме, и ваш выбор должен основываться на ваших личных предпочтениях и опыте. Настоящий крепкий орешек - это работа без связи и синхронизация изменений. Что оставляет две возможности: "Синхронизация фреймворка" или "Репликация".

Я бы сказал, для вашего сценария, определенно Synch Framework. Репликация слиянием, как и все формы репликации, предназначена для систем, которые постоянно связаны с прерывистыми разъединениями. И наиболее критически репликация может работать только над статическими именами. Ноутбуки, подключающиеся из разных горячих точек и интернет-провайдеров, имеют неприятную привычку менять имена FQ при каждом подключении. Репликация может преодолеть это, только если используется своего рода VPN, и VPN обычно является основной проблемой поддержки. Репликация просто не предназначена для высокой мобильности систем ОСА.

Synch Framework в значительной степени заставит вас работать с SQL 2008 из-за необходимости изменения сбора данных или отслеживания изменений, обе из которых являются только функциями SQL 2008.

У вас все еще будет много сложных проблем, которые предстоит решить заранее (аутентификация, управление версиями и обновление, политики разрешения конфликтов данных, защита данных на клиенте для случайной потери носителя и т. Д. И т. Д.)

Лично я бы сказал:

  • .NET 3.5
  • Службы данных WCF (для связи между клиентским приложением и вашими данными)
  • SQL Server 2k5 / 2k8 (что вы можете использовать)
  • Silverlight без функциональности браузера
  • VistaDB (для локального хранения данных на клиенте до тех пор, пока вы не сможете отправить их на сервер)

Используйте уникальный идентификатор для ключа, если вы создаете материал в автономном режиме и не подключены, а при подключении обновляете базу данных.

это будет намного проще, чем использование автоинкрементного ключа

Я написал программу приема заказов для торговых представителей. Вот видео. Клиентское программное обеспечение устанавливается с помощью щелчка один раз. Это также устанавливает SQL Server Express и загружает базу данных. Я использовал Microsoft Sync Framework для синхронизации локальной базы данных с базой данных на сервере (см. Последний раздел видео).

  • С мощными клиентами сейчас я не вижу причин не использовать SQL Server Express, он бесплатный с ограничением в 4 ГБ.

  • В SQL CE было слишком много ограничений - ни один из хранимых процедур не был основным.

  • Вам нужно будет везде использовать GUID в качестве первичного ключа - смотрите новый NewSequentialID().

  • Я люблю щелкать один раз, это экономит время.

Я с нетерпением жду Silverlight, но просто не было времени разобраться в этом. Не уверен, что я сделал бы это с Silverlight, если бы делал это сейчас или нет.

Сказав все это, это не проект для тех, кто неопытен. Так что я бы тоже получил очень опытную помощь.

Кажется, вы могли бы создать этот материал с нуля.

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

В прошлой жизни я был разработчиком конфигурации для этой вещи под названием Siebel, которая, возможно, была близка к тому, что вы ищете. У них даже есть встроенный инструмент синхронизации, который называется Siebel Remote.

Это может быть более дешевый маршрут, чем прокатка с нуля.

Поработав над периодически подключаемым приложением, я бы посоветовал вам обратиться к SQL Server CE для клиентских компьютеров со службами Sync для обработки соединений. Вот хороший учебник.

Другие вопросы по тегам