Инструменты для создания ОСА (иногда подключенного приложения)
Я буду создавать собственное, иногда подключаемое приложение (ОСА). Какие технологии вы бы предложили мне использовать.
Вот мои параметры:
- .NET Shop (3.5sp1)
- C# для кода позади (winform, wpf, silverlight)
- SQL Server Backend (2005 или, возможно, 2008 ожидает утверждения)
- Индивидуальный разработчик
- Solo SQL Administrator
- Low Tech конечные пользователи
- Низкая пропускная способность до 5 филиалов
- Это приложение LOB, но не POS.
- У большинства пользователей есть ноутбуки, которые они берут в дом члена
- Данные для этого приложения хранятся в 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 для обработки соединений. Вот хороший учебник.