Coach


In pieno rock ".net" roll
Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

WCF Rest, recuperare immagini per Silverlight

In quest'ultimo periodo stò apprezzando sempre di più il grande lavoro che stato fatto dietro a WCF(Windows Communication Foundation) sopratutto nell'ottica sempre più diffusa dell'applicazioni a Servizio SaaS.

Ancora di più se la pensiamo con la tecnologia Rest che ci permette di creare un servizio WCF che possa essere consumato non come servizio ma come url.

Esempio molto comune e la possibilità di recuperare le immagini da un file server come se fosse un webserver.

Per fare questo come facciamo?

Dobbiamo creare un OperationContract che come valore di ritorno ha uno stream e inoltre bisogna "contornarlo" di un'attributo WebGet(UriTemplate = "GetImage?name={name}")] che permette di consumare il servizio tramite Rest

Es.

[WebGet(UriTemplate = "GetData?name={name}")]

[OperationContract]

public Stream GetData(string name)

{

byte[] buffer = null;

string path = System.IO.Path.Combine(@"c:\temp\", name);

using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))

{

buffer = new byte[fs.Length];

fs.Read(buffer, 0, (int)fs.Length);

}

MemoryStream ms = new MemoryStream(buffer);

//stream di ritorno

MemoryStream msreturn = new MemoryStream();

Bitmap image = new Bitmap(ms);

image.Save(msreturn, System.Drawing.Imaging.ImageFormat.Jpeg);

msreturn.Position = 0;

//imposto il contentype del response

WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";

return msreturn;

}

In questo modo possiamo richiamare direttamente l'immagine tramite url

es.

http://localhost/servicerest/myservice.svc/getimage?name=file.jpg

Tuttò ciò rimane ancora più utile per recupare le immagini tramite Silverlight dove possiamo scrivere direttamente

Imageimg = new Image();

BitmapImage image = new BitmapImage(new Uri("http://localhost/servicerest/myservice.svc/getimage?name=file.jpg", UriKind.Absolute));

 

img.Source = image;

 

e poi si aggiunge al controllo Canvas o Grid che si voglia.

 

Se volete approfondire il discorso di wcf e rest vi consiglio questi link

http://www.codeplex.com/aspnet/Wiki/View.aspx?title=WCF%20REST

http://www.pluralsight.com/main/screencasts/default.aspx

martedì, 14 apr 2009 Ore. 17.19
  • Views Home Page: 300.891
  • Views Posts: 827.552
  • Views Gallerie: 356.903
  • n° Posts: 484
  • n° Commenti: 275












Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003