Самый легкий язык для создания службы Windows

Как насчет использования функции EARLIER следующим образом:

Yesterday = 
CALCULATE(
          MAX('sample'[Price]),
          FILTER(
                'sample',
                'sample'[DATE]<EARLIER('sample'[DATE])
                )
         )
52
задан Peter Mortensen 9 August 2010 в 10:31
поделиться

6 ответов

Рискуя тем, чтобы заявить очевидное, если у Вас есть какой-либо фон C/C ++/Java, я думаю, что C# предлагает Вам самую низкую точку входа.

Принятие Вы используете Visual Studio 2008, можно выполнить эти шаги:

  1. Открывают Visual Studio 2008 и выбирают пункт меню File|New|Project.
  2. В Новом диалоговом окне Проекта...
    • Выбор Визуальный C# | узел Windows в типах Проекта
    • Выбор шаблон Windows Service
    • Входит, название и местоположение для Вашего проекта
    • Нажимают OK
  3. At this point, у Вас есть все основы для Вашей службы Windows. Файл Program.cs содержит Основное () метод для Вашего сервиса, и Service1.cs определяет Систему. ServiceProcess. Компонент ServiceBase, который является Вашей новой службой Windows.
  4. В Сетке Свойства для Вашего компонента Service1, рассмотрите установку следующих свойств как минимум:
    • (Имя) - дают Вашему объекту интуитивное имя, например, ServiceExample
    • AutoLog - набор к false, чтобы препятствовать тому, чтобы события были записаны по умолчанию в журнал событий Приложения (Примечание: я не говорю, что Вы не должны регистрировать сервисные события; я просто предпочитаю писать в свой собственный журнал событий вместо Журнала приложения - видят ниже)
    • CanShutdown - набор к true, если Вы хотите обработать завершения работы системы
    • , ServiceName - определяет имя, которым Ваш сервис будет известен Диспетчеру управления службами (SCM)
  5. В коде для ServiceExample, OnStart () и OnStop (), виртуальные функции погашены. Необходимо будет заполнить их с тем, что сервис должен сделать, очевидно. При изменении свойства CanShutdown на true Вы захотите переопределить метод OnShutdown также. Я создал пример ниже иллюстрирования использования этих функций.
  6. На данном этапе услуги ServiceExample чрезвычайно завершены, но Вам все еще нужен способ установить их. Чтобы сделать это, откройте компонент ServiceExample в разработчике. Щелкните правой кнопкой где угодно в панели разработчика и выберите пункт меню Add Installer. Это добавляет компонент ProjectInstaller к Вашему проекту, который содержит два дополнительных компонента - serviceProcessInstaller1 и serviceInstaller1.
  7. Выбор serviceProcessInstaller1 компонент в разработчике. В Сетке Свойства рассмотрите установку следующих свойств:
    • (Имя) - дают Вашему объекту интуитивное имя, например, Учетная запись serviceProcessInstaller
    • - выбирает учетную запись LocalService как минимум, но Вам, вероятно, придется использовать учетную запись NetworkService или LocalSystem, если Ваш сервис требует большего количества полномочий
  8. Выбор serviceInstaller1 компонент в разработчике. В Сетке Свойства рассмотрите установку следующих свойств:
    • (Имя) - дают Вам, возражают интуитивному имени, например, описание serviceInstaller
    • - описание сервиса, которое соберется в SCM для Вашего сервиса
    • DisplayName - дружественное название Вашего сервиса, который соберется в SCM для Вашего сервиса
    • , ServiceName - удостоверяются, что это - то же имя, которое Вы выбрали для свойства ServiceName Вашего компонента ServiceExample (см. Шаг 4)
    • StartType - указывают, хотите ли Вы сервис запуститься автоматически, или вручную
  9. Помнят, что я сказал, что предпочитаю писать события в свой собственный журнал событий вместо журнала событий Приложения. Чтобы сделать это, необходимо будет заменить EventLogInstaller по умолчанию в ProjectInstaller с пользовательским. Заставьте свой код для Вашего ProjectInstaller быть похожим на это:
<час>
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 в конечном счете Средство просмотра и видеть сообщения, зарегистрированные там.

Hope это помогает.

РЕДАКТИРОВАНИЕ: Если Вы предпочитаете использовать журнал событий Приложения для своей регистрации событий вместо пользовательской, просто не внесите изменения в файл ProjectInstaller.cs. Кроме того, не учтите строку, которая устанавливает свойство Log EventLog в конструкторе ServiceExample. При выполнении сервиса сообщения журнала появятся в журнале событий Приложения.

180
ответ дан Matt Davis 7 November 2019 в 08:59
поделиться

Я соглашаюсь со всеми, которые ответили в другом месте, но я сказал бы, не фокусируются слишком много на фактическом языке, пока Вы работаете в платформе.NET, и существует проект начинающего для Вас, Вы хороши для движения. Я сделал несколько "служб Windows" в прошлом и разработал их обоих в VB.NET и C# с минимальным кодом.

, Что я рекомендовал бы, OP, чтобы сделать должен изучить, как создать пакет установщика для него. Установка сервиса так же легка, как выполняющийся "installutil.exe {управляет }\\path\to\file.exe", но когда необходимо сделать что-либо большее, чем развертывание "привет мировой" службы Windows, хорошо знать и понять, как действительно развертывают сервис значимым способом.

для Не запуска войны пламени но я "стандартизировал" при использовании WiX для всех моих пакетов развертывания, за пределами выполнения олдскульного взаимодействующего с COM материала типа, так как это - главный удар работы для получения для установки правильно. Я мечтаю о команде WiX для разработки bootstrapper части, которая позволяет Вам помещать предпосылки и основной msi в EXE-файл, который может быть загружен. Им наметили его для 3,5, таким образом, я буду терпеливо ожидать, и использовать WinZip, Самораспаковывающийся исполняемые файлы на данный момент.

4
ответ дан Peter Mortensen 7 November 2019 в 08:59
поделиться

С Визуальным C# Вы найдете большинство примеров кода в сети. Объединенный с Visual Studio, и это - обход в парке для подъема основной службы Windows и выполнения. Visual Studio также делает это защелкой для создания пакета установщика MSI.

, Который был бы моим выбором

0
ответ дан Scott Ferguson 7 November 2019 в 08:59
поделиться

Для меня, и я только попробовал его, несколько путей, Visual Studio и C# были самыми легкими.

Visual Studio сделала весь необходимый сервис, устанавливающий вертикально установку для платформы, и я нашел C# очень легкий учиться, мигрировав от VB6, VB.NET и C.

0
ответ дан Doug L. 7 November 2019 в 08:59
поделиться

Сервисный проект окон в C# даст Вам полностью развертываемый сервис из шаблона Visual Studio щелчком кнопки. Просто необходимо добавить код полезной нагрузки.

0
ответ дан cdonner 7 November 2019 в 08:59
поделиться

Используйте Сервисный проект типа Visual Studio, используйте C# или VB.NET.

я лично предпочитаю C#, но в целом легко понять жизненный цикл и кодировать логику на желаемом этапе.

Здание установщик также очень легок.

0
ответ дан Peter Mortensen 7 November 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: