AutoGRAPH.NET Service (EN)
AutoGRAPH.NET Service provide different protocols for integration with external systems. Currently we have two protocols for this: WCF (Windows communication foundation) and JSON for accessing to AutoGRAPH.NET core. Schemas configuration can be changed by AutoGRAPH.NET software. AutoGRAPH.NET Service can be run in two modes: as console application and as system service.
Содержание
Minimal requirements for hardware and software environment
- RAM – from 1 GB
- Windows 2003 or latest
- .NET Framework 4.0 or latest
- Installed (AutoGRAPH DataLoader) or AutoGRAPH Server 3.x or 4.x or 5.x
Download links
Last version: 2015.7.18.1, Download
Console mode
This mode designed for debugging and testing. Simply run AutoGRAPHNETService.exe in console.
Service mode
Installed as system Windows service and working autonomous. Command line for installing:
sc create AutoGRAPHNETService binPath= "C:\TK\WebMapK\Build-Svc\AutoGRAPHNETService.exe"
Don't forget space between binPath= and full path
Configuring
1. Extracting archive with AutoGRAPH.NET Service in some directory 2. Open AutoGRAPHNETService.exe.config in Notepad. You can see next keys in .config file:
<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"/>
address | local address end point for working with WCF (protocol (httpBinding mode). Uri can be set in url:port format Also, you can use next variations:
|
address-json | local address end point for working with JSON. Uri can be set in url:port format Also, you can use next variations:
|
common-directory |
directory with common data files (directory structure same with directory of AutoGRAPH.NET software – with Schemes, GeoFences, Devices subdirectories with files) |
data-directory |
devices data directory AutoGRAPH DataLoader or AutoGRAPH Server 3.x or 4.x or 5.x |
Save .config file after editing and run service or run in command line. Run next command line for generate .cs file with proxy-class:
svcutil.exe http://localhost:800/?wsdl /async /tcv:Version35 /ser:DataContractSerializer
AutoGRAPHSvc.cs and output.config file will created in current directory. This file configured for use WCF-endpoint of AutGRAPH.NET Service.
Service methods
- EnumSchemas – enumerate allowed schemas
- EnumDevices – enumerate devices in schema
- EnumDrivers – enumerate drivers in schema
- EnumGeoFences – enumerate geofences in schema
- GetGeoFences – get information about geofences (points, polygons, etc)
- GetDevicesInfo – get information about devices in schema
- EnumParameters – get schema parameters
- GetOnlineInfo – get device(s) last position and last date/time information
- GetOnlineInfoAll - get device(s) last position and last date/time information (for ALL devices in schema)
- GetDataRanges – get allowed data files from devices
- GetTrips – get trips information for specified device(s)
- GetTripsCustom – get trips information with custom geofences
- GetStage – get single stage information of specified device(s)
- GetTrack – get track information (date/time/coordinates/speed/...) of specified device(s)
- GetProperties – get property and values list of specified device(s)
- GetProperty – get single property value of specified device(s)
- GetRoute – calculate route between specified points
- WaitData - wait for new device data
- EnumReports - get allowed reports
- GetReports - run reports and download in XML/PDF/DOCX/XLS/.../ZIP-file
- ExecuteReports - run report asynchronously
- GetReportsStatus - get report executing status (for asynchronous executing)
- CancelReports - cancel report creating
Examples
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(); // make proxy class with default end points RSchema[] schemas; using (var f = new TimeCalc("EnumSchemas")) // get schemas list schemas = svc.EnumSchemas(); REnumDevices devices; using (var f = new TimeCalc("EnumDevices")) devices = svc.EnumDevices(schemas[0].Name); // get device list for first allowed schema foreach (var item in devices.Items) Console.WriteLine("\t" + item.Name); using (var f = new TimeCalc("EnumGeoFences")) // get geofences list svc.EnumGeoFences(schemas[0].Name); using (var f = new TimeCalc("GetDevicesInfo")) svc.GetDevicesInfo(schemas[0].Name); using (var f = new TimeCalc("EnumParameters")) // get parameter list for all devices in schema svc.EnumParameters(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray()); using (var f = new TimeCalc("GetOnlineInfo")) // get online status of devices svc.GetOnlineInfo(schemas[0].Name, devices.Items.Select(p => p.ID).ToArray()); using (var f = new TimeCalc("GetTrips")) // get trips list for last 5 days of all devices with numbers more than 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")) // get tracks for last 5 days of all devices with numbers more than 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(); } } // simple class for calculating running time 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 of this example
<?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>