Flex и ADO.NET Data Services ... кто-нибудь сделал это? - PullRequest
2 голосов
/ 05 сентября 2008

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

Ответы [ 4 ]

3 голосов
/ 05 сентября 2008

Я использую 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.

1 голос
/ 08 сентября 2008

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

Flex не может обрабатывать .Net DataSets, да и вообще с помощью сложных типов 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;
    ...
0 голосов
/ 23 июля 2009

Flex может делать только GET и POST Flex не понимает сообщения HTTP Response

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

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

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

0 голосов
/ 18 апреля 2009

Он спросил об ADO.NET Data Services, а не о веб-сервисе

...