#c# #wcf #client-server #desktop-application
#c# #wcf #клиент-сервер #desktop-приложение
Вопрос:
Я разработал простое настольное приложение с базой данных SQL Server для одного компьютера, и теперь клиент хочет заставить его работать на нескольких компьютерах. Я хочу знать, что лучше: на данный момент я удалил базу данных из sql management, и все приложения просто подключаются к ней. Это хорошая идея или мне нужно внести некоторые изменения, чтобы улучшить выполнение приложения?
-
В базе данных содержится много информации, подлежащей импорту в приложение.
-
У меня нет хорошей идеи о WCF, но помогло бы прочитать об этом?
Ответ №1:
У вас мог бы быть выделенный сервер с размещенной на нем базой данных, и все клиентские приложения могли бы подключаться к нему. Но об одной вещи вам нужно позаботиться, это transaction
управление, то есть пока пользователь обновляет какую-то часть информации, никакой другой пользователь не сможет изменить эту часть данных, чтобы сделать эти данные противоречивыми. Вы могли бы взглянуть на этот пост, описывающий транзакции Sql Server.
Комментарии:
1. вы говорите, что я позволяю приложению выглядеть так, как будто теперь мне нужно позаботиться об управлении транзакциями??
2. Да, вам нужно заняться управлением транзакциями, если вы хотите перевести свое приложение с однопользовательского на многопользовательский. Пожалуйста, сообщите сферу применения вашего приложения, сколько пользователей вам нужно поддерживать, насколько важны данные и т.д. И т.п.
3. приложение будет поддерживать от 10 до 20 пользователей, а данные не критичны
4. Я думаю, вам не нужно много делать с переносом вашего приложения на нескольких пользователей из однопользовательского, поскольку вы сказали, что данные не критичны. Возможно, вам придется заняться управлением транзакциями, чтобы обеспечить согласованность данных.
Ответ №2:
В зависимости от требований я бы рекомендовал сохранить локальную базу данных в качестве кэша для быстрого запуска приложения и реализовать процесс синхронизации, при котором локальная и удаленная базы данных время от времени сравниваются или запускаются пользователем вручную.
Это было бы очень похоже на то, как, например, работают почтовые клиенты IMAP или Evernote.
Комментарии:
1. на данный момент база данных расположена на сервере… вы имеете в виду, что я сохраняю локальную базу на каждом КОМПЬЮТЕРЕ, но синхронизация выполняется с помощью кода c # или с sqlserver?
2. не уверен, какой лучший способ выполнить синхронизацию, но сохранение локальной базы данных очень поможет в разрешении конфликтов синхронизации и согласовании, если вы позволите всем работать с одной и той же удаленной базой данных, неизбежны блокировки, о которых упоминал Абдул, или вам придется проделать ужасно много работы, чтобы сделать ее гладкой, и отладка станет кошмаром!