Jirka Pénzeš Blog – Neznáma krajina, kde i sáňkovat do kopce jde zlehka
Lehce naváži a doplním nedávný článek o třídě SmtpClient. Třidu používám často a vždy jsem s ní byl spokojen. Nyní jsem ale narazil na malý problém. Možná je to známý problém a má triviální řešení. Já ale tento oříšek zatím nerozlouskl. Samozřejmě pominuli fakt, že třídu lze nahradit jinou knihovnou.
Pakliže chceme odesílat emaily prostřednictvím SMTP protokolu, musíme najít nějaký vhodný komunikačních mechanismus. SMTP (Simple Mail Transfer Protocol) je jeden z nejstarších a dobře definovaných protokolů pro zajištění výměny emailů. Komunikace probíhá formou výměny speciálních zpráv mezi klientem a serverem. Samotná specifika komunikace nás ale zajímat nemusejí, neboť se o to dobře stará třídy SmtpClient.
Rád bych vám představil aplikaci mSender. S Kindlem často cestuji a ne vždy mám u sebe k dispozici synchronizační USB kabel. Často tak používám odesílání dokumentů přímo na Kindle email. Proto jsem si napsal malou aplikaci, která mi tento proces ulehčí a vytvoří mi nad ním určitou kontrolu. Kontrolou mám na mysli například schopnost – pamatovat si, které soubory již aplikace odeslala.
Jak to funguje? V podstatě jen nastavíte – Kindle email (@kindle.com nebo @free.kindle.com), přihlašovací údaje k vašemu emailovému účtu a adresu a port odesílacího smtp serveru. Soubory se posílají skrze Váš email, není potřeba žádné třetí strany. Je nutné, aby odesílací email byl mezi povolenými na straně Amazonu – jinak by dokumenty nikdy nedorazili.
Na následujících několika řádcích se vás pokusím seznámit s velice užitečným a mocným rozhraním. Řeč bude o rozhraní INotifyPropertyChanged, které je obsažené ve jmenném prostoru Systém.ComponentModel. Konkrétně se podíváme na různé způsoby implementace v jazyce C#.
Nejdříve si ale o rozhraní něco řekněme. Dalo by se říci, že se v podstatě jedná o možnou implementaci návrhového vzoru Observer. Pakliže jste se již s implementací tohoto vzoru setkali – tato bude lehce odlišná. INotifyPropertyChanged je postaveno na vyvolání události. Oproti klasické implementaci vzoru, kde je nutné dědit ze třídy Observable, zde tato nutnost odpadá.
V podstatě toto rozhraní slouží k tomu, aby jeden objekt mohl sledovat druhý. Klienti jsou pak informováni o každé změně ve sledovaném objektu. Informaci o změně stavu dostanou formou události PropertyChanged. Klienti mohou na nová data okamžitě reagovat. Jedná se tedy o jakési vázání (svazování) dat.
Každý program pracuje s nějakými daty. Řekněme, že mluvíme o objektech, se kterými program pracuje, například nějaká datová struktura. S těmito daty aplikace pracuje typicky na úrovni operační paměti a po ukončení aplikace o data přijdeme. Pakliže chceme data zachovat i pro další start aplikace, je nezbytné je uložit do perzistentního úložiště – například na pevný disk. V tento okamžik se musíme zamyslet nad formátem, ve kterém data bude ukládat. Máme k dispozici celou řadu různých řešení. Můžeme je ukládat jako triviální textové soubory či jako serializovanou posloupnost jedniček a nul. Nebo jako XML dokument. A právě XML je to, co nás zajímá.
Nyní jsem studentem Informačních technologií na Univerzitě Pardubice. Dlouhodobě se věnuji programování na platformě .NET, zejména ASP.NET a jazyk C#.NET. V současnosti je mým velkým zájmem technologie LINQ a WPF, objektově orientované programování a počítačová grafika. Dále se věnuji i jazyku JAVA a architektuře aplikací.
Poslední komentáře