Flex и службы данных ADO.NET… кто-нибудь это делал?

StackOverflow https://stackoverflow.com/questions/44817

  •  09-06-2019
  •  | 
  •  

Вопрос

Кто-нибудь использовал службы данных ADO.NET в качестве источника данных для приложений Adobe Flex?Если да, то каких историй успеха или трагедий следует избегать?Если вы им пользовались, как вы справлялись с безопасностью?

Это было полезно?

Решение

Я использую WebORB для .NET для удаленного взаимодействия Flex, а затем использую DLINQ на сервере.Одна сложность в использовании LINQ с WebORB заключается в том, что WebORB использует Reflection для автоматического извлечения всех связей объектов, которые вы возвращаете во Flex.Это приводит к серьезным потерям времени, поскольку LINQ использует отложенную загрузку для загрузки связей.Чтобы этого не произошло, я делаю что-то вроде следующего:

Переопределите конструктор DataContext и добавьте следующий код:

this.DeferredLoadingEnabled = false;
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(q => q.Payments);
dlo.LoadWith<Order>(q => q.Customer);
this.LoadOptions = dlo;

Это сообщает DataContext отключить отложенную загрузку связей и, в частности, указывает ему загружать только те связи, которые вам нужны, без отложенной загрузки.Таким образом, WebORB не вызывает ленивой загрузки через Reflection, а количество связей, передаваемых во Flex, сводится к минимуму.

Надеюсь, это вам каким-то образом поможет.Это определенно одна из тех маленьких «ошибок» при работе с Flex/WebORB и LINQ.

Другие советы

Да, мы широко используем Flex с веб-сервисами .Net.

Flex не может обрабатывать наборы данных .Net или даже сложные типы XML.Мы обнаружили, что лучше всего придерживаться относительно простого вывода в формате XML.

Однако, если вы это сделаете, он сможет нормально обрабатывать выходные данные веб-службы .Net:

<mx:WebService id="myDataService" showBusyCursor="true">
    <mx:operation name="WebMethodName" 
                  resultFormat="object" 
                  result="functionFiredOnComplete();">
</mx:operation>
</mx:WebService>

public function load():void
{
    myDataService.loadWSDL( "web method's wsdl" );
    myDataService.WebMethodName.send( params );
}

public function functionFiredOnComplete():void
{           
    // get data
    var myData:Object = myDataService.WebMethodName.lastResult;
    ...

Он спросил о службах данных ADO.NET, а не о веб-сервисе.

Flex может только получить, и Post Flex не понимает HTTP -ответные сообщения

Таким образом, чтобы Flex мог взаимодействовать со службами данных ADO.NET, вам необходимо либо;
1.используйте прокси-сервер, но вам придется найти или создать его самостоятельно
2.измените входящие запросы и используйте $method=MERGE и т. д. (так же, как прокси)
3.используйте другой клиент as3 httpService, есть некоторые инициативы с открытым исходным кодом

Затем вам нужно узнать, как публиковать данные, и это потребует много времени, если вы хотите создать новую запись с помощью JSON и указать идентификатор, который имеет ссылку на другую таблицу.Это потому, что вы не можете просто обновить целое число, а вместо этого вам нужно создать строку ссылки, и это не так-то просто.

Так что, конечно, это можно сделать, но из коробки вам действительно придется сделать это самостоятельно.Я знаю, что Flash Builder 4 будет поставляться с импортом REST, это может ускорить работу, но у меня нет для этого опыта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top