Avatar billede disco_keld Nybegynder
23. juni 2003 - 23:51 Der er 13 kommentarer og
1 løsning

Asynchronous Webservice spm?

Hej med jer......

Jeg er ved at prøve at lave en Async Webservice.

Men den siger "blank skærm"! :-(

Min kode:
-----------------------------------------------

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim AsyncCallback As New AsyncCallback(AddressOf MyCallback)
            Dim AsyncResult As IAsyncResult
            Dim obj As New StockServices.StockService
            AsyncResult = obj.BeginGetStockQuote("IBM", 5, AsyncCallback, Nothing)
        End Sub

        Private Sub MyCallback(ByVal AsyncResult As System.IAsyncResult)
            Dim ReturnValue As String
            Dim obj As StockServices.StockService
            ReturnValue = obj.EndGetStockQuote(AsyncResult)

            lblQuote.Text = "Stock Quote = " + ReturnValue
        End Sub

---------------------------------------------------
Jeg sætter disse værdier i page_load koden:

("IBM", 5, AsyncCallback, Nothing)

Webmetoden tager 2 parametre: "IBM" og 5 som er antal sekunder som den skal vente med at returnere SOAP svaret.

Ud fra det returnere min webservice et predefined tal.

Håber nogen kan hjælpe

Mvh

DK
Avatar billede odegaard Nybegynder
24. juni 2003 - 00:55 #1
Øhm den siger blank skærm ?

Typisk skal man caste AsyncResult som du har gemt i et stateobjekt.

Prøv at se dette lille klip. Det satte en del på plads for mig ihvertfald:
http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030409WinFormsMB/manifest.xml
Avatar billede disco_keld Nybegynder
24. juni 2003 - 10:15 #2
>> odegaard!

TAKKKKKKKKKKK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:-)

jeg prøver mig lige frem og så høre du du nærmere.
Avatar billede odegaard Nybegynder
24. juni 2003 - 14:18 #3
Hvorfor vil du egentlig lave den async på en webside? Her har man jo ikke problemer med "white screen of synchronicity"

Det er vel kun aktuelt når man skal hente data fra flere webservices, og vil lade ventetiden fra serverne bliver afviklet samtidigt.
Avatar billede disco_keld Nybegynder
24. juni 2003 - 14:29 #4
fordi jeg vil prøve det....... og plus det går hurtigere.

Hehe :-)

men ikke før jeg for fri fra arbejde!
Avatar billede odegaard Nybegynder
24. juni 2003 - 14:31 #5
nej det går ikke hurtigere. Det er som sagt kun hvis du har flere tråde som i ny og næ sover.
Avatar billede disco_keld Nybegynder
24. juni 2003 - 14:44 #6
sover = lange svar tider ik??????

altså hvis jeg har forstået det rigtigt.

Processeringen af koden når man anvender en Sync service, holder indtil et svar er modtaget fra webmetoden.

Omvendt med Async services, så fortsætter processeringen af koden selv om et svar fra webmetoden endnu ikke er modtaget.

Er det rigtigt forstået? :-(
Avatar billede odegaard Nybegynder
24. juni 2003 - 15:03 #7
Ja men hvilken kode vil du processere? Det data du henter er vel noget som efterfølgende skal bearbejdes.
Det er jo heller ikke ligefrem fordi din pageload indeholder noget andet.
Avatar billede disco_keld Nybegynder
24. juni 2003 - 18:52 #8
Hej....

Odegaard,- det er som sagt til øvelses brug den ovenstående kode.

Men man kunne forstille sig et scenario hvor der var en masse lokale tråde/metode kald og/eller webmetode kald.

Vil det så ikke være en fordel at lave dem som Async?

Se nu lige bort fra min kode der oppe og at det ikke er i en win app.

Det er i en web app........

Men hvorfor er det ikke hurtigere siger du?
Avatar billede odegaard Nybegynder
24. juni 2003 - 19:17 #9
Det er hurtigere hvis du skal requeste flere webservices. Så kan du starte med at requeste dem, og derefter hente dem ind én efter én, efterhånden som serverne bliver klar. Dvs. at hvis n servere har svartider på ca. et sekund, vil vente tiden være ét sekund + n * download fra serveren.
Hvis det ikke var asynkront, ville ventetiden være n * (1 sekund + download fra server). Som du kan se, ville det være det samme udtryk for n=1.
Regnestykker er selvfølgelig kun en sandhed med modifikationer, da der selvfølgelig går nogle millisekunder med de forskellige kald.

Er der nogle servere der er endnu langsommere end den hurtigste, kan man udnytte at man kan processere de hurtigtsvarende servere først, og mens de øvrige bliver klar.

Håber det gav mening.
Avatar billede disco_keld Nybegynder
25. juni 2003 - 19:33 #10
>> Odegaard mange tak!

:-)

Så du mener altså at man udelukkende skal bruge Async services, ved mange webmetode kald på sammetid eller hvis man laver en Win app?

Tjaaa.... okay så hehe.

Hvis du kommer med et svar, så smider jeg lige nogle points i hovedet på dig!

Mvh

DK
Avatar billede odegaard Nybegynder
25. juni 2003 - 21:22 #11
prøv som du kan ramme :-)

Det er ikke noget jeg mener. Det var sådan set noget jeg tilfældigvis sad og læse forleden i min "Core reference" :-)
Avatar billede disco_keld Nybegynder
26. juni 2003 - 08:13 #12
Hehe....... okay, here you go! :-)

Hvad er det for en "Core Reference" du bruger hvis jeg må spørge?
Avatar billede odegaard Nybegynder
26. juni 2003 - 09:49 #13
"Microsoft .NET Compact Framework Core Reference"

Den er godt nok til CF.NET, men alt hvad der gælder her, gælder nu også i den fulde .NET.
Ret fed bog hvis man skal programmere til SmartDevices (eneste minus er at de altid tager udgangspunkt i den fulde .NET, hvorefter de kommer med begrænsningerne, lige netop som man troede man havde set lyset).
Avatar billede disco_keld Nybegynder
26. juni 2003 - 10:06 #14
Okay....

Er det en Microsoft Press bog? Eller hvilket forlag er den fra...

Jeg vil også til at kode til smartdevice app's snart!! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester