Каков самый простой язык для создания служб Windows?
Самый простой в этом случае будет определяться как наименьшее количество кода и самая низкая точка входа в язык.
Каков самый простой язык для создания служб Windows?
Самый простой в этом случае будет определяться как наименьшее количество кода и самая низкая точка входа в язык.
Если вы указали очевидное, если у вас есть фон C/С++/Java, я думаю, что С# предлагает вам самую низкую точку входа.
Предполагая, что вы используете Visual Studio 2008, вы можете выполнить следующие действия:
false
, чтобы предотвратить запись событий по умолчанию в журнал событий приложений (Примечание: я не говорю, что вы не должны регистрировать события службы, я просто предпочитаю писать в свой собственный журнал событий вместо журнал приложений - см. ниже)true
, если вы хотите обрабатывать остановки системыtrue
, вы также захотите переопределить метод OnShutdown. Я привел пример, иллюстрирующий использование этих функций.using System.Diagnostics;
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
EventLogInstaller installer = FindInstaller(this.Installers);
if (installer != null)
{
installer.Log = "ServiceExample"; // enter your event log name here
}
}
private EventLogInstaller FindInstaller(InstallerCollection installers)
{
foreach (Installer installer in installers)
{
if (installer is EventLogInstaller)
{
return (EventLogInstaller)installer;
}
EventLogInstaller eventLogInstaller = FindInstaller(installer.Installers);
if (eventLogInstaller != null)
{
return eventLogInstaller;
}
}
return null;
}
}
На этом этапе вы можете создать свой проект, чтобы получить исполняемый файл службы Windows. Чтобы установить службу, откройте командную строку Visual Studio 2008 и перейдите в каталог Debug или Release, где находится ваш исполняемый файл. В командной строке введите следующее: InstallUtil ServiceExample.exe. Это установит вашу службу на локальном компьютере. Чтобы удалить его, введите в командной строке следующее: InstallUtil/u ServiceExample.exe
Пока ваша служба не запущена, вы можете вносить изменения в свою службу и повторно строить, т.е. вам не нужно удалять свою службу, чтобы вносить в нее изменения. Тем не менее, вы не сможете перезаписать исполняемый файл своими исправлениями и улучшениями, пока он запущен.
Чтобы увидеть свою службу в действии, откройте файл ServiceExample.cs и внесите следующие изменения:
using System.Diagnostics;
public partial class ServiceExample : ServiceBase
{
public ServiceExample()
{
// Uncomment this line to debug the service.
//Debugger.Break();
InitializeComponent();
// Ties the EventLog member of the ServiceBase base class to the
// ServiceExample event log created when the service was installed.
EventLog.Log = "ServiceExample";
}
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("The service was started successfully.", EventLogEntryType.Information);
}
protected override void OnStop()
{
EventLog.WriteEntry("The service was stopped successfully.", EventLogEntryType.Information);
}
protected override void OnShutdown()
{
EventLog.WriteEntry("The service was shutdown successfully", EventLogEntryType.Information);
}
}
После запуска службы с этими изменениями вы можете посмотреть журнал событий ServiceExample в средстве просмотра событий и увидеть там зарегистрированные сообщения.
Надеюсь, что это поможет.
EDIT: если вы предпочитаете использовать журнал событий приложений для ведения журнала событий вместо пользовательского, просто не делайте никаких изменений в файле ProjectInstaller.cs. Кроме того, оставьте строку, которая задает свойство журнала EventLog в конструкторе ServiceExample. При запуске службы сообщения журнала появятся в журнале событий приложений.
Я согласен со всеми, кто ответил в другом месте, но я бы сказал, не слишком сильно фокусируйтесь на фактическом языке, если вы работаете в .NET framework, и для вас есть стартовый проект, хорошо идти. В прошлом я делал несколько "служб Windows" и разработал их как в VB.NET, так и в С# с минимальным кодом.
То, что я рекомендовал бы OP, - это научиться создавать для него пакет установщика. Установка службы так же просто, как выполнение "installutil.exe {drive]\path\to\file.exe", но когда вам нужно делать что-то большее, чем развертывать службу "привет мир" Windows, хорошо знать и понимать, как действительно развертывайте службу значимым образом.
Не запускать пламенную войну, но я "стандартизовал" использование WiX для всех моих пакетов развертывания, за пределами делая старую школой COM-типа типа, так как это нагрузка на работу, чтобы установить ее правильно. Я очень хочу, чтобы команда WiX разработала кусок загрузочного диска, который позволяет помещать предварительные требования и основной msi в EXE файл, который можно загрузить. У них есть версия 3.5, поэтому я буду терпеливо ждать и теперь использовать исполняемые файлы WinZip Self-Extracting.
Для меня, и я только пробовал это несколькими способами, Visual Studio и С# были самыми легкими.
Visual Studio выполнила всю необходимую настройку сервисной сантехники для фреймворка, и я обнаружил, что С# очень прост в освоении, переход с VB6, VB.NET и C.
С Visual С# вы найдете большинство образцов кода в сети. В сочетании с Visual Studio, и это прогулка в парке, чтобы запустить базовую службу Windows. Visual Studio также позволяет быстро создать пакет установщика MSI.
Это был бы мой выбор
Используйте проект типа службы Visual Studio, используйте С# или VB.NET.
Я лично предпочитаю С#, но в целом легко понять жизненный цикл и закодировать логику на желаемой стадии.
Построение установщика также очень просто.
Проект службы Windows в С# предоставит вам полностью развертываемый сервис из шаблона Visual Studio одним нажатием кнопки. Вам просто нужно добавить свой код полезной нагрузки.