Silverlight 3.0 : Ďalšie technologické novinky

Published 12. novembra 2009 8:56

Silverlight 3 prináša veľa noviniek aj v oblasti sieťovej komunikácie a webových služieb. K zrýchleniu komunikácie prispeje nový Binary Message Encoder. Umožňuje zmenšiť veľkosť posielaných balíkov. O úspore kapacity pre jednotlivé typy správ svedčí graf na obrázku.

Redukcia veľkosti pre jednotlivé typy správ

Redukcia veľkosti pre jednotlivé typy správ

 

Ak v Silverlight aplikácii využívajúcej webovú službu vybudovanej na platforme Silverlight 2 došlo k problému v komunikácii služby, tieto výnimky neboli šírené do Silverlight aplikácie a teda nebolo ich tam možné ošetriť. Prejavili sa len ako nič nehovoriaca všeobecná výnimka CommunicationException. V novej verzii Silverlight 3 sú k dispozícii výnimky FaultException a FaultException<ExceptionDetail> , ktoré nesú podrobné informácie o príčine zlyhania. Výnimky typu WCF error faults sú teraz šírené naprieč celým komunikačným reťazcom vrátane Silverlight 3 aplikácie.

Zjednodušilo sa aj používanie Server-side push duplexu a v novej verzii je k dispozícii aj Binary XML serialization.

Pre vytvorenie klientskej aplikácie využívajúcej WCF Duplex Service je potrebné do klientskej Silverlight aplikácie pridať referenciu na príslušnú službu (kontextové menu Add reference) a vytvoriť Call Back metódy:

using System.Windows.Controls;
using System.ServiceModel;
using System.ServiceModel.Channels;
using SL3DuplexClient.SL3DuplexService;
using System;

namespace SL3DuplexClient
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            EndpointAddress address = new 
            EndpointAddress("http://localhost:19021/DuplexService.svc");

            CustomBinding binding = new CustomBinding(
                new PollingDuplexBindingElement(),
                new BinaryMessageEncodingBindingElement(),
                new HttpTransportBindingElement());

            DuplexServiceClient proxy = new DuplexServiceClient(binding, address);
            proxy.ReceiveReceived += new 
            EventHandler(proxy_ReceiveReceived);
            proxy.OrderAsync("Widget", 3);
            reply.Text = "Sent order of 3 Widgets." + Environment.NewLine;

        }

        void proxy_ReceiveReceived(object sender, ReceiveReceivedEventArgs e)
        {
            if (e.Error == null)
            {
                reply.Text += "Service reports Widget order is " + e.order.Status + 
                "." + Environment.NewLine;

                if (e.order.Status == OrderStatus.Completed)
                {
                    reply.Text += "Here is the completed order:" + 
                    Environment.NewLine;

                    foreach (string order in e.order.Payload)
                    {
                        reply.Text += order + Environment.NewLine;
                    }
                }

            }
        }
    }
}

 

Pre zobrazenie textu je na XAML stránke jediný prvok typu Text Block. Vytvorenie WCF Duplex Services služby je mimo tému tejto publikácie, popis nájdete na msdn http://msdn.microsoft.com/en-us/library/dd470106(VS.95).aspx a hotový kód celého riešenia serverovej aj klientskej strany si môžete prevziať z blogu http://www.davidezordan.net/blog/?p=935.

 

Späť na obsah

Bookmark and Share

Komentáre

Bez komentárov

Tento blog

Štítky

Ešte neboli vytvorené žiadne štítky.

Predplatné