Frage

Hat jemand ADO.NET Data Services als Datenquelle für Adobe Flex-Anwendungen verwendet?Wenn ja, gibt es Erfolgsgeschichten oder Tragödien, die Sie vermeiden sollten?Wenn Sie es genutzt haben, wie sind Sie mit der Sicherheit umgegangen?

War es hilfreich?

Lösung

Ich verwende WebORB für .NET, um Flex-Remoting durchzuführen, und verwende dann DLINQ auf dem Server.Eine knifflige Sache bei der Verwendung von LINQ mit WebORB besteht darin, dass WebORB Reflection verwendet, um automatisch alle Beziehungen der Objekte abzurufen, die Sie an Flex zurückgeben.Dies führt zu erheblichen Zeiteinbußen, da LINQ zum Laden von Beziehungen Lazy Loading verwendet.Um dies zu verhindern, mache ich etwa Folgendes:

Überschreiben Sie den Konstruktor Ihres DataContext und fügen Sie den folgenden Code hinzu:

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

Dies weist den DataContext an, das verzögerte Laden von Beziehungen zu deaktivieren, und weist ihn ausdrücklich an, nur die gewünschten Beziehungen zu laden, ohne verzögertes Laden.Auf diese Weise verursacht WebORB kein verzögertes Laden durch Reflection und die Anzahl der Beziehungen, die an Flex übertragen werden, wird auf ein Minimum beschränkt.

Ich hoffe, das hilft dir irgendwie.Es ist definitiv eines dieser kleinen „Fallstricke“ bei der Arbeit mit Flex/WebORB und LINQ.

Andere Tipps

Ja, wir nutzen Flex häufig mit .Net-Webdiensten.

Flex kann nicht mit .Net DataSets umgehen, und auch nicht mit komplexen XML-Typen.Wir haben festgestellt, dass es am besten ist, bei der relativ einfachen XML-Ausgabe zu bleiben.

Wenn Sie dies jedoch tun, kann die Ausgabe des .Net-Webdienstes einwandfrei verarbeitet werden:

<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;
    ...

Er fragte nach ADO.NET Data Services, nicht nach einem Webdienst

Flex kann nur bekommen und post flex versteht keine HTTP -Antwortnachrichten nicht

Damit Flex mit ADO.NET-Datendiensten kommunizieren kann, müssen Sie Folgendes tun:
1.Verwenden Sie einen Proxyserver, aber Sie müssen selbst einen finden oder erstellen
2.Ändern Sie die eingehenden Anforderungen und verwenden Sie $method=MERGE usw. (wie beim Proxy).
3.Verwenden Sie einen anderen as3-httpService-Client. Es gibt einige Open-Source-Initiativen

Dann müssen Sie herausfinden, wie Sie Daten veröffentlichen, und es kostet viel Zeit, wenn Sie einen neuen Datensatz mit JSON erstellen und eine ID angeben möchten, die einen Link zu einer anderen Tabelle enthält.Da man nicht einfach die Ganzzahl aktualisieren kann, sondern stattdessen einen Link-String erstellen muss, fühlt es sich nicht wirklich einfach an.

Das ist natürlich machbar, aber nach dem Auspacken muss man es wirklich selbst machen.Ich weiß, dass Flash Builder 4 mit einem REST-Import geliefert wird, was die Dinge beschleunigen könnte, aber ich habe keine Erfahrung damit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top