извлечение большого объема данных из AX в мобильное приложение - PullRequest
0 голосов
/ 13 февраля 2019

наша команда разработала мобильное приложение, используя Xamarin Forms для пользователей на местах, которые выбирают данные, относящиеся к клиенту, заказу на продажу, продуктам и т. Д., Из AX, используя AIF webserices более

ПроблемаТо, с чем мы сталкиваемся в настоящее время, связано с объемом данных, которые мы извлекаем из AX для сущностей заказов на продукты и продажи.

Обратимся теперь, наш веб-сервис извлекает данные 6 тысяч продуктов, которые имеютоколо 10 полей

образец продукта json

{
        "itemDimensions": [],
        "itemGroup": "Foam Rolls",
        "itemName": "48\" X 550' 1/8\" FOAM ROLLS",
        "itemNumber": ".125FM48X858",
        "searchName": ".125FM48X447",
        "siteId": "",
        "type": "Product",
        "unit": "ROLL",
        "variantName": "",
        "variantNumber": "",
        "warehouseId": ""
    },

и для заказа на продажу мы собираем около 2 тысячи данных, но оно имеет больше вложенностиДанные json, в следующем json вы можете видеть, что мы получаем

  1. Детали заказа
  2. Массив сведений о вложении
  3. Массив сведений о заметках
  4. Массив сведений о продукте

, так что это увеличивает единичный элемент json и, в конечном итоге, весь отклик json.Благодаря этому наше приложение получает тайм-аут запроса даже после установки 5-минутного интервала ожидания и снижения производительности, поскольку для синхронизации данных о продуктах и ​​заказах на продажу в мобильном приложении в рамках начального процесса синхронизации требуется 30 минут.поэтому я ищу решение, в котором мы могли бы ускорить процесс синхронизации данных, но внедрили что-то на стороне сервера, чтобы быстрее передавать данные в мобильное приложение.

Если кто-то может предложить лучший подход или архитектуру для решения, тогда проблема будет хорошей.

Заказ на продажу json sample

{
  "cashDiscount": "S10D-.5%",
  "chargeTotal": 0,
  "confirmedShipmentDate": "2019-01-10",
  "contactId": 0,
  "currency": "USD",
  "customerId": 878787,
  "deliveryMode": "BJLTL",
  "deliverylocation": 8887788,
  "description": "",
  "listAttachments": [
    {
      "fileMimeType": "",
      "filePath": "",
      "name": "",
      "timestamp": "2019-02-08T16:44:08.000Z",
      "type": "Pick"
    },
    {
      "fileMimeType": "",
      "filePath": "",
      "name": "",
      "timestamp": "2019-02-08T16:44:13.000Z",
      "type": "Invoice"
    }
  ],
  "listNotes": [
    {
      "description": "",
      "mNoteId": null,
      "noteId": 5637334180,
      "notes": "UPS COLLECT ACCT #F59056",
      "restriction": "Internal"
    }
  ],
  "listProducts": [
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 1620,
      "priceApprovalStatus": "Open",
      "productId": "23ECTB60X4455",
      "productPrice": 2.7,
      "quantity": 600,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161102,
      "siteId": "GLENVW1",
      "unit": "EA",
      "wareHouseId": "28"
    },
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 651,
      "priceApprovalStatus": "Open",
      "productId": "23ECTB4455",
      "productPrice": 2.17,
      "quantity": 300,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161103,
      "siteId": "GLENVW1",
      "unit": "EA",
      "wareHouseId": "28"
    },
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 972,
      "priceApprovalStatus": "Open",
      "productId": "23ECTB3654545",
      "productPrice": 1.62,
      "quantity": 600,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161105,
      "siteId": "GLENVW1",
      "unit": "EA",
      "wareHouseId": "28"
    },
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 1038,
      "priceApprovalStatus": "Open",
      "productId": "23ECTB488787",
      "productPrice": 1.73,
      "quantity": 600,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161106,
      "siteId": "GLENVW1",
      "unit": "EA",
      "wareHouseId": "28"
    },
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 222.06,
      "priceApprovalStatus": "Open",
      "productId": "2CFS38X700",
      "productPrice": 74.02,
      "quantity": 3,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161107,
      "siteId": "GLENVW1",
      "unit": "ROLL",
      "wareHouseId": "28"
    },
    {
      "deliveryMode": "BJLTL",
      "lineDiscount": 0,
      "linePercent": 0,
      "mProductId": null,
      "netAmount": 217.14,
      "priceApprovalStatus": "Open",
      "productId": "2SWS52X178787",
      "productPrice": 72.38,
      "quantity": 3,
      "salesLineStatus": "Invoiced",
      "salesOrderLineId": 5637161108,
      "siteId": "GLENVW1",
      "unit": "ROLL",
      "wareHouseId": "28"
    }
  ],
  "mNoteId": null,
  "mOrderId": null,
  "notes": null,
  "orderDate": "2019-01-09",
  "orderId": 563787455,
  "orderName": "RYERSON - ELGIN #4007",
  "orderNumber": "S-0003290",
  "orderType": "Sales order",
  "requestedReceiptDate": "2019-01-10",
  "requestedShipDate": "2019-01-10",
  "salesOrderStatus": "Invoiced",
  "salesTaxTotal": 0,
  "siteId": "GLENVW1",
  "wareHouseId": "28"
}

мобильное приложение запрашивает данные заказа, веб-служба AIF выполняет запрос для получения сведений о заказе из AX и возвращает все данные в приложение.Таким образом, количество времени, которое веб-служба извлекает из AX, занимает больше времени и приводит к таймауту

...