AutoGRAPH.NET Service — различия между версиями

Материал из TK
Перейти к: навигация, поиск
Строка 1: Строка 1:
Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET]]. Конфигурация схем выполняется с помощью диспетчерского ПО AutoGRAPH.NET. Работает в двух режимах – консольном и как сервис.
+
Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET|AutoGRAPH.NET]]. Конфигурация схем выполняется с помощью диспетчерского ПО AutoGRAPH.NET. Работает в двух режимах – консольном и как сервис.
   
 
== Минимальные требования к аппаратному и программному обеспечению ==
 
== Минимальные требования к аппаратному и программному обеспечению ==
Строка 6: Строка 6:
 
*Windows 2003 или более новая
 
*Windows 2003 или более новая
 
*.NET Framework 4.0 или более новый
 
*.NET Framework 4.0 или более новый
*установленный загрузчик данных ([[AGDataLoader|AutoGRAPH DataLoader]]) или [[AutoGRAPH Server 5|AutoGRAPH Server 3.x или 4.x или 5.x]]
+
*установленный загрузчик данных ([[AGDataLoader|AutoGRAPH DataLoader]]) или [[AutoGRAPH_Server_5|AutoGRAPH Server 3.x или 4.x или 5.x]]
   
 
== Загрузка ==
 
== Загрузка ==
   
Последняя версия: 2015.7.18.1, [[Media:AutoGRAPHNETService20150718 1.zip|загрузить]]
+
Последняя версия: 2015.7.18.1, [[Media:AutoGRAPHNETService20150718_1.zip|загрузить]]
   
 
== Режим консоли ==
 
== Режим консоли ==
Строка 19: Строка 19:
   
 
Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки:
 
Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки:
  +
<pre>sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe"
 
<pre>
 
sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe"
 
 
</pre>
 
</pre>
   
Строка 29: Строка 27:
   
 
После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл '''AutoGRAPHNETService.exe.config'''. Далее приведены описания ключей файла конфигурации:
 
После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл '''AutoGRAPHNETService.exe.config'''. Далее приведены описания ключей файла конфигурации:
  +
<pre><add key="key-file" value="N:\Ключи АвтоГРАФ-Сервер\AutoGRAPHServer_3.0\30008_4x4_magnitka.agkey"/>
 
<pre>
 
<add key="key-file" value="N:\Ключи АвтоГРАФ-Сервер\AutoGRAPHServer_3.0\30008_4x4_magnitka.agkey"/>
 
 
<add key="address" value="http://localhost:800/"/>
 
<add key="address" value="http://localhost:800/"/>
 
<add key="address-json" value="http://localhost:810/"/>
 
<add key="address-json" value="http://localhost:810/"/>
Строка 59: Строка 55:
 
|-
 
|-
 
| style="width: 127px;" | common-directory<br/>
 
| style="width: 127px;" | common-directory<br/>
| style="width: 1145px;" | каталог с общими данными (структура каталога аналогична каталогу [[AutoGRAPH.NET]] – с подкаталогами Schemes, GeoFences, Devices в которых находятся соответствующие файлы схем, геозон, приборов)<br/>
+
| style="width: 1145px;" | каталог с общими данными (структура каталога аналогична каталогу [[AutoGRAPH.NET|AutoGRAPH.NET]] – с подкаталогами Schemes, GeoFences, Devices в которых находятся соответствующие файлы схем, геозон, приборов)<br/>
 
|-
 
|-
 
| style="width: 127px;" | data-directory<br/>
 
| style="width: 127px;" | data-directory<br/>
| style="width: 1145px;" | каталог данных (=data-каталог) [[AGDataLoader|AutoGRAPH DataLoader]] или [[AutoGRAPH Server 5|AutoGRAPH Server 3.x или 4.x или 5.x]]<br/>
+
| style="width: 1145px;" | каталог данных (=data-каталог) [[AGDataLoader|AutoGRAPH DataLoader]] или [[AutoGRAPH_Server_5|AutoGRAPH Server 3.x или 4.x или 5.x]]<br/>
 
|}
 
|}
  +
После редактирования конфиг-файла можно запустить сервис (или консольно) и сделать запрос:<br/><pre>svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer
 
  +
</pre>
После редактирования конфиг-файла можно запустить сервис (или консольно) и сделать запрос:<br/><pre>
 
  +
<br/>В данном случае будет создан файл AutoGRAPHSvc.cs с прокси-классом для доступа к WCF-точке сервиса AutGRAPH.NET Service и '''output.config''' файл с описанием параметров подключения WCF. Файл '''output.config''' в данном случае не используется.
svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer
 
