AutoGRAPH.NET Service — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «Сервис предоставляет WCF/JSON API для доступа ядру расчетов AutoGRAPH.NET. Конфигурация схем выпо…») |
Ivan (обсуждение | вклад) |
||
(не показано 145 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
− | Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET]]. Конфигурация схем выполняется с помощью |
+ | Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET|AutoGRAPH.Pro]]. Сервис обычно используется для интеграции в сторонние системы. Конфигурация схем выполняется с помощью ПО AutoGRAPH 7 WEB. Работает как сервис начиная с версий 2015.12.х. |
+ | |||
+ | [[File:AGNetService.png|RTENOTITLE]] |
||
== Минимальные требования к аппаратному и программному обеспечению == |
== Минимальные требования к аппаратному и программному обеспечению == |
||
− | *RAM |
+ | *RAM – от 2 GB |
− | *Windows |
+ | *Windows 2008 R2 или более новая |
− | *.NET Framework 4. |
+ | *.NET Framework 4.6.2 или более новый |
− | *установленный загрузчик данных ([[AGDataLoader|AutoGRAPH DataLoader]]) или [[AutoGRAPH_Server_5|AutoGRAPH Server |
+ | *установленный загрузчик данных ([[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"> между binPath= и полным путем - пробел </span> |
||
− | |||
− | == Описание работы == |
||
− | |||
− | После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл '''AutoGRAPHNETService.exe.config'''. Далее приведены описания ключей файла конфигурации: |
||
− | |||
− | <code> <add key="key-file" value="N:\Ключи АвтоГРАФ-Сервер\AutoGRAPHServer_3.0\30008_4x4_magnitka.agkey"/><br/> <add key="address" value="http://localhost:800/"/><br/> <add key="address-json" value="http://localhost:810/"/><br/> <add key="common-directory" value="C:\ProgramData\AutoGRAPH Shell"/><br/> <add key="data-directory" value="C:\Users\denisio\AppData\Roaming\AutoGRAPH Shell\Data"/><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> <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]] - получение списка доступных сервису схем |
||
− | *[[AutoGRAPH.NET_Service_EnumDevices|EnumDevices]] - получение списка устройств (приборов) схемы |
||
− | *[[AutoGRAPH.NET_Service_EnumGeoFences|EnumGeoFences]] - получение списка геозон схемы |
||
− | *[[AutoGRAPH.NET_Service_GetDevicesInfo|GetDevicesInfo]] - получение информации об устройстве (приборе) в схеме |
||
− | *[[AutoGRAPH.NET_Service_EnumParameters|EnumParameters]] - получение списка параметров устройства (прибора) в схеме |
||
− | *[[AutoGRAPH.NET_Service_GetOnlineInfo|GetOnlineInfo]] - получение информации о последнем местоположении устройств (приборов) |
||
− | *[[AutoGRAPH.NET_Service_GetTrips|GetTrips]] - получение информации о рейсах устройства (прибора) с текущими настройками схемы |
||
− | *[[AutoGRAPH.NET_Service_GetTrack|GetTrack]] - <span style="line-height: 20.7999992370605px;">получение трека (даты/время, координаты, скорость) устройства (прибора) с текущими настройками схемы</span> |
||
− | *[[AutoGRAPH.NET_Service_GetProperties|GetProperties]] - получение списка свойств и их значений устройства (прибора) |
||
− | *[[AutoGRAPH.NET_Service_GetProperty|GetProperty]] - <span style="line-height: 20.7999992370605px;">получение значения одного свойства у списка приборов</span> |
||
− | *[[AutoGRAPH.NET_Service_GetRoute|GetRoute]] - прокладка маршрута и получение этой информации в виде набора точек |
||
+ | Доступ к тестовому сервису: |
||
− | == Примеры == |
||
+ | [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/> class Program<br/> {<br/> static void Main(string[] args)<br/> {<br/> var svc = new AutoGRAPHSvcClient(); // создаем прокси-класс с адресом подключения по умолчанию</code> |
||
+ | логин '''demo''' пароль '''demo''' |
||
− | <code> RSchema[] schemas;<br/> using (var f = new TimeCalc("EnumSchemas")) schemas = svc.EnumSchemas(); // запрашиваем список доступных схем</code> |
||
+ | == Режим работы (AutoGRAPH.Web) == |
||
− | <code> REnumDevices devices;<br/> using (var f = new TimeCalc("EnumDevices")) devices = svc.EnumDevices(schemas[0].Name); // запрашиваем список доступных в схеме приборов<br/> foreach (var item in devices.Items) Console.WriteLine("\t" + item.Name);</code> |
||
+ | Начиная с версий 2015.12.х, AutoGRAPH.Web предоставляет API AutoGRAPH.NET Service по путям: |
||
− | <code> using (var f = new TimeCalc("EnumGeoFences")) svc.EnumGeoFences(schemas[0].Name); // запрашиваем список доступных в схеме геозон<br/> using (var f = new TimeCalc("GetDevicesInfo")) svc.GetDevicesInfo(schemas[0].Name);</code> |
||
+ | WCF: [http://имя-веб-сервера/ServiceWCF2.svc http://имя-веб-сервера/ServiceWCF2.svc] |
||
− | <code> // запрашиваем список параметров для всех ТС в схеме<br/> 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> // запрашиваем онлайн-состояние всех ТС в схеме<br/> using (var f = new TimeCalc("GetOnlineInfo")) svc.GetOnlineInfo(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray());</code> |
||
+ | JSON: [http://имя-веб-сервера/ServiceJSON http://имя-веб-сервера/ServiceJSON] - рекомендуется к использованию |
||
− | <code> // запрашиваем список рейсов за последние 5 дней для всех ТС, с номерами начинающихся 9999998<br/> using (var f = new TimeCalc("GetTrips"))<br/> svc.GetTrips(schemas[0].Name,<br/> devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),<br/> DateTime.Now.AddDays(-5), DateTime.Now);</code> |
||
+ | Подробее о механизме аутентификации Login [http://wiki.tk-chel.ru/index.php/AutoGRAPH.NET_Service_Auth здесь]. |
||
− | <code> // запрашиваем треки (с координатами и скоростями) за последние 5 дней для всех ТС, с номерами начинающихся 9999998<br/> using (var f = new TimeCalc("GetTrack"))<br/> {<br/> var t1 = svc.GetTrack(schemas[0].Name,<br/> devices.Items.Where(p => p.Serial >= 9999998).Select(p => p.ID).ToArray(),<br/> DateTime.Now.AddDays(-5), DateTime.Now); <br/> }</code> |
||
+ | == Работа с сервисом == |
||
− | <code> Console.ReadLine();<br/> }<br/> }</code> |
||
+ | === [[AutoGRAPH.NET_Service_Methods|Методы сервиса]] === |
||
− | <code> // простой класс для замера скорости выполнения блока<br/> class TimeCalc:IDisposable<br/> {<br/> readonly DateTime DT;<br/> readonly string name;<br/> internal TimeCalc(string name) { DT = DateTime.Now; this.name = name; }<br/> void IDisposable.Dispose() { Console.WriteLine(name+": "+DateTime.Now.Subtract(DT).TotalSeconds.ToString("F3", CultureInfo.InvariantCulture)); }<br/> }<br/>}</code><br/> |
||
+ | === [[AutoGRAPH.NET_Service_Examples|Примеры]] === |
||
− | <u>Файл .exe.config вышеприведенного примера</u><br/><code><pre><br/><?xml version="1.0" encoding="utf-8" ?><br/><configuration><br/> <system.serviceModel><br/> <bindings><br/> <basicHttpBinding><br/> <binding name="BasicHttpBinding_IAutoGRAPHSvc" closeTimeout="00:01:00"<br/> openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"<br/> allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"<br/> maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"<br/> messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"<br/> useDefaultWebProxy="true"><br/> <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" /><br/> <security mode="None"><br/> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /><br/> <message clientCredentialType="UserName" algorithmSuite="Default" /><br/> </security><br/> </binding><br/> </basicHttpBinding><br/> </bindings><br/> <client><br/> <endpoint address="http://localhost:800/" binding="basicHttpBinding"<br/> bindingConfiguration="BasicHttpBinding_IAutoGRAPHSvc" contract="IAutoGRAPHSvc"<br/> name="BasicHttpBinding_IAutoGRAPHSvc" /><br/> </client><br/> </system.serviceModel><br/></configuration><br/></pre></code> |
||
+ | === [[AutoGRAPH.NET_Service_Диагностика_неисправностей|Диагностика неисправностей]] === |
||
− | Данный конфигурационный файл содержит WCF-конфигурацию для точки подключения сервиса. По умолчанию используется HTTP binding, но ровно таким [https://msdn.microsoft.com/en-us/library/ms733027(v=vs.110).aspx же способом] можно включить и [http://wcfsecurity.codeplex.com/wikipage?title=Questions and Answers&referringTitle=Home другие транспорты]. |
Текущая версия на 15:11, 6 октября 2020
Сервис предоставляет WCF/JSON API для доступа ядру расчетов AutoGRAPH.Pro. Сервис обычно используется для интеграции в сторонние системы. Конфигурация схем выполняется с помощью ПО AutoGRAPH 7 WEB. Работает как сервис начиная с версий 2015.12.х.
Содержание
Минимальные требования к аппаратному и программному обеспечению
- RAM – от 2 GB
- Windows 2008 R2 или более новая
- .NET Framework 4.6.2 или более новый
- установленный загрузчик данных (AutoGRAPH DataLoader) или AutoGRAPH Server 4.x или 5.x
Загрузка
Примеры: 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 здесь.