Lightswitch: остановить службу Windows

#visual-studio-lightswitch #lightswitch-2012

#visual-studio-lightswitch #lightswitch-2012

Вопрос:

У меня есть небольшое настольное приложение, встроенное в LightSwitch, которое позволяет удаленным сотрудникам отдела продаж регистрировать и работать с данными клиентов локально на своих ноутбуках, поскольку сайты клиентов не всегда имеют доступ к Интернету / VPN. Таким образом, каждое клиентское приложение имеет локальную установку SQL 2012 Express.

На панели команд у меня есть кнопка с надписью «Резервное копирование базы данных», которая предназначена для копирования их файла .mdf со своего компьютера на подключенный сетевой диск, когда они вернутся в офис. Отлично работает с файлом test .mdf, который в настоящее время не подключен к экземпляру SQL. Теперь проблема заключается в том, что при попытке скопировать этот файл .mdf в рабочей среде (при запущенном SQL) он не может быть скопирован, поскольку он открыт в SQL Express.

Мой вопрос заключается в следующем: есть ли ссылка, которую я могу добавить к клиенту, которая позволит мне использовать систему.Процесс обслуживания.Класс ServiceController? Или какую сборку было бы лучше всего использовать, чтобы я мог остановить, а затем перезапустить службу Windows? (Остановить службу => скопировать файл mdf => перезапустить службу)

Ответ №1:

Во-первых, я хочу убедиться, что понимаю вашу топологию. Я предполагаю, что ваше приложение настроено как настольное приложение Silverlight, которое развертывается как 2-уровневая среда, в которой приложение и база данных размещены на одном компьютере.

В этом случае вы должны иметь возможность писать код для своего приложения, чтобы оно могло вызывать класс ServiceController. Вы просто не можете сделать это из «клиентского» кода, поскольку это Silverlight и не имеет доступа к ServiceController. Вместо этого вам нужно будет записать его в «серверный» код, который выполняется как хост-процесс на том же компьютере и имеет полный доступ.NET Framework. Вы можете предоставить свой пользовательский серверный код через веб-API, который ваш клиентский код может вызывать, когда пользователь нажимает кнопку. Вот хорошая статья, объясняющая этот шаблон: http://blog.pragmaswitch.com/?p=765 .