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

Материал из TK
Перейти к: навигация, поиск
 
(не показаны 142 промежуточные версии 5 участников)
Строка 1: Строка 1:
Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET]]. Конфигурация схем выполняется с помощью диспетчерского ПО AutoGRAPH.NET. Работает в двух режимах - консольном и как сервис.
+
Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET|AutoGRAPH.Pro]]. Сервис обычно используется для интеграции в сторонние системы. Конфигурация схем выполняется с помощью ПО AutoGRAPH 7 WEB. Работает как сервис начиная с версий 2015.12.х.
  +
  +
[[File:AGNetService.png|RTENOTITLE]]
   
 
== Минимальные требования к аппаратному и программному обеспечению ==
 
== Минимальные требования к аппаратному и программному обеспечению ==
   
*RAM - от 1 GB
+
*RAM от 2 GB
*Windows 2003 или более новая
+
*Windows 2008 R2 или более новая
*.NET Framework 4.0 или более новый
+
*.NET Framework 4.6.2 или более новый
*установленный загрузчик данных ([[AGDataLoader|AutoGRAPH DataLoader]]) или [[AutoGRAPH_Server_5|AutoGRAPH Server 3.x или 4.x или 5.x]]
+
*установленный загрузчик данных ([[AGDataLoader|AutoGRAPH DataLoader]]) или [[AutoGRAPH_Server_5|AutoGRAPH Server 4.x или 5.x]]
 
== Режим консоли ==
 
 
В основном предназначен для отладки и тестирования. Достаточно просто запустить файл '''AutoGRAPHNETService.exe'''.
 
 
== Режим сервиса ==
 
 
Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки:
 
 
<code>sc create AutoGRAPHNETService binPath= C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe</code>
 
 
<span class="marker">&nbsp;между binPath= и полным путем - пробел&nbsp;</span>
 
 
== Описание работы ==
 
 
После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл '''AutoGRAPHNETService.exe.config'''. Далее приведены описания ключей файла конфигурации:
 
 
<code>&nbsp; &nbsp; &lt;add key="key-file" value="N:\Ключи АвтоГРАФ-Сервер\AutoGRAPHServer_3.0\30008_4x4_magnitka.agkey"/&gt;<br/>&nbsp; &nbsp; &lt;add key="address" value="http://localhost:800/"/&gt;<br/>&nbsp; &nbsp; &lt;add key="address-json" value="http://localhost:810/"/&gt;<br/>&nbsp; &nbsp; &lt;add key="common-directory" value="C:\ProgramData\AutoGRAPH Shell"/&gt;<br/>&nbsp; &nbsp; &lt;add key="data-directory" value="C:\Users\denisio\AppData\Roaming\AutoGRAPH Shell\Data"/&gt;<br/></code>
 
 
{| border="1" cellspacing="0" cellpadding="5" style="width: 100%;"
 
|-
 
| key-file
 
| <span style="line-height: 20.7999992370605px;">файл ключа .agkey (от AutoGRAPH.Server), который разрешает использования для прописанного списка приборов.<span class="marker">Обязательный параметр! </span>&nbsp;<span class="marker"></span>Без него сервис работать не будет.</span><br/>
 
|-
 
| address
 
|
 
<span style="line-height: 20.7999992370605px;">локальный адрес/точка биндинга в формате url:port, в настоящий момент протестирован только механизм httpBinding.<br/>Ещё один пример точки биндинга - http://*:80/ - слушать 80й порт на всех интерфейсах</span>
 
 
|-
 
| address-json
 
| <span style="line-height: 20.7999992370605px;">локальный адрес/точка биндинга в формате url:port для JSON</span><br/>
 
|-
 
| <span style="line-height: 20.7999992370605px;">common-directory</span><br/>
 
| <span style="line-height: 20.7999992370605px;">каталог с общими данными (структура каталога аналогична каталогу [[AutoGRAPH.NET]] - с подкаталогами Schemes, GeoFences, Devices в которых находятся соответствующие файлы схем, геозон, приборов)</span><br/>
 
|-
 
| <span style="line-height: 20.7999992370605px;">data-directory</span><br/>
 
| <span style="line-height: 20.7999992370605px;">каталог данных (=data-каталог) [[AGDataLoader|AutoGRAPH DataLoader]] или </span>[[AutoGRAPH_Server_5|AutoGRAPH Server 3.x или 4.x или 5.x]]<span style="line-height: 20.7999992370605px;"></span><br/>
 
|}
 
 
После редактирования конфиг-файла можно запустить сервис (или консольно) и сделать запрос:
 
 
<code>svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer</code><br/><br/>В данном случае будет создан файл AutoGRAPHSvc.cs с прокси-классом для доступа к WCF-точке сервиса AutGRAPH.NET Service и '''output.config''' файл с описанием параметров подключения WCF. Файл '''output.config''' в данном случае не используется. В случае возникновения ошибок при работе или запуске - рекомендуется включить [[Режим_диагностики_(сетевой_уровень)_.NET_приложений|режим диагностики]].
 
   
  +
