Publikoval Michal Kočí dňa 7.5.2008 o 23:00 v kategórii Silverlight
Občas Vaša Silverlight aplikácia potrebuje komunikovať so serverom, nie len Vašim, ale aj iným. Aké sú možnosti komunikácie je obsahom tohto príspevku.
Typy komunikácie
Komunikáciu so serverom môžeme v zásade rozdeliť na 3 typy v závislosti na tom, čo je cieľom komunikácie:
No a na každý z týchto typov sa hodí iný prístup.
Stiahnutie súboru alebo načítanie informácie zo servera
Ak potrebujete stiahnuť zo servera súbor, potom máte najmä tieto možnosti:
Odoslanie dát alebo informácie na server
Ak potrebujete na server odoslať dáta alebo informácie, potom máte najmä tieto možnosti:
Odoslanie aj stiahnutie informácie
Ak potrebujete na server odoslať informácie a dostať aj odpoveď, potom máte najmä tieto možnosti:
WebRequest a webové služby
Ukážku použitia triedy WebRequest nájdete v mojom predchádzajúcom príspevku - Silverlight 2 - Nahratie súboru na server. Použitiu webových služieb by som sa chcel venovať v jednom z mojich ďaľších príspevkov.
WebClient
Ako iné, aj táto komunikácia prebieha asynchrónne. Ak potrebujete stiahnuť dáta ako text, prihláste sa k odberu udalosti DownloadStringCompletedEventHandler a v ošetrujúcej metóde (v ukážke je to metóda Client_DownloadStringCompleted) spracujte e.Result, čo je v tomto prípade vlastnosť typu string obsahujúca Vami požadovaný dokument. Samotný download spustíte zavolaním metódy DownloadStringAsync, ktorej predáte URI súboru, ktorý chcete stiahnuť a načítať.
private void WebClientForTextData()
{
Uri uri = new Uri("http://localhost/SL/Data.xml");
WebClient client = new WebClient();
client.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(Client_DownloadStringCompleted);
client.DownloadStringAsync(uri);
}
void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Cancelled == false && e.Error == null)
{
string data = e.Result;
}
}
Ak potrebujete stiahnuť dáta binárne, postupte je veľmi podobný. Prihláste sa k odberu udalosti OpenReadCompleted a v ošetrujúcej metóde (v ukážke je to metóda Client_OpenReadCompleted) spracujte e.Result, čo je v tomto prípade vlastnosť typu Stream obsahujúca Vami požadovaný dokument. Samotný download spustíte zavolaním metódy OpenReadAsync, ktorej predáte URI súboru, ktorý chcete stiahnuť a načítať.
private void WebClientForBinaryData()
{
Uri uri = new Uri("http://localhost/SL/Image.png");
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(Client_OpenReadCompleted);
client.OpenReadAsync(uri);
}
void Client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Cancelled == false && e.Error == null)
{
Stream data = e.Result;
}
}
Záver
Komunikácia so serverom je jednoduchá a ukrýva nespočítateľné možnosti pre Vaše aplikácie. Nezabudnite však vždy zvážiť, či dáta chcete sťahovať alebo môžu byť súčasťou aplikácie. Ak ich chcete sťahovať, podľa účelu si teraz budete vedieť vybrať ten správny prístup.
Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.