AutoGRAPH.NET Service — различия между версиями
Admin (обсуждение | вклад) (→Методы сервиса) |
Ivan (обсуждение | вклад) |
||
(не показаны 74 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | Сервис предоставляет WCF/JSON API для доступа ядру расчетов [[AutoGRAPH.NET|AutoGRAPH. |
+ | Сервис предоставляет 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]] |
== Загрузка == |
== Загрузка == |
||
+ | Примеры: [http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip] |
||
− | Последняя версия: 2015.8.6, [[Media:AutoGRAPHNETService20150806.zip|загрузить]] |
||
− | |||
− | == Режим консоли == |
||
− | |||
− | В основном предназначен для отладки и тестирования. Достаточно просто запустить файл '''AutoGRAPHNETService.exe'''. |
||
− | |||
− | == Режим сервиса == |
||
− | |||
− | Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки: |
||
− | <pre>sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe" |
||
− | </pre> |
||
− | |||
− | <span class="marker"> между binPath= и полным путем - пробел </span> |
||
− | |||
− | == Описание работы == |
||
− | |||
− | После распаковки AutoGRAPH.NET Service в какой-нибудь каталог необходимо отредактировать файл '''AutoGRAPHNETService.exe.config'''. Далее приведены описания ключей файла конфигурации: |
||
− | <pre><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"/> |
||
− | <add key="users-directory" value="C:\TK\DataLoader\_testusers"/> |
||
− | <add key="devices-directory" value="C:\TK\DataLoader\_testdevices"/> |
||
− | </pre> |
||
− | |||
− | {| border="1" cellspacing="0" cellpadding="5" style="width: 100%;" |
||
− | |- |
||
− | | style="width: 137px;" | key-file |
||
− | | style="width: 1084px;" colspan="2" | файл ключа .agkey (от AutoGRAPH.Server), который разрешает использования для прописанного списка приборов. Данный файл находится в каталоге AutoGRAPH.Server.<br/><span class="marker"><span style="background-color:#FFFF00;">Обязательный параметр!</span></span> Без него сервис работать не будет.<br/> |
||
− | |- |
||
− | | style="width: 137px;" | address |
||
− | | style="width: 1084px;" colspan="2" | локальный адрес, на котором обрабатываются запросы по протоколу [https://msdn.microsoft.com/en-us/library/dd699756(v=vs.110).aspx WCF] (<span style="line-height: 20.7999992370605px;">в настоящий момент протестирован только механизм httpBinding)</span>. Формат - url:port<br/>Варианты использования: |
||
− | *'''<tt>[http://192.168.1.3:8000 http://192.168.1.3:8000]</tt>''' - принимать подключения на локальном IP-адресе 192.168.1.3 и TCP-порт 8000 (обычно данный вариант используется, если в сервере установлено несколько сетевых карт или задано несколько IP-адресов) |
||
− | *'''<tt>[http://0.0.0.0:8000 http://0.0.0.0:8000]</tt>''' или '''<tt><code>[http://*:8000  http://*:8000] </code></tt>'''- <span style="line-height: 20.7999992370605px;">принимать подключения </span>на всех доступных локальных IP-адресах и TCP-порту 8000 |
||
− | *'''<tt>[http://127.0.0.1:8000 http://127.0.0.1:8000]</tt>''' - принимать подключения только локально (обычно используется, когда приложение, которое работает со службой, установлено на том же компьютере, что и служба. При этом запросы, идущие через сетевые карты - будут игнорироваться в целях безопасности. Типичный пример - установка службы на сервере 1С:Предприятия.) |
||
− | |||
− | |- |
||
− | | style="width: 137px;" | address-json |
||
− | | style="width: 1084px;" colspan="2" | <span style="line-height: 20.7999992370605px;">локальный адрес, на котором обрабатываются запросы по протоколу [https://en.wikipedia.org/wiki/JSON JSON]</span><span style="line-height: 20.7999992370605px;">. Формат - url:port</span><br/><span style="line-height: 20.7999992370605px;">Варианты использования:</span><ul style="line-height: 20.7999992370605px;"> |
||
− | <li>'''<tt>[http://192.168.1.3:8000 http://192.168.1.3:8000]</tt>''' - принимать подключения на локальном IP-адресе 192.168.1.3 и TCP-порт 8000 (обычно данный вариант используется, если в сервере установлено несколько сетевых карт или задано несколько IP-адресов)</li> |
||
− | <li>'''<tt>[http://0.0.0.0:8000 http://0.0.0.0:8000]</tt>''' или '''<tt>[http://*:8000  http://*:8000] </tt>'''- <span style="line-height: 20.7999992370605px;">принимать подключения </span>на всех доступных локальных IP-адресах и TCP-порту 8000</li> |
||
− | <li>'''<tt>[http://127.0.0.1:8000 http://127.0.0.1:8000]</tt>''' - принимать подключения только локально (обычно используется, когда приложение, которое работает со службой, установлено на том же компьютере, что и служба. При этом запросы, идущие через сетевые карты - будут игнорироваться в целях безопасности. Типичный пример - установка службы на сервере 1С:Предприятия.)</li> |
||
− | </ul> |
||
− | |||
− | |- |
||
− | | style="width: 137px;" | common-directory<br/> |
||
− | | style="width: 1084px;" colspan="2" | каталог с общими данными (структура каталога аналогична каталогу [[AutoGRAPH.NET|AutoGRAPH.NET]] – с подкаталогами Schemes, GeoFences, Devices в которых находятся соответствующие файлы схем, геозон, приборов)<br/> |
||
− | |- |
||
− | | style="width: 137px;" | data-directory<br/> |
||
− | | style="width: 1084px;" colspan="2" | каталог данных (=data-каталог) [[AGDataLoader|AutoGRAPH DataLoader]] или [[AutoGRAPH_Server_5|AutoGRAPH Server 3.x или 4.x или 5.x]]<br/> |
||
− | |- |
||
− | | style="width: 137px;" | users-directory[[File:Tag-new.png|RTENOTITLE]]<br/> |
||
− | | style="width: 671px;" | Каталог с пользователями [[AutoGRAPH_Server_5|AutoGRAPH Server 4.x или 5.x]], обычно он называется Users |
||
− | | style="width: 453px;" rowspan="2" colspan="1" | Если указаны эти параметры - в сервисе включается аутентификация и перед любым вызовом любого метода необходимо выполнить аутентификацию. Подробее о механизме аутентификации [[AutoGRAPH.NET_Service_Auth|здесь]]. |
||
− | |- |
||
− | | style="width: 137px;" | devices-directory[[File:Tag-new.png|RTENOTITLE]]<br/> |
||
− | | style="width: 671px;" | Каталог с пользователями [[AutoGRAPH_Server_5|AutoGRAPH Server 4.x или 5.x]], обычно он называется DBF<br/> |
||
− | |} |
||
− | После редактирования конфиг-файла можно запустить сервис (или консольно) и сделать запрос:<br/><pre>svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer |
||
− | </pre> |
||
− | |||
− | <br/>В данном случае будет создан файл AutoGRAPHSvc.cs с прокси-классом для доступа к WCF-точке сервиса AutGRAPH.NET Service и '''output.config''' файл с описанием параметров подключения WCF. Файл '''output.config''' в данном случае не используется. |
||
+ | Доступ к тестовому сервису: |
||
− | == Методы сервиса == |
||
+ | [http://m.tk-chel.ru/ServiceWCF2.svc http://m.tk-chel.ru/ServiceWCF.svc] (WCF) |
||
− | *[[AutoGRAPH.NET_Service_Login|Login]] [[File:Tag-new.png|RTENOTITLE]] – аутентификация и получение токена (в случае, если она включена) |
||
− | *[[AutoGRAPH.NET_Service_EnumSchemas|EnumSchemas]] – получение списка доступных сервису схем |
||
− | *[[AutoGRAPH.NET_Service_EnumDevices|EnumDevices]] – получение списка устройств схемы |
||
− | *[[AutoGRAPH.NET_Service_EnumDrivers|EnumDrivers]] – получение информации о водителях в схеме |
||
− | *[[AutoGRAPH.NET_Service_EnumGeoFences|EnumGeoFences]] – получение списка геозон схемы |
||
− | *[[AutoGRAPH.NET_Service_GetGeoFences|GetGeoFences]] – получение информации о геозонах (точки для полигонов и т.д.) |
||
− | *[[AutoGRAPH.NET_Service_GetDevicesInfo|GetDevicesInfo]] – получение информации об устройстве в схеме |
||
− | *[[AutoGRAPH.NET_Service_EnumParameters|EnumParameters]] – получение списка параметров устройства в схеме |
||
− | *[[AutoGRAPH.NET_Service_GetOnlineInfo|GetOnlineInfo]] – получение информации о последнем местоположении устройств |
||
− | *[[AutoGRAPH.NET_Service_GetOnlineInfoAll|GetOnlineInfoAll]] – получение информации о последнем местоположении всех устройств |
||
− | *''GetDataRanges – получение информации о загруженных данных для приборов (минимальная/максимальные доступные даты)'' |
||
− | *[[AutoGRAPH.NET_Service_GetTrips|GetTrips]] – получение информации о рейсах устройства с текущими настройками схемы |
||
− | *[[AutoGRAPH.NET_Service_GetTripsCustom|GetTripsCustom]] [[File:Tag-new.png|RTENOTITLE]] – получение информации о рейсах устройства с указанными геозонами |
||
− | *[[AutoGRAPH.NET_Service_GetStage|GetStage]] [[File:Tag-new.png|RTENOTITLE]] – получение информации по одному отрезку для устройств |
||
− | *[[AutoGRAPH.NET_Service_GetTrack|GetTrack]] – получение трека (даты/время, координаты, скорость) устройства с текущими настройками схемы |
||
− | *[[AutoGRAPH.NET_Service_GetProperties|GetProperties]] – получение списка свойств и их значений устройства |
||
− | *[[AutoGRAPH.NET_Service_GetProperty|GetProperty]] – получение значения одного свойства у списка приборов |
||
− | *[[AutoGRAPH.NET_Service_GetRoute|GetRoute]] – прокладка маршрута и получение этой информации в виде набора точек |
||
− | *[[AutoGRAPH.NET_Service_WaitData|WaitData]] - ожидание получения новых данных |
||
− | *[[AutoGRAPH.NET_Service_EnumReports|EnumReports]] [[File:Tag-new.png|RTENOTITLE]] - получение списка доступных отчетов |
||
− | *[[AutoGRAPH.NET_Service_GetReports|GetReports]] [[File:Tag-new.png|RTENOTITLE]] - выполнение отчета и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается) |
||
− | *[[AutoGRAPH.NET_Service_ExecuteReports|ExecuteReports]] [[File:Tag-new.png|RTENOTITLE]] - асинхронное выполнение отчета(ов) |
||
− | *[[AutoGRAPH.NET_Service_GetReportsStatus|GetReportsStatus]] [[File:Tag-new.png|RTENOTITLE]] - получение состояния выполнения отчета(ов) |
||
− | *''CancelReports - отмена выполнения отчета'' |
||
− | *[[AutoGRAPH.NET_Service_GetCardStatistic|GetCardStatistic]] [[File:Tag-new.png|RTENOTITLE]] - получение информации по DDD-файлам указанной карты |
||
− | *[[AutoGRAPH.NET_Service_GetCardStatisticAll|GetCardStatisticAll]] [[File:Tag-new.png|RTENOTITLE]] - получение информации по всем доступным DDD-файлам |
||
− | *[[AutoGRAPH.NET_Service_GetCardRecords|GetCardRecords]] [[File:Tag-new.png|RTENOTITLE]] - получение информации из DDD-файлов указанных карт |
||
+ | [http://m.tk-chel.ru/ServiceJSON http://m.tk-chel.ru/ServiceJSON] (JSON) |
||
− | Также сервис поддерживает загрузку/выгрузку и получение списка схем. AutoGRAPH.NET начиная версии 2015.8.6 умеет работать с AutoGRAPH.NET Service как с веб-сервером. [[AutoGRAPH.NET_Service_WorkingSchemas|Подробнее здесь]]. |
||
+ | логин '''demo''' пароль '''demo''' |
||
− | == Примеры == |
||
+ | == Режим работы (AutoGRAPH.Web) == |
||
+ | Начиная с версий 2015.12.х, AutoGRAPH.Web предоставляет API AutoGRAPH.NET Service по путям: |
||
− | <syntaxhighlight lang="csharp"> |
||
− | using System; |
||
− | using System.Collections.Generic; |
||
− | using System.Globalization; |
||
− | using System.Linq; |
||
− | using System.Text; |
||
− | using AutoGRAPHService; |
||
+ | WCF: [http://имя-веб-сервера/ServiceWCF2.svc http://имя-веб-сервера/ServiceWCF2.svc] |
||
− | namespace AutoGRAPHSvcTest |
||
− | { |
||
− | class Program |
||
− | { |
||
− | static void Main(string[] args) |
||
− | { |
||
− | var svc = new AutoGRAPHSvcClient(); // создаем прокси-класс с адресом подключения по умолчанию |
||
+ | 1C: [http://имя-веб-сервера/Service1C.asmx http://имя-веб-сервера/Service1C.asmx] |
||
− | RSchema[] schemas; |
||
− | using (var f = new TimeCalc("EnumSchemas")) // запрашиваем список доступных схем |
||
− | schemas = svc.EnumSchemas(); |
||
+ | JSON: [http://имя-веб-сервера/ServiceJSON http://имя-веб-сервера/ServiceJSON] - рекомендуется к использованию |
||
− | 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); |
||
+ | Подробее о механизме аутентификации Login [http://wiki.tk-chel.ru/index.php/AutoGRAPH.NET_Service_Auth здесь]. |
||
− | 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(); |
||
− | } |
||
− | } |
||
+ | === [[AutoGRAPH.NET_Service_Methods|Методы сервиса]] === |
||
− | // простой класс для замера скорости выполнения блока |
||
− | 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)); } |
||
− | } |
||
− | } |
||
− | </syntaxhighlight><u>Файл .exe.config вышеприведенного примера</u><br/><syntaxhighlight lang="xml"> |
||
− | <?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> |
||
− | </syntaxhighlight> Данный конфигурационный файл содержит 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=Home другие транспорты]. |
||
+ | === [[AutoGRAPH.NET_Service_Examples|Примеры]] === |
||
− | == [[AutoGRAPH.NET_Service_Диагностика_неисправностей|Диагностика неисправностей]] == |
||
− | + | === [[AutoGRAPH.NET_Service_Диагностика_неисправностей|Диагностика неисправностей]] === |
Текущая версия на 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 здесь.