IIS 7 レスト Web サーバーに接続し、GPS 測定値を送信しています。読み取り値は 20 秒ごとに保存されますが、60 秒ごとに Web サービスに送信されます。
これが私の接続です:
var readings = Reading.GetUnProcessReadings().ToList();
var gpsreadings = new List<TruckGpsReading>();
history.History = "TruckGpsReading count: " + readings.Count();
var count = 1;
while (readings.Any())
{
{
gpsreadings = new List<TruckGpsReading>();
if (readings.Any())
{
history.History = "No. Transactions to process: " + count;
foreach (var reading in readings)
{
history.History = "Currently reading #" + count;
history.History = "Processing reading: " + reading.DateTimeOfReading;
Logging.Log("Starting ProcessGpsFile.ProcessReading 3", "ProcessReading", Apps.RemoteTruckService);
var gpsreading = new TruckGpsReading();
gpsreading.DateTimeOfReading = reading.DateTimeOfReading;
gpsreading.Direction = reading.Direction;
gpsreading.DriverNumber = CurrentIniSettings.DriverNumber;
gpsreading.GpsReadingId = reading.ReadingId;
gpsreading.Latitude = (float) reading.Latitude;
gpsreading.Longitude = (float) reading.Longitude;
gpsreading.Speed = reading.Speed;
gpsreading.TruckNumber = string.IsNullOrWhiteSpace(CurrentIniSettings.TruckNumber) ? "99" : CurrentIniSettings.TruckNumber;
gpsreadings.Add(gpsreading);
TotalReadings++;
count++;
}
var response = client.SaveGpsReadings(globalSetting.TokenId, globalSetting.SourceId, gpsreadings.ToArray());
if (response != "true")
{
history.History = "Transactions NOT saved: " + response;
Logging.Log("ProcessGpsFile.ProcessReading: " + response, "ProcessReading", Apps.RemoteTruckService);
}
else
{
history.History = "Transactions saved.";
Logging.Log("ProcessGpsFile.ProcessReading: Reading.DeleteGpsReadings(readings)", "ProcessReading",
Apps.RemoteTruckService);
Reading.DeleteGpsReadings(readings);
}
}
これが TruckGpsReading です。
[DataContract]
public class TruckGpsReading
{
[DataMember]
public string DriverNumber { get; set; }
[DataMember]
public string TruckNumber { get; set; }
[DataMember]
public float Latitude { get; set; }
[DataMember]
public float Longitude { get; set; }
[DataMember]
public DateTime DateTimeOfReading { get; set; }
[DataMember]
public int Speed { get; set; }
[DataMember]
public string Direction { get; set; }
[DataMember]
public int OdometerReading { get; set; }
[DataMember]
public Guid GpsReadingId { get; set; }
}
送信される情報の量は各レコードで約 256 バイトですが、接続が 30k の領域にあるようです。何が原因なのか、またはこれを回避するより良い方法があるかどうかはわかりません。
私の問題は、データが送信されるとき、セルネットワークを経由することです。これらのネットワークは毎月のデータ使用量が制限されており、その使用量を最小限に抑えようとしています.
アプリケーションが開いたときにサービスに接続して接続を維持する場合、これは悪い考えですか? 送信するたびに接続するのではなく、アプリケーションの起動時に接続し、1 回の接続コストがかかると考えていました。編集このプログラムは毎日約 8 ~ 10 時間実行されることを付け加えたいと思います。
また、接続コストを削減したり、接続時に何が行われているかを調べる方法はありますか?
これは多くの質問であることは知っていますが、私は Web サービスに慣れていません。