</pre><br/>В данном случае будет создан файл AutoGRAPHSvc.cs с прокси-классом для доступа к WCF-точке сервиса AutGRAPH.NET Service и '''output.config''' файл с описанием параметров подключения WCF. Файл '''output.config''' в данном случае не используется.
 
 
 
== Методы сервиса ==
 
== Методы сервиса ==
   
*[[AutoGRAPH.NET Service EnumSchemas|EnumSchemas]] – получение списка доступных сервису схем
+
*[[AutoGRAPH.NET_Service_EnumSchemas|EnumSchemas]] – получение списка доступных сервису схем
*[[AutoGRAPH.NET Service EnumDevices|EnumDevices]] – получение списка устройств схемы
+
*[[AutoGRAPH.NET_Service_EnumDevices|EnumDevices]] – получение списка устройств схемы
*[[AutoGRAPH.NET Service EnumDrivers|EnumDrivers]] &nbsp;– получение информации о водителях в схеме
+
*[[AutoGRAPH.NET_Service_EnumDrivers|EnumDrivers]] &nbsp;– получение информации о водителях в схеме
*[[AutoGRAPH.NET Service EnumGeoFences|EnumGeoFences]] – получение списка геозон схемы
+
*[[AutoGRAPH.NET_Service_EnumGeoFences|EnumGeoFences]] – получение списка геозон схемы
*[[AutoGRAPH.NET Service GetGeoFences|GetGeoFences]] &nbsp;– получение информации о геозонах (точки для полигонов и т.д.)
+
*[[AutoGRAPH.NET_Service_GetGeoFences|GetGeoFences]] &nbsp;– получение информации о геозонах (точки для полигонов и т.д.)
*[[AutoGRAPH.NET Service GetDevicesInfo|GetDevicesInfo]] – получение информации об устройстве в схеме
+
*[[AutoGRAPH.NET_Service_GetDevicesInfo|GetDevicesInfo]] – получение информации об устройстве в схеме
*[[AutoGRAPH.NET Service EnumParameters|EnumParameters]] – получение списка параметров устройства в схеме
+
*[[AutoGRAPH.NET_Service_EnumParameters|EnumParameters]] – получение списка параметров устройства в схеме
*[[AutoGRAPH.NET Service GetOnlineInfo|GetOnlineInfo]] – получение информации о последнем местоположении устройств
+
*[[AutoGRAPH.NET_Service_GetOnlineInfo|GetOnlineInfo]] – получение информации о последнем местоположении устройств
*[[AutoGRAPH.NET Service GetOnlineInfoAll|GetOnlineInfoAll]] &nbsp;– получение информации о последнем местоположении всех устройств
+
*[[AutoGRAPH.NET_Service_GetOnlineInfoAll|GetOnlineInfoAll]] &nbsp;– получение информации о последнем местоположении всех устройств
 
*''GetDataRanges – получение информации о загруженных данных для приборов (минимальная/максимальные доступные даты)''
 
*''GetDataRanges – получение информации о загруженных данных для приборов (минимальная/максимальные доступные даты)''
*[[AutoGRAPH.NET Service GetTrips|GetTrips]] – получение информации о рейсах устройства с текущими настройками схемы
+
*[[AutoGRAPH.NET_Service_GetTrips|GetTrips]] – получение информации о рейсах устройства с текущими настройками схемы
*[[AutoGRAPH.NET Service GetTripsCustom|GetTripsCustom]] [[File:Tag-new.png]] – получение информации о рейсах устройства с указанными геозонами
+
*[[AutoGRAPH.NET_Service_GetTripsCustom|GetTripsCustom]] [[File:Tag-new.png|RTENOTITLE]] – получение информации о рейсах устройства с указанными геозонами
*[[AutoGRAPH.NET Service GetStage|GetStage]] [[File:Tag-new.png]] – получение информации по одному отрезку для устройств
+
*[[AutoGRAPH.NET_Service_GetStage|GetStage]] [[File:Tag-new.png|RTENOTITLE]] – получение информации по одному отрезку для устройств
*[[AutoGRAPH.NET Service GetTrack|GetTrack]] – получение трека (даты/время, координаты, скорость) устройства с текущими настройками схемы
+
*[[AutoGRAPH.NET_Service_GetTrack|GetTrack]] – получение трека (даты/время, координаты, скорость) устройства с текущими настройками схемы
*[[AutoGRAPH.NET Service GetProperties|GetProperties]] – получение списка свойств и их значений устройства
+
*[[AutoGRAPH.NET_Service_GetProperties|GetProperties]] – получение списка свойств и их значений устройства
*[[AutoGRAPH.NET Service GetProperty|GetProperty]] – получение значения одного свойства у списка приборов
+
*[[AutoGRAPH.NET_Service_GetProperty|GetProperty]] – получение значения одного свойства у списка приборов
*[[AutoGRAPH.NET Service GetRoute|GetRoute]] – прокладка маршрута и получение этой информации в виде набора точек
+
*[[AutoGRAPH.NET_Service_GetRoute|GetRoute]] – прокладка маршрута и получение этой информации в виде набора точек
*[[AutoGRAPH.NET Service WaitData|WaitData]] [[File:Tag-new.png]] - ожидание получения новых данных
+
*[[AutoGRAPH.NET_Service_WaitData|WaitData]] [[File:Tag-new.png|RTENOTITLE]] - ожидание получения новых данных
   
