ホームページ バックエンド開発 C#.Net チュートリアル Flex と .NET の相互運用性 (3): WebService に基づくデータ アクセス (2)

Flex と .NET の相互運用性 (3): WebService に基づくデータ アクセス (2)

Dec 20, 2016 pm 03:18 PM
webservice

前回の記事「Flex と .NET の相互運用性 (2): WebService に基づくデータ アクセス (1)」では、 タグを介した Webservice へのアクセスを紹介しました。実際、プログラミングを通じて WebService に動的にアクセスすることもできます。Flex SDK には WebService クラスが用意されています。

WebService クラスを使用して WebService にアクセスするということは、実際には、クラス オブジェクトの属性形式を通じて タグの属性を表現することを意味します。これとは対照的に、WebService 類似品を使用することは、 を使用するよりも柔軟です。 ; 鬼ごっこ。プログラムでリモート メソッドに接続して呼び出す方法を見てみましょう:

1 innerfunctiononClick():void
2{
3varservice:WebService=newWebService();
4service.loadWSDL("http: //localhost:1146/FlashFlexService.asmx?wsdl");
5service.addEventListener(ResultEvent.RESULT,onResult);
6service.addEventListener(FaultEvent.FAULT,onFault);
7service.GetBook();
8}

クラス オブジェクトのloadWSDL() メソッドを通じてリモート WebService を直接呼び出し、クラス オブジェクトに関連する処理関数を動的に指定して、ラベルと同様にリモート WebService メソッドを呼び出すだけです。

1 内部関数onResult(evt:ResultEvent):void
2{
3Alert.show(evt.result.Id);
4}
5
6内部関数onFault(evt:FaultEvent):void
7 {
8Alert.show(evt.fault.faultDetail.toString());
9}

上記で、リモート WebService メソッド呼び出しにプログラムでアクセスするための WebService クラスの使用が完了しました。

WebService によって返される DataTable などの責任のある型と、Flex クライアントでそれらを解析する方法を見てみましょう。まず、次のように WebService メソッドを定義します:

1[WebMethod(Description="このメソッドは DataTable 型のデータを返します")]
2publicDataTableGetDataTable()
3{
4DataTabledt=newDataTable("書籍") ;
5dt.Columns.Add("ID",typeof(int));
6dt.Columns.Add("名前",typeof(string));
7dt.Columns.Add("作成者",typeof( string) );
8dt.Columns.Add("価格",typeof(double));
9
10DataRowdr=dt.NewRow();
11dr["Id"]=1;
12dr["名前"]= " フレックス ゲーム開発";
13dr["著者"]="Zhang San";
14dr["価格"]=54.85;
15dt.Rows.Add(dr);
16
17dr=dt.NewRow();
18dr["Id"]=2;
19dr["Name"]=""Flash ゲーム開発"";
20dr["Author"]="李思";
21dr["Price"]=65.50;
22dt.Rows.Add(dr);
23
24returndt;
25}

Flex クライアントの WebService を通じてアクセスすることもできます。以下は、 タグを使用してアクセスします。 mx:operation> タグの名前はサーバー側の WebService メソッドと同じである必要があります):

12wsdl="http:// localhost:1146/DataWebService.asmx ?wsdl"useProxy="false">
3
4
5

WebService はWebService を削除した後は、WebService が提供するリモート メソッドを呼び出すだけです。以下のように:

1 内部関数onTable(): void
2{
3myService.addEventListener(ResultEvent.RESULT,onSuccess);
4myService.addEventListener(FaultEvent.FAULT,onFault);
5myService.GetDataTable . send();
6}
7
8internalfunctiononSuccess(evt:ResultEvent):void
9{
10//bookGrid.dataProvider=this.myService.GetDataTable.lastResult.Tables.Books.Rows;
11}
12
13internalfunctiononFault (evt:FaultEvent):void
14{
15Alert.show("WebService メソッドの呼び出しに失敗しました、詳細: "+evt.fault.faultDetail.toString());
16
17}

戻り値をバインドしますWebService Flex の DataGrid コンポーネントでは、mxml の関連コードは次のとおりです:

1
23dataProvider="{this.myService.GetDataTable.lastResult.Tables.Books.Rows}">
4
5
6
7
8
9

10
11
12
13

14

さらに、DataGrid の dataProvider プロパティを通じて DataGrid コンポーネントのデータ ソースをバインドします。バインド式のヘルプに加えて、リモート メソッドを正常に呼び出すハンドラー関数で DataGrid のデータ ソースを指定することもできます。上記のコードのコメントされたコード部分を参照してください。 {this.myService.GetDataTable.lastResult.Tables.Books.Rows} は、リモート WebService メソッド GetDataTable() によって返された結果 (DataTable) のすべての行が、DataGrid コンポーネントにバインドするデータ ソースとして使用されることを意味します。ここで Books はデータ ソースの名前 DataTable.、

DataSet、DataTable は、ジェネリック コレクションと比較してパフォーマンスに大きな差があり、複雑なシリアル化と逆シリアル化のプロセスも大きく影響します。.net 2.0 がリリースされて以来、私は常にジェネリックを使用してきました。ビッグデータを渡すため。さて、次に、Flex の WebService メソッドによって返される汎用コレクション データを処理する方法を紹介します。次の WebService メソッド定義があります:

1 [WebMethod(Description="このメソッドは汎用コレクションを返します")]
2publicListBookList()
3{
4returnnewList
5{
6newBook
7{
8Id=1,
9Name=""Flex Game Development"",
10Author="Zhang San",
11Price=54.85
12},
13newBook
14{
15Id=1,
16Name=""Flash Game Development"",
17Author="李思",
18Price=65.50
19}
20};
21}

DataSet 型や DataTable 型と比較して、私は個人的に List<> を使用します。 return data のほうが扱いやすいと思います。

これは、一般的な組み合わせ (List<>) の形式で返されるデータ形式であり、DataTable の戻り結果と比較して、より簡潔で明確です。そうは言っても、この戻り値を取得して Flex でこの値を処理するにはどうすればよいでしょうか?実際、上の図を注意深く見てみると、「ArrayOfBook」が見つかります。 ? ? ?これは何ですか?クライアントはこの戻り値を配列の形式で取得できるのではないでしょうか。この詳細をさらに理解するには、戻り値の具体的な構造をさらに深く理解する必要があります。Flex Builder のデバッグ環境を通じて、次の情報を取得できます:

それがはっきりわかりますか? BookList メソッドの lastResult 構造セットの下に 2 つのオブジェクトがあり、ノードをクリックすると、List を通じて返された 2 つの Book オブジェクトであることがわかり、lastResult の型は mx.collections.ArrayCollection ではありません。本当にActionScriptの配列ですか?この場合、Flex クライアントは、lastResult を通じて WebService から返される汎用コレクション データを直接取得できます。次のコード ブロック:

1
2
3
4
5< mx:DataGridColumnheaderText="本のタイトル" dataField="名前"/>
6
7
8

9
10
11
12
13

ここでは WebService のデータ アクセスについて紹介します。私の個人的な能力が限られているため、記事に不備があれば皆さんに修正していただければ幸いです。良い提案があれば、それを提案して、みんなで議論し、学び、一緒に進歩していきましょう。 !


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語で特殊文字を処理する方法 C言語で特殊文字を処理する方法 Apr 03, 2025 pm 03:18 PM

C言語では、以下などのエスケープシーケンスを通じて特殊文字が処理されます。\ nはラインブレークを表します。 \ tはタブ文字を意味します。 ESACEシーケンスまたは文字定数を使用して、Char C = '\ n'などの特殊文字を表します。バックスラッシュは2回逃げる必要があることに注意してください。さまざまなプラットフォームとコンパイラが異なるエスケープシーケンスを持っている場合があります。ドキュメントを参照してください。

C文字列におけるcharの役割は何ですか C文字列におけるcharの役割は何ですか Apr 03, 2025 pm 03:15 PM

Cでは、文字列でCharタイプが使用されます。1。単一の文字を保存します。 2。配列を使用して文字列を表し、ヌルターミネーターで終了します。 3。文字列操作関数を介して動作します。 4.キーボードから文字列を読み取りまたは出力します。

C言語でさまざまなシンボルを使用する方法 C言語でさまざまなシンボルを使用する方法 Apr 03, 2025 pm 04:48 PM

c言語のシンボルの使用方法は、算術、割り当て、条件、ロジック、ビット演算子などをカバーします。算術演算子は基本的な数学的操作に使用されます。割り当てと追加、下位、乗算、除算の割り当てには、条件操作に使用されます。ポインター、ファイル終了マーカー、および非数値値。

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

C言語のcharとwchar_tの違い C言語のcharとwchar_tの違い Apr 03, 2025 pm 03:09 PM

C言語では、charとwchar_tの主な違いは文字エンコードです。CharはASCIIを使用するか、ASCIIを拡張し、WCHAR_TはUnicodeを使用します。 Charは1〜2バイトを占め、WCHAR_Tは2〜4バイトを占有します。 charは英語のテキストに適しており、wchar_tは多言語テキストに適しています。 CHARは広くサポートされており、WCHAR_TはコンパイラとオペレーティングシステムがUnicodeをサポートするかどうかに依存します。 CHARの文字範囲は限られており、WCHAR_Tの文字範囲が大きく、特別な機能が算術演算に使用されます。

C言語でCharを変換する方法 C言語でCharを変換する方法 Apr 03, 2025 pm 03:21 PM

C言語では、charタイプの変換は、キャスト:キャスト文字を使用することにより、別のタイプに直接変換できます。自動タイプ変換:あるタイプのデータが別のタイプの値に対応できる場合、コンパイラは自動的に変換します。

C言語でchar配列の使用方法 C言語でchar配列の使用方法 Apr 03, 2025 pm 03:24 PM

Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

See all articles