Flex と ADO.NET Data Services…やった人はいますか?
質問
ADO.NET Data Services を Adobe Flex アプリケーションのデータ ソースとして使用した人はいますか?もしそうなら、避けるべき成功例や悲劇はありますか?実際に使用した場合、セキュリティにはどのように対処しましたか?
解決
WebORB for .NET を使用して Flex リモート処理を実行し、サーバー上で DLINQ を使用します。WebORB で LINQ を使用する場合の注意点の 1 つは、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 つです。
他のヒント
はい、私たちは .Net Web サービスで Flex を広く使用しています。
Flex は .Net DataSet を処理できず、実際には複雑な XML タイプを使用することもできません。比較的単純な XML 出力を維持することが最善であることがわかりました。
ただし、これを実行すると、.Net Web サービスの出力を正常に処理できます。
<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;
...
彼は Web サービスではなく ADO.NET Data Services について尋ねました
flexは取得することのみができ、flexはhttp応答メッセージを理解していません
したがって、Flex が ADO.NET データ サービスと通信できるようにするには、次のいずれかを行う必要があります。
1.プロキシサーバーを使用しますが、自分で見つけるか構築する必要があります
2.受信リクエストを変更し、$method=MERGE などを使用します (プロキシと同じ)
3.別の as3 httpService クライアントを使用します。オープンソースの取り組みがいくつかあります
次に、データを投稿する方法を見つけなければなりませんが、JSON で新しいレコードを作成し、別のテーブルへのリンクを持つ ID を指定する場合、非常に時間がかかります。これは、整数を更新するだけではなく、リンク文字列を作成する必要があるため、あまり簡単ではないように感じられます。
もちろんそれは可能ですが、箱から出して実際に自分で作る必要があります。Flash Builder 4 には REST インポートが付属していることは知っています。これにより速度が向上する可能性がありますが、その経験はありません