*[[AutoGRAPH.NET Service EnumReports|EnumReports]] [[File:Tag-new.png]] - получение списка доступных отчетов
+
*[[AutoGRAPH.NET_Service_EnumReports|EnumReports]] [[File:Tag-new.png|RTENOTITLE]] - получение списка доступных отчетов
*[[AutoGRAPH.NET Service GetReports|GetReports]] [[File:Tag-new.png]] - выполнение отчета и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается)
+
*[[AutoGRAPH.NET_Service_GetReports|GetReports]] [[File:Tag-new.png|RTENOTITLE]] - выполнение отчета и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается)
*[[AutoGRAPH.NET Service ExecuteReports|ExecuteReports]] [[File:Tag-new.png]] - асинхронное выполнение отчета(ов)
+
*[[AutoGRAPH.NET_Service_ExecuteReports|ExecuteReports]] [[File:Tag-new.png|RTENOTITLE]] - асинхронное выполнение отчета(ов)
*[[AutoGRAPH.NET Service GetReportsStatus|GetReportsStatus]] [[File:Tag-new.png]] - получение состояния выполнения отчета(ов)
+
*[[AutoGRAPH.NET_Service_GetReportsStatus|GetReportsStatus]] [[File:Tag-new.png|RTENOTITLE]] - получение состояния выполнения отчета(ов)
 
*''CancelReports - отмена выполнения отчета''
 
*''CancelReports - отмена выполнения отчета''
   
 
== Примеры ==
 
== Примеры ==
   
  +
<code><syntaxhighlight lang="csharp">
 
  +
<syntaxhighlight lang="null">
 
using System;
 
using System;
 
using System.Collections.Generic;
 
using System.Collections.Generic;
Строка 160: Строка 155:
 
}
 
}
 
}
 
}
</syntaxhighlight></code>
+
</syntaxhighlight>
  +
<u>Файл .exe.config вышеприведенного примера</u>
 
<u>Файл .exe.config вышеприведенного примера</u><br/><syntaxhighlight lang="xml">
+
<br/><syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="utf-8" ?>
 
<?xml version="1.0" encoding="utf-8" ?>
 
<configuration>
 
<configuration>
Строка 190: Строка 185:
 
</configuration>
 
</configuration>
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
Данный конфигурационный файл содержит WCF-конфигурацию для точки подключения сервиса. По умолчанию используется HTTP binding, но ровно таким [https://msdn.microsoft.com/en-us/library/ms733027(v=vs.110).aspx же способом]&nbsp;можно включить и [http://wcfsecurity.codeplex.com/wikipage?title=Questions and Answers&referringTitle=Home=Home другие транспорты].
 
Данный конфигурационный файл содержит WCF-конфигурацию для точки подключения сервиса. По умолчанию используется HTTP binding, но ровно таким [https://msdn.microsoft.com/en-us/library/ms733027(v=vs.110).aspx же способом]&nbsp;можно включить и [http://wcfsecurity.codeplex.com/wikipage?title=Questions and Answers&referringTitle=Home=Home другие транспорты].
   
== [[AutoGRAPH.NET Service Диагностика неисправностей|Диагностика неисправностей]] ==
+
== [[AutoGRAPH.NET_Service_Диагностика_неисправностей|Диагностика неисправностей]] ==
   
Список возможных ошибок и особенностей конфигурации приведён [[AutoGRAPH.NET Service Диагностика неисправностей|здесь]].
+
Список возможных ошибок и особенностей конфигурации приведён [[AutoGRAPH.NET_Service_Диагностика_неисправностей|здесь]].

Версия 10:16, 4 августа 2015

Сервис предоставляет WCF/JSON API для доступа ядру расчетов AutoGRAPH.NET. Конфигурация схем выполняется с помощью диспетчерского ПО AutoGRAPH.NET. Работает в двух режимах – консольном и как сервис.

Минимальные требования к аппаратному и программному обеспечению

Загрузка

Последняя версия: 2015.7.18.1, загрузить

Режим консоли

В основном предназначен для отладки и тестирования. Достаточно просто запустить файл AutoGRAPHNETService.exe.

Режим сервиса

Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки:

sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe"

 между binPath= и полным путем - пробел 

Описание работы

После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл AutoGRAPHNETService.exe.config. Далее приведены описания ключей файла конфигурации:

<add key="key-file" value="N:\Ключи АвтоГРАФ-Сервер\AutoGRAPHServer_3.0\30008_4x4_magnitka.agkey"/>
<add key="address" value="http://localhost:800/"/>
<add key="address-json" value="http://localhost:810/"/>
<add key="common-directory" value="C:\ProgramData\AutoGRAPH Shell"/>
<add key="data-directory" value="C:\Users\denisio\AppData\Roaming\AutoGRAPH Shell\Data"/>
key-file файл ключа .agkey (от AutoGRAPH.Server), который разрешает использования для прописанного списка приборов. Данный файл находится в каталоге AutoGRAPH.Server.
Обязательный параметр! Без него сервис работать не будет.
address локальный адрес, на котором обрабатываются запросы по протоколу WCF (в настоящий момент протестирован только механизм httpBinding). Формат - url:port
Варианты использования:
  • http://192.168.1.3:8000 - принимать подключения на локальном IP-адресе 192.168.1.3 и TCP-порт 8000 (обычно данный вариант используется, если в сервере установлено несколько сетевых карт или задано несколько IP-адресов)
  • http://0.0.0.0:8000 или http://*:8000 - принимать подключения на всех доступных локальных IP-адресах и TCP-порту 8000
  • http://127.0.0.1:8000 - принимать подключения только локально (обычно используется, когда приложение, которое работает со службой, установлено на том же компьютере, что и служба. При этом запросы, идущие через сетевые карты - будут игнорироваться в целях безопасности. Типичный пример - установка службы на сервере 1С:Предприятия.)
address-json локальный адрес, на котором обрабатываются запросы по протоколу JSON. Формат - url:port
Варианты использования:
  • http://192.168.1.3:8000 - принимать подключения на локальном IP-адресе 192.168.1.3 и TCP-порт 8000 (обычно данный вариант используется, если в сервере установлено несколько сетевых карт или задано несколько IP-адресов)
  • http://0.0.0.0:8000 или http://*:8000 принимать подключения на всех доступных локальных IP-адресах и TCP-порту 8000
  • http://127.0.0.1:8000 - принимать подключения только локально (обычно используется, когда приложение, которое работает со службой, установлено на том же компьютере, что и служба. При этом запросы, идущие через сетевые карты - будут игнорироваться в целях безопасности. Типичный пример - установка службы на сервере 1С:Предприятия.)
common-directory
каталог с общими данными (структура каталога аналогична каталогу AutoGRAPH.NET – с подкаталогами Schemes, GeoFences, Devices в которых находятся соответствующие файлы схем, геозон, приборов)
data-directory
каталог данных (=data-каталог) AutoGRAPH DataLoader или AutoGRAPH Server 3.x или 4.x или 5.x

После редактирования конфиг-файла можно запустить сервис (или консольно) и сделать запрос:

svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer


В данном случае будет создан файл AutoGRAPHSvc.cs с прокси-классом для доступа к WCF-точке сервиса AutGRAPH.NET Service и output.config файл с описанием параметров подключения WCF. Файл output.config в данном случае не используется.

Методы сервиса

  • EnumSchemas – получение списка доступных сервису схем
  • EnumDevices – получение списка устройств схемы
  • EnumDrivers  – получение информации о водителях в схеме
  • EnumGeoFences – получение списка геозон схемы
  • GetGeoFences  – получение информации о геозонах (точки для полигонов и т.д.)
  • GetDevicesInfo – получение информации об устройстве в схеме
  • EnumParameters – получение списка параметров устройства в схеме
  • GetOnlineInfo – получение информации о последнем местоположении устройств
  • GetOnlineInfoAll  – получение информации о последнем местоположении всех устройств
  • GetDataRanges – получение информации о загруженных данных для приборов (минимальная/максимальные доступные даты)
  • GetTrips – получение информации о рейсах устройства с текущими настройками схемы
  • GetTripsCustom RTENOTITLE – получение информации о рейсах устройства с указанными геозонами
  • GetStage RTENOTITLE – получение информации по одному отрезку для устройств
  • GetTrack – получение трека (даты/время, координаты, скорость) устройства с текущими настройками схемы
  • GetProperties – получение списка свойств и их значений устройства
  • GetProperty – получение значения одного свойства у списка приборов
  • GetRoute – прокладка маршрута и получение этой информации в виде набора точек
  • WaitData RTENOTITLE - ожидание получения новых данных
  • EnumReports RTENOTITLE - получение списка доступных отчетов
  • GetReports RTENOTITLE - выполнение отчета и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается)
  • ExecuteReports RTENOTITLE - асинхронное выполнение отчета(ов)
  • GetReportsStatus RTENOTITLE - получение состояния выполнения отчета(ов)
  • CancelReports - отмена выполнения отчета

Примеры

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using AutoGRAPHService;

namespace AutoGRAPHSvcTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var svc = new AutoGRAPHSvcClient();            // создаем прокси-класс с адресом подключения по умолчанию

            RSchema[] schemas;
            using (var f = new TimeCalc("EnumSchemas"))    // запрашиваем список доступных схем
               schemas = svc.EnumSchemas();

            REnumDevices devices;
            using (var f = new TimeCalc("EnumDevices"))
               devices = svc.EnumDevices(schemas[0].Name); // запрашиваем список доступных в схеме приборов
            foreach (var item in devices.Items)
               Console.WriteLine("\t" + item.Name);

            using (var f = new TimeCalc("EnumGeoFences"))  // запрашиваем список доступных в схеме геозон
               svc.EnumGeoFences(schemas[0].Name);
            using (var f = new TimeCalc("GetDevicesInfo"))
               svc.GetDevicesInfo(schemas[0].Name);
            
            using (var f = new TimeCalc("EnumParameters")) // запрашиваем список параметров для всех ТС в схеме
               svc.EnumParameters(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray());
            
            using (var f = new TimeCalc("GetOnlineInfo"))  // запрашиваем онлайн-состояние всех ТС в схеме
               svc.GetOnlineInfo(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray());
            
            using (var f = new TimeCalc("GetTrips"))       // запрашиваем список рейсов за последние 5 дней для всех ТС, с номерами начинающихся 9999998
                svc.GetTrips(schemas[0].Name,
                    devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),
                    DateTime.Now.AddDays(-5), DateTime.Now);
            
            using (var f = new TimeCalc("GetTrack"))       // запрашиваем треки за последние 5 дней для всех ТС, с номерами начинающихся 9999998
            {
                var t1 = svc.GetTrack(schemas[0].Name,
                    devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),
                    DateTime.Now.AddDays(-5), DateTime.Now);                
            }

            Console.ReadLine();
        }
    }

    // простой класс для замера скорости выполнения блока
    class TimeCalc:IDisposable
    {
        readonly DateTime DT;
        readonly string name;
        internal TimeCalc(string name) { DT = DateTime.Now; this.name = name; }
        void IDisposable.Dispose() { Console.WriteLine(name+": "+DateTime.Now.Subtract(DT).TotalSeconds.ToString("F3", CultureInfo.InvariantCulture)); }
    }
}

Файл .exe.config вышеприведенного примера


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.serviceModel>
 <bindings>
 <basicHttpBinding>
 <binding name="BasicHttpBinding_IAutoGRAPHSvc"
 closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
 allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
 maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
 messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
 <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16348"
 maxBytesPerRead="4096" maxNameTableCharCount="16384" />
 <security mode="None">
 <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
 <message clientCredentialType="UserName" algorithmSuite="Default" />
 </security>
 </binding>
 </basicHttpBinding>
 </bindings>
 <client>
 <endpoint address="http://localhost:800/" binding="basicHttpBinding"
 bindingConfiguration="BasicHttpBinding_IAutoGRAPHSvc" contract="IAutoGRAPHSvc"
 name="BasicHttpBinding_IAutoGRAPHSvc" />
 </client>
 </system.serviceModel>
</configuration>

Данный конфигурационный файл содержит WCF-конфигурацию для точки подключения сервиса. По умолчанию используется HTTP binding, но ровно таким же способом можно включить и and Answers&referringTitle=Home=Home другие транспорты.

Диагностика неисправностей

Список возможных ошибок и особенностей конфигурации приведён здесь.