Как управлять Windows сервисом из программы WinForms [C#]

Возникло у меня задание, управлять сервисом Windows из GUI программы написанной на C# WinForms. Сервис управляет модемным Интернет подкючением. Заказчик захотел иметь возможность управлять сервисом напрямую из программы. Т.е. ему нужна следующая функциональность — Остановить, Запустить, Перезапустить, отобразить текущее состояние.

Для этого я написал простой класс, который делает это при помощи стандартного ServiceController класса.

Читать далее

Single Page Application : ASP.NET MVC .NET Core 2 + Angular 5. Часть 6.

В этой статье я продолжу улучшать тестовый проект. И по плану я буду делать следующие:

  • Изменю структуру проекта, сделаю его похожим на реальное приложение, с несколькими страницами, действиям пользователя, администрированием, авторизацией.
  • После реорганизации проекта, добавлю в него авторизацию на основе токенов OpenID/OAuth2 (используя ASOS)

Это достаточно много работы, несмотря на то, что это всего 2 пункта. Авторизация и аунтефикация обьемные темы. А реарганизация проекта снова вынуждает парвить файлы и добавлять реализацию в уже существующие. Поэтому это снова будет обьемная статья, так что будьте готовы 🙂

Читать далее

Single Page Application : ASP.NET MVC .NET Core + Angular 4. Часть 3.

Вот наконец и появилось время сесть и написать новую часть из задуманной серии статей. В прошлых частях мы создали некий каркас приложения, в котором связали вместе работу серверной части на ASP.NET MVC и клиентской части на Angular 4. Как и было задумано, мы начали создавать Single Page Application.  И как видно по первым результатам такой тип приложения смотрится намного выгоднее простого стандартного ASP.NET MVC Приложения. А все потому, что навигация по страницам приложения практически мгновенная — представления грузятся один раз и переключение между ними не требует обращений к серверу (представления кешируются, так как являются статическим HTML кодом). На страницу нужно подгружать только данные, которые так же можно закешировать на стороне клиента, если создать достаточно «умное» клиентское приложение.

Читать далее

Single Page Application : ASP.NET MVC .NET Core + Angular 4. Часть 5.

Новая статья после долгого (вынужденного) перерыва. Это будет уже пятой частью в сери статей о создание одностраничного приложения с использованием ASP.NET MVC .NET Core и Angular 4. Следующим логичным шагом в создании приложения будет добавления авторизации пользователей. Но сначало нужно немного обновить проект. Со времени последней публикации прошло несколько месяцев и за это время произошло несолько событий:

  • Вышел релиз PostgreSQL 10 и pgAdmin 4
  • Вышло обновление .NET Core до версии 2.0
  • Обновилась система авторизации ASOS

Таким образом в данной статье я хочу описать подготовительные работы по обновлению проекта:

  • переведу базу данных на PostgreSQL 10
  • приведу имена таблиц и полей в соответствие с философией PostgreSQL
  • добавлю таблицу пользователей
  • обновим проект до версии .NET Core 2.0
  • перепишу код доступа к БД. Избавлюсь от Entity Framework и буду использовать более эффективный npgsql драйвер
  • вынесу код доступа к БД в отдельный проект
  • реализую обьекты для управления пользователями

Это будет подготовительный этап. В следующей части я займусь непосредственно реализацией авторизации:

  • Добавлю поддержку ASOS в проект для авторизации при помощи токенов OpenID / OAuth2
  • Реализую код для авторизации и создания access_token и refresh_token для работы с Web API
  • Реализую страницы авторизации и добавления новго пользователя в Angular 4
  • Изменю структуру проекта, что бы сделать его более завершенным

Как видите, я собираюсь сделать много изменений, и именно поэтому решил разбить статью на две части. Так будет проще воспринимать новую информацию.
Итак, начнем.

Читать далее

Single Page Application : ASP.NET MVC .NET Core + Angular 4. Часть 4.

Вот я добрался и до новой части в цикле статей о SPA на основе Angular 4 и ASP.NET MVC Core. Как и обещал, в этой части будем реализовывать следующие вещи:

  • добавим поддержку небольшой базы данных PostgreSQL
  • добавим новый HTML Tag Helper для отработки ввода данных

Читать далее

Поиск размера различных объектов в базе данных PostgreSQL

Недавно мне нужно было оптимизировать базу данных на портале дл яобработки данных от устройств мониторинговой сети. Данных там очень много, плюс к ним много различной служебной информации сохраняется, так сказать попутно. И база данных растет очень быстро. Было принято решение проанализировать размеры таблиц и интдексов и оптимизировать их (где то убрать ненужные поля, где то уменьшить количество вставок в таблицу и т.д.). Результатом этой работы стал небольшой список SQL запросов для PostgreSQL базы данных, который я хотел бы сохранить для себя, ну и поделиться со всеми, кому они могут понадобиться.

Читать далее

Single Page Application : ASP.NET MVC .NET Core + Angular 4. Часть 2.

В предыдущей части мы создали простой каркас веб сайта, который использует ASP.NET MVC и Angular. Но основная проблема – у нас как бы 2 приложения. Одно – это ASP.NET MVC, которое можно вызвать при помощи URL /home/index, а второе приложение – это Angular, которое доступно запускается из файла /index.html. Теперь давайте попробуем соединить эти два приложения в одно.

Читать далее

Single Page Application : ASP.NET MVC .NET Core + Angular 4. Часть 1.

Моя основная работа связанна с разработкой программ для встроенных систем и утилит, которые их обслуживают. Но мне всегда нравился Web и технологии связанные с ним. Мое знакомство с Web программированием началось давно, а первым серверным языком был старый и ужасный ASP. Это тот, который на Visual Basic. После этого был PHP и Perl. Ни один из них мне не нравился. У каждого были свои проблемы и до идеальной платформы разработки Web приложений они явно не дотягивали (PHP тоже не айс, хотя он и широко используется для самых разных проектов). А еще мне всегда нравилась платформа Windows. Поэтому появление ASP.NET было просто как божий дар для меня – платформа для разработки Web приложений, ориентирован на Windows IIS и при помощи моего любимого языка C# с мощной поддержкой в лице .NET Framework.

Читать далее

Функции CRC и LRC для Modbus RTU / Modbus ASCII

В предыдущих статьях описывался формат запросов и ответов для Modbus RTU и Modbus ASCII протоколов. В этих протоколах для подтверждения целостности данных используются контрольные суммы, которые вычисляются по специальным алгоритмам. В тех статьях я не описывал их, так что сейчас я приведу пример функций который это делают. Я собираюсь написать их на двух языках — C# и C/C++. Думаю они будут полезны.

Читать далее