== Загрузка ==
== Методы сервиса ==
 
   
  +
Примеры: [http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip]
*[[AutoGRAPH.NET_Service_EnumSchemas|EnumSchemas]]&nbsp;- получение списка доступных сервису схем
 
*[[AutoGRAPH.NET_Service_EnumDevices|EnumDevices]]&nbsp;- получение списка устройств (приборов) схемы
 
*[[AutoGRAPH.NET_Service_EnumGeoFences|EnumGeoFences]]&nbsp;- получение списка геозон схемы
 
*[[AutoGRAPH.NET_Service_GetDevicesInfo|GetDevicesInfo]]&nbsp;- получение информации об устройстве (приборе) в схеме
 
*[[AutoGRAPH.NET_Service_EnumParameters|EnumParameters]]&nbsp;- получение списка параметров устройства (прибора) в схеме
 
*[[AutoGRAPH.NET_Service_GetOnlineInfo|GetOnlineInfo]]&nbsp;- получение информации о последнем местоположении устройств (приборов)
 
*[[AutoGRAPH.NET_Service_GetTrips|GetTrips]]&nbsp;- получение информации о рейсах устройства (прибора) с текущими настройками схемы
 
*[[AutoGRAPH.NET_Service_GetTrack|GetTrack]]&nbsp;- <span style="line-height: 20.7999992370605px;">получение трека (даты/время, координаты, скорость)&nbsp;устройства (прибора) с текущими настройками схемы</span>
 
*[[AutoGRAPH.NET_Service_GetProperties|GetProperties]]&nbsp;- получение списка свойств и их значений устройства (прибора)
 
*[[AutoGRAPH.NET_Service_GetProperty|GetProperty]]&nbsp;-&nbsp;<span style="line-height: 20.7999992370605px;">получение значения одного свойства у списка приборов</span>
 
*[[AutoGRAPH.NET_Service_GetRoute|GetRoute]]&nbsp;- прокладка маршрута и получение этой информации в виде набора точек
 
   
  +
Доступ к тестовому сервису:
== Примеры ==
 
   
  +
[http://m.tk-chel.ru/ServiceWCF2.svc http://m.tk-chel.ru/ServiceWCF.svc] (WCF)
<code>using System;<br/>using System.Collections.Generic;<br/>using System.Globalization;<br/>using System.Linq;<br/>using System.Text;<br/>using AutoGRAPHService;</code>
 
   
  +
[http://m.tk-chel.ru/ServiceJSON http://m.tk-chel.ru/ServiceJSON] (JSON)
<code>namespace AutoGRAPHSvcTest<br/>{<br/>&nbsp; &nbsp; class Program<br/>&nbsp; &nbsp; {<br/>&nbsp; &nbsp; &nbsp; &nbsp; static void Main(string[] args)<br/>&nbsp; &nbsp; &nbsp; &nbsp; {<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var svc = new AutoGRAPHSvcClient(); // создаем прокси-класс с адресом подключения по умолчанию</code>
 
   
  +
логин '''demo''' пароль '''demo'''
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RSchema[] schemas;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("EnumSchemas")) schemas = svc.EnumSchemas(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// запрашиваем список доступных схем</code>
 
   
  +
== Режим работы (AutoGRAPH.Web) ==
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; REnumDevices devices;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("EnumDevices")) devices = svc.EnumDevices(schemas[0].Name); // запрашиваем список доступных в схеме приборов<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var item in devices.Items) Console.WriteLine("\t" + item.Name);</code>
 
   
  +
Начиная с версий 2015.12.х, AutoGRAPH.Web предоставляет API AutoGRAPH.NET Service по путям:
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("EnumGeoFences")) svc.EnumGeoFences(schemas[0].Name); &nbsp; &nbsp; &nbsp; // запрашиваем список доступных в схеме геозон<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("GetDevicesInfo")) svc.GetDevicesInfo(schemas[0].Name);</code>
 
   
  +
WCF: [http://имя-веб-сервера/ServiceWCF2.svc http://имя-веб-сервера/ServiceWCF2.svc]
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // запрашиваем список параметров для всех ТС в схеме<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("EnumParameters")) svc.EnumParameters(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray());</code>
 
   
  +
1C: [http://имя-веб-сервера/Service1C.asmx http://имя-веб-сервера/Service1C.asmx]
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // запрашиваем онлайн-состояние всех ТС в схеме<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("GetOnlineInfo")) svc.GetOnlineInfo(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray());</code>
 
   
  +
JSON: [http://имя-веб-сервера/ServiceJSON http://имя-веб-сервера/ServiceJSON]&nbsp;- рекомендуется к использованию
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // запрашиваем список рейсов за последние 5 дней для всех ТС, с номерами начинающихся 9999998<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("GetTrips"))<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; svc.GetTrips(schemas[0].Name,<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DateTime.Now.AddDays(-5), DateTime.Now);</code>
 
   
  +
Подробее о механизме аутентификации Login&nbsp;[http://wiki.tk-chel.ru/index.php/AutoGRAPH.NET_Service_Auth здесь].
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // запрашиваем треки (с координатами и скоростями) за последние 5 дней для всех ТС, с номерами начинающихся 9999998<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var f = new TimeCalc("GetTrack"))<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var t1 = svc.GetTrack(schemas[0].Name,<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DateTime.Now.AddDays(-5), DateTime.Now); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</code>
 
   
  +
== Работа с сервисом ==
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.ReadLine();<br/>&nbsp; &nbsp; &nbsp; &nbsp; }<br/>&nbsp; &nbsp; }</code>
 
   
  +
=== [[AutoGRAPH.NET_Service_Methods|Методы сервиса]] ===
<code>&nbsp; &nbsp; // простой класс для замера скорости выполнения блока<br/>&nbsp; &nbsp; class TimeCalc:IDisposable<br/>&nbsp; &nbsp; {<br/>&nbsp; &nbsp; &nbsp; &nbsp; readonly DateTime DT;<br/>&nbsp; &nbsp; &nbsp; &nbsp; readonly string name;<br/>&nbsp; &nbsp; &nbsp; &nbsp; internal TimeCalc(string name) { DT = DateTime.Now; this.name = name; }<br/>&nbsp; &nbsp; &nbsp; &nbsp; void IDisposable.Dispose() { Console.WriteLine(name+": "+DateTime.Now.Subtract(DT).TotalSeconds.ToString("F3", CultureInfo.InvariantCulture)); }<br/>&nbsp; &nbsp; }<br/>}</code>
 
   
  +
=== [[AutoGRAPH.NET_Service_Examples|Примеры]] ===
<u>Файл .exe.config вышеприведенного примера</u><br/><code>&lt;?xml version="1.0" encoding="utf-8"&nbsp;?&gt;<br/>&lt;configuration&gt;<br/>&nbsp; &lt;system.serviceModel&gt;<br/>&nbsp; &nbsp; &lt;bindings&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;basicHttpBinding&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; <binding name="BasicHttpBinding_IAutoGRAPHSvc" closeTimeout="00:01:00"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; useDefaultWebProxy="true"><br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" /&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;security mode="None"&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;transport clientCredentialType="None" proxyCredentialType="None" realm="" /&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;message clientCredentialType="UserName" algorithmSuite="Default" /&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/security&gt;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/binding&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;/basicHttpBinding&gt;<br/>&nbsp; &nbsp; &lt;/bindings&gt;<br/>&nbsp; &nbsp; &lt;client&gt;<br/>&nbsp; &nbsp; &nbsp; <endpoint address="[http://localhost:800/ http://localhost:800/]" binding="basicHttpBinding"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bindingConfiguration="BasicHttpBinding_IAutoGRAPHSvc" contract="IAutoGRAPHSvc"<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name="BasicHttpBinding_IAutoGRAPHSvc" /><br/>&nbsp; &nbsp; &lt;/client&gt;<br/>&nbsp; &lt;/system.serviceModel&gt;<br/>&lt;/configuration&gt;</code><br/>
 
   
  +
=== [[AutoGRAPH.NET_Service_Диагностика_неисправностей|Диагностика неисправностей]] ===
Данный конфигурационный файл содержит WCF-конфигурацию для точки подключения сервиса. По умолчанию используется HTTP binding, но ровно таким [https://msdn.microsoft.com/en-us/library/ms733027(v=vs.110).aspx же способом]&nbsp;можно включить и [http://wcfsecurity.codeplex.com/wikipage?title=Questions%20and%20Answers&referringTitle=Home=Home другие транспорты].
 

Текущая версия на 15:11, 6 октября 2020

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

RTENOTITLE

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

Загрузка

Примеры: http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip

Доступ к тестовому сервису:

http://m.tk-chel.ru/ServiceWCF.svc (WCF)

http://m.tk-chel.ru/ServiceJSON (JSON)

логин demo пароль demo

Режим работы (AutoGRAPH.Web)

Начиная с версий 2015.12.х, AutoGRAPH.Web предоставляет API AutoGRAPH.NET Service по путям:

WCF: http://имя-веб-сервера/ServiceWCF2.svc

1C: http://имя-веб-сервера/Service1C.asmx

JSON: http://имя-веб-сервера/ServiceJSON - рекомендуется к использованию

Подробее о механизме аутентификации Login здесь.

Работа с сервисом

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

Примеры

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