От простого настольного приложения к клиент-серверному приложению

#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. не уверен, какой лучший способ выполнить синхронизацию, но сохранение локальной базы данных очень поможет в разрешении конфликтов синхронизации и согласовании, если вы позволите всем работать с одной и той же удаленной базой данных, неизбежны блокировки, о которых упоминал Абдул, или вам придется проделать ужасно много работы, чтобы сделать ее гладкой, и отладка станет кошмаром!