


Interoperabilität zwischen Flex und .NET (3): Datenzugriff basierend auf WebService (Teil 2)
Im vorherigen Artikel „Flex- und .NET-Interoperabilität (2): Datenzugriff basierend auf WebService (1)“ haben wir den Zugriff auf Webservice über das Tag
Die Verwendung der WebService-Klasse für den Zugriff auf WebService bedeutet tatsächlich, die Attribute des
1 internalfunctiononClick():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}
Rufen Sie den Remote-WebService direkt über die Methode loadWSDL() des Klassenobjekts auf, geben Sie dynamisch die relevante Verarbeitungsfunktion für das Klassenobjekt an und Rufen Sie es dann wie ein Etikett auf. Die Remote-WebService-Methode ist verfügbar.
1 internalfunctiononResult(evt:ResultEvent):void
2{
3Alert.show(evt.result.Id);
4}
5
6internalfunctiononFault(evt:FaultEvent):void
7{
8Alert.show(evt.fault.faultDetail.toString());
9}
Das Obige ist abgeschlossen Verwenden Sie die WebService-Klasse, um programmgesteuert auf Remote-WebService-Methodenaufrufe zuzugreifen.
Werfen wir einen Blick auf die verantwortlichen Typen wie DataTable, die von WebService zurückgegeben werden, und wie man sie auf dem Flex-Client analysiert. Definieren Sie zunächst die WebService-Methode wie folgt:
1[WebMethod(Description="Diese Methode gibt Daten vom Typ DataTable zurück")]
2publicDataTableGetDataTable()
3 {
4DataTabledt=newDataTable("Books");
5dt.Columns.Add("Id",typeof(int));
6dt.Columns.Add("Name",typeof(string)) ;
7dt.Columns.Add("Author",typeof(string));
8dt.Columns.Add("Price",typeof(double));
9
10DataRowdr=dt. NewRow( );
11dr["Id"]=1;
12dr["Name"]=""Flex Game Development"";
13dr["Author"]="Zhang San";
14dr["Price"]=54,85;
15dt.Rows.Add(dr);
16
17dr=dt.NewRow();
18dr["Id"]=2;
19dr["Name"]=""Flash Game Development"";
20dr["Author"]="李思";
21dr["Price"]=65,50;
22dt. Zeilen. Add(dr);
23
24returndt;
25}
Sie können auch über WebService auf dem Flex-Client darauf zugreifen. Der Zugriff erfolgt über
1< mx:WebServiceid="myService"
2wsdl= "http://localhost:1146/DataWebService.asmx?wsdl"useProxy="false">
3
4
5< ;/mx:WebService>
Der WebService wurde bereitgestellt und der Client hat sich mit dem WebService verbunden. Jetzt muss er nur noch die von bereitgestellte Remote-Methode aufrufen der WebService. Wie folgt:
1 internalfunctiononTable():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("Call WebService Die Methode ist fehlgeschlagen, Details: „+evt.fault.faultDetail.toString());
16
17}
Binden Sie den Rückgabewert von WebService an die Flex DataGrid-Komponente, mxml-bezogenen Code Wie folgt:
1
2
4
5
6
7
8
9
10
11
12
13
14
Binden Sie die Datenquelle der DataGrid-Komponente über die dataProvider-Eigenschaft des DataGrid. Zusätzlich zur direkten Bindung des Ausdrucks über „{}“ können wir auch erfolgreich aufrufen Remote-Methode Geben Sie die Datenquelle für das DataGrid in der Verarbeitungsfunktion an, siehe den kommentierten Codeteil im obigen Code. {this.myService.GetDataTable.lastResult.Tables.Books.Rows} bedeutet, dass alle Zeilen des Ergebnisses (DataTable), das von der Remote-WebService-Methode GetDataTable() zurückgegeben wird, als Datenquellen für die Bindung an die DataGrid-Komponente verwendet werden, wobei Books die ist Name der Datenquelle DataTable,
DataSet, DataTable weist im Vergleich zu generischen Sammlungen eine große Leistungslücke auf, und die komplexen Serialisierungs- und Deserialisierungsprozesse sind seit der Einführung von Generics in .net 2.0 ebenfalls sehr verantwortlich Ich habe es immer vorgezogen, Generika für die Übertragung großer Datenmengen zu verwenden. OK, jetzt werde ich vorstellen, wie die generischen Sammlungsdaten verarbeitet werden, die von der WebService-Methode in Flex zurückgegeben werden. Wir haben die folgende WebService-Methodendefinition:
1 [WebMethod(Description="Diese Methode gibt eine generische Sammlung zurück")]
2publicList
3{
4returnnewList
5{
6newBook
7{
8Id=1,
9Name=""Flex Game Development"",
10Author="张Three",
11Price=54.85
12},
13newBook
14{
15Id=1,
16Name=""Flash Game Development"",
17Author= " Li Si",
18Price=65.50
19}
20};
21}
Im Vergleich zu den Typen DataSet und DataTable halte ich es persönlich für bequemer, List< zu verwenden ;> um Daten zurückzugeben Einfach zu handhaben.
Dies ist das Datenformular, das in Form einer generischen Kombination (Liste<>) zurückgegeben wird. Im Vergleich zum Rückgabeergebnis von DataTable ist es prägnanter und klarer. Wie erhalten wir jedoch diesen Rückgabewert und verarbeiten diesen Wert in Flex? Tatsächlich wurde hier deutlich gezeigt, wie wir damit umgehen können. Wenn Sie sich das Bild oben genau ansehen, finden Sie „ArrayOfBook“? ? ? ? Was ist das? Könnte es sein, dass der Client diesen Rückgabewert in Form eines Arrays erhalten kann? Um die Details besser zu verstehen, müssen wir tief in die Tiefe gehen, um die spezifische Struktur des Rückgabewerts zu verstehen. Über die Debugging-Umgebung von Flex Builder können wir die folgenden Informationen erhalten:
Sehen Sie? es klar? Es gibt zwei Objekte unter dem lastResult-Struktursatz der BookList-Methode. Wenn Sie auf den Knoten klicken, handelt es sich um die beiden Book-Objekte, die wir über List
1internalfunctiononTable():void
2{
3myService.addEventListener(ResultEvent.RESULT,onSuccess);
4myService.addEventListener( FaultEvent .FAULT,onFault);
5myService.BookList.send();
6}
7
8internalfunctiononSuccess(evt:ResultEvent):void
9{
10vararrC:ArrayCollection= this .myService.BookList.lastResultasArrayCollection;
11bookGrid.dataProvider=arrC;
12}
13
14internalfunctiononFault(evt:FaultEvent):void
15{
16Alert.show(" Aufruf Die WebService-Methode ist fehlgeschlagen, Details: „+evt.fault.faultDetail.toString());
17
18}
Der entsprechende MXML-Code lautet wie folgt (das Operationsergebnis ist das gleiche als der oben zurückgegebene DataTable-Typ):
1
2
3
4
5
6
7< ;mx:DataGridColumnheaderText="Preis" dataField="Preis"/>
8
9
10
11< mx:Buttonlabel="DataTable"click="onTable()"/>
12
13
Einführung in den Datenzugriff von WebService At An dieser Stelle hoffe ich aufgrund meiner begrenzten persönlichen Fähigkeiten, dass mich jeder korrigiert, wenn der Artikel Mängel aufweist. Wenn Sie gute Vorschläge haben, können Sie diese auch vorbringen. Lassen Sie alle gemeinsam diskutieren, lernen und Fortschritte machen! !

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Nutzungsmethoden von Symbolen in der C-Sprachabdeckung Arithmetik, Zuordnung, Bedingungen, Logik, Bitoperatoren usw. werden für grundlegende mathematische Operationen verwendet, Zuordnungsoperatoren werden zur Zuordnung und Addition verwendet, Subtraktion, Multiplikationszuordnung und Abteilungszuweisung, Zustandsbetreiber werden für Unterschiede verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Zeiger, Markierungen am Ende der Datei und nicht numerische Werte.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

In der C -Sprache werden Sonderzeichen durch Escape -Sequenzen verarbeitet, wie z. B.: \ n repräsentiert Linienbrüche. \ t bedeutet tab charakter. Verwenden Sie Escape -Sequenzen oder Zeichenkonstanten, um Sonderzeichen darzustellen, wie z. B. char c = '\ n'. Beachten Sie, dass der Backslash zweimal entkommen muss. Verschiedene Plattformen und Compiler haben möglicherweise unterschiedliche Fluchtsequenzen. Bitte wenden Sie sich an die Dokumentation.

Das Char -Array speichert Zeichensequenzen in der C -Sprache und wird als char Array_name [Größe] deklariert. Das Zugriffselement wird durch den Einweisoperator weitergeleitet, und das Element endet mit dem Null -Terminator '\ 0', der den Endpunkt der Zeichenfolge darstellt. Die C -Sprache bietet eine Vielzahl von String -Manipulationsfunktionen wie Strlen (), Strcpy (), Strcat () und strcmp ().

In der C -Sprache kann die char -Typ -Konvertierung direkt in einen anderen Typ konvertiert werden, wenn: Casting: Verwenden von Casting -Zeichen. Automatische Konvertierung des Typs: Wenn ein Datentyp einen anderen Werttyp berücksichtigen kann, wandelt der Compiler diese automatisch um.

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.
