AutoGRAPH.NET Service — различия между версиями
Admin (обсуждение | вклад) (→Конфигурация) |
Admin (обсуждение | вклад) (→Дальше) |
||
| Строка 29: | Строка 29: | ||
[[AutoGRAPH.NET_Service_Config|Конфигурация]] |
[[AutoGRAPH.NET_Service_Config|Конфигурация]] |
||
| + | [[AutoGRAPH.NET_Service_Methods|Методы сервиса]] |
||
== Методы сервиса == |
== Методы сервиса == |
||
Версия 11:17, 19 октября 2015
Сервис предоставляет WCF/JSON API для доступа ядру расчетов AutoGRAPH.NET. Конфигурация схем выполняется с помощью диспетчерского ПО AutoGRAPH.NET. Работает в двух режимах – консольном и как сервис.
Содержание
Минимальные требования к аппаратному и программному обеспечению
- RAM – от 1 GB
- Windows 2008 или более новая
- .NET Framework 4.5 или более новый
- установленный загрузчик данных (AutoGRAPH DataLoader) или AutoGRAPH Server 3.x или 4.x или 5.x
Загрузка
Последняя версия: 2015.10.19, http://agi.tk-chel.ru/install/service/AutoGRAPHService20151019.zip
Примеры: http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip
Режим консоли
В основном предназначен для отладки и тестирования. Достаточно просто запустить файл AutoGRAPHNETService.exe.
Режим сервиса
Устанавливается как сервис (служба) Windows и работает автономно. Командная строка для установки:
sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe"
между binPath= и полным путем - пробел
Дальше
Методы сервиса
- Login
– аутентификация и получение токена (в случае, если она включена) - EnumSchemas – получение списка доступных сервису схем
- EnumDevices – получение списка устройств схемы
- EnumDrivers – получение информации о водителях в схеме
- EnumGeoFences – получение списка геозон схемы
- GetGeoFences – получение информации о геозонах (точки для полигонов и т.д.)
- EnumParameters – получение списка параметров устройства в схеме
Получение данных по приборам
- GetDevicesInfo – получение информации об устройстве в схеме
- GetOnlineInfo – получение информации о последнем местоположении устройств
- GetOnlineInfoAll – получение информации о последнем местоположении всех устройств
- GetDataRanges – получение информации о загруженных данных для приборов (минимальная/максимальные доступные даты)
- GetTrips – получение информации о рейсах приборов с текущими настройками схемы
- GetTripTables
– получение табличных данных по рейсам приборов - GetTripsCustom – получение информации о рейсах приборов с указанными геозонами
- GetStage – получение информации по одному отрезку для приборов
- GetTrack – получение трека (даты/время, координаты, скорость) прибора
Доступ к свойствам
- GetProperties – получение списка свойств и их значений устройства
- GetProperty – получение значения одного свойства у списка приборов
Выполнение отчетов
- EnumReports - получение списка доступных отчетов
- GetReports - выполнение нескольких отчетов и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается)
- GetReport
- выполнение одного отчета и загрузка его в виде XML/PDF/DOCX/XLS/.../ZIP-файла (формат выполнения указывается) - ExecuteReports - асинхронное выполнение отчета(ов)
- GetReportsStatus - получение состояния выполнения отчета(ов)
- CancelReports - отмена выполнения отчета
Получение информации из DDD-файлов тахографа
- GetCardStatistic
- получение информации по DDD-файлам указанной карты - GetCardStatisticAll
- получение информации по всем доступным DDD-файлам - GetCardRecords
- получение информации из DDD-файлов указанных карт
Прочее
- GetRoute – прокладка маршрута и получение этой информации в виде набора точек
- WaitData - ожидание получения новых данных
Также сервис поддерживает загрузку/выгрузку и получение списка схем. AutoGRAPH.NET начиная версии 2015.8.6 умеет работать с AutoGRAPH.NET Service как с веб-сервером. Подробнее здесь.
Примеры
Скачать проект для Visual Studio 2013/2015
Скачать результаты выполнения (.XML-файлы примера)
Скачать файл прокси-класса AutoGRAPHSvc.cs
Скачать примеры (консольные и WinForms): http://agi.tk-chel.ru/install/service/AutoGRAPHServiceExamples.zip
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
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();
var currentSchema = schemas.FirstOrDefault(p => p.Name == "DemoCEBIT").Name;
Guid[] currentDevices = null;
using (var f = new TimeCalc("EnumDevices"))
{
var devices = svc.EnumDevices(currentSchema);
foreach (var item in devices.Items)
Console.WriteLine("\t" + item.Name);
currentDevices = devices.Items.Where(p => p.Serial == 9999999 || p.Serial == 9999998).Select(p => p.ID).ToArray(); // выбираем только приборы с номерами 9999998 и 9999999
}
using (var f = new TimeCalc("EnumGeoFences")) // запрашиваем список доступных в схеме геозон
svc.EnumGeoFences(currentSchema);
using (var f = new TimeCalc("GetDevicesInfo"))
svc.GetDevicesInfo(currentSchema);
using (var f = new TimeCalc("EnumParameters")) // запрашиваем список параметров для ТС
svc.EnumParameters(currentSchema, currentDevices);
using (var f = new TimeCalc("GetOnlineInfo")) // запрашиваем онлайн-состояние ТС
{
var onlineInfo = svc.GetOnlineInfo(currentSchema, currentDevices);
var serializer = new DataContractSerializer(typeof (ROnlineInfo));
foreach (var oi in onlineInfo)
{
var stm = new MemoryStream();
serializer.WriteObject(stm, oi.Value);
var fileName = "OnlineInfo_" + oi.Key + ".xml";
File.WriteAllBytes(fileName, stm.ToArray()); // записываем на диск в файл .xml сериализованное состояние
Console.WriteLine("OnlineInfo: {0}", fileName);
}
}
using (var f = new TimeCalc("GetTrips")) // запрашиваем список рейсов за сегодня для ТС
{
var serializer = new DataContractSerializer(typeof (RTrips));
var trips = svc.GetTrips(currentSchema, currentDevices, DateTime.Now.Date, DateTime.Now);
foreach (var trip in trips)
{
var stm = new MemoryStream();
serializer.WriteObject(stm, trip.Value);
var fileName = "Trips_" + trip.Key + ".xml";
File.WriteAllBytes(fileName, stm.ToArray()); // записываем на диск в файл .xml сериализованное состояние
Console.WriteLine("Trips: {0}", fileName);
}
}
using (var f = new TimeCalc("GetTrack")) // запрашиваем треки за последние 5 дней для всех ТС, с номерами начинающихся 9999998
{
var serializer = new DataContractSerializer(typeof(RTrackInfo[]));
var tracks = svc.GetTrack(currentSchema, currentDevices, DateTime.Now.Date, DateTime.Now);
foreach (var trip in tracks)
{
var stm = new MemoryStream();
serializer.WriteObject(stm, trip.Value);
var fileName = "Tracks_" + trip.Key + ".xml";
File.WriteAllBytes(fileName, stm.ToArray()); // записываем на диск в файл .xml сериализованное состояние
Console.WriteLine("Tracks: {0}", fileName);
}
}
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)); }
}
}
Скачать проект для Visual Studio 2013/2015
Скачать результаты выполнения (.XML-файлы примера)
По умолчанию используется HTTP binding, но ровно таким же способом можно включить и and Answers&referringTitle=Home=Home другие транспорты.
Диагностика неисправностей
Список возможных ошибок и особенностей конфигурации приведён здесь.