<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET/C# development blog &#187; asp.net</title>
	<atom:link href="http://blog.milosierny.net/tag/asp-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.milosierny.net</link>
	<description>blog o technologiach okołodotnetowych</description>
	<lastBuildDate>Sat, 24 Apr 2010 20:17:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Egzamin 70-562: .NET Framework 3.5, ASP.NET Application Development – jak zdać?</title>
		<link>http://blog.milosierny.net/2009/12/16/egzamin-70-562-net-framework-3-5-asp-net-application-development-%e2%80%93-jak-zdac/</link>
		<comments>http://blog.milosierny.net/2009/12/16/egzamin-70-562-net-framework-3-5-asp-net-application-development-%e2%80%93-jak-zdac/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 21:53:43 +0000</pubDate>
		<dc:creator>Bartosz</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[70-562]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[certyfikacja]]></category>
		<category><![CDATA[egzamin]]></category>
		<category><![CDATA[mcts]]></category>

		<guid isPermaLink="false">http://blog.milosierny.net/?p=93</guid>
		<description><![CDATA[Ogólnie o 70-562
Celem egzaminu numer 70-562 jest potwierdzenie kompetencji w zakresie programowania aplikacji internetowych za pomocą ASP.NET na platformie .NET 3.5. Jak czytamy na stronie poświęconej egzaminowi profil idealnego kandydata do zdania tego egzaminu to osoba pracująca w średnich-dużych zespołach z dwu-, trzyletnim doświadczeniem w dziedzinie tworzenia aplikacji webowych.
Prócz tego egzamin obejmuje wszystkie zagadnienia dotykające [...]]]></description>
			<content:encoded><![CDATA[<h1>Ogólnie o 70-562</h1>
<p>Celem egzaminu numer 70-562 jest potwierdzenie kompetencji w zakresie programowania aplikacji internetowych za pomocą ASP.NET na platformie .NET 3.5. Jak czytamy na stronie poświęconej egzaminowi profil idealnego kandydata do zdania tego egzaminu to osoba pracująca w średnich-dużych zespołach z dwu-, trzyletnim doświadczeniem w dziedzinie tworzenia aplikacji webowych.</p>
<p>Prócz tego egzamin obejmuje wszystkie zagadnienia dotykające tematyki webaplikacji, między innymi:</p>
<ul>
<li>Dostęp do danych za pomocą ADO.NET</li>
<li>Webserwisy</li>
<li>WCF</li>
<li>AJAX i Javascript</li>
<li>Konfiguracja IIS.</li>
</ul>
<p>Zakres jest dość rozległy, ale nadal obraca się wokół pisania aplikacji internetowych i w tym kontekście sprawdza wiedzę z dodatkowych dziedzin.</p>
<p>Oczywiście – tak jak w przypadku innych egzaminów &#8211; samo kilkuletnie doświadczenie programistyczne nie gwarantuje pozytywnego złożenia egzaminu. Potrzebne jest jeszcze solidne powtórzenie swojej wiedzy i nauczenie się pewnych rzeczy na pamięć (co w codziennej pracy z powodzeniem jest zastępowane choćby przez Intellisense). Jak zatem dobrze przygotować się do złożenia egzaminu?</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-0055460474580388";
/* 468x60, utworzono 09-11-27 */
google_ad_slot = "0413534588";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h1>70-562 – jak zdać?</h1>
<p>Dobrą pomocą do powtórzenia materiału jest na przykład książka: <a href="http://www.microsoft.com/learning/en/us/book.aspx?ID=12489">MCTS Self-Paced Training Kit (Exam 70-562): Microsoft .NET Framework 3.5-ASP.NET Application Development</a>. Rozdział po rozdziale omawia  poszczególne zagadnienia, szczególnie dużo miejsca poświęcając ADO.NET. Trzeba zaznaczyć, że nie jest to książka do nauki programowania w ASP.NET  &#8211; można ją raczej nazwać repetytorium. Na uwagę zasługują ramki „Exam tip” z sugestiami, na co szczególnie zwrócić uwagę podczas egzaminu.</p>
<p>Książka na pierwszy rzut oka przeraża objętością – jest przynajmniej tak duża jak Self-Paced Training Kit dla egzaminu 70-536. Pamiętajmy jednak, że przykładowe kody źródłowe pisane są podwójnie (w C# i w VB.NET), a sporą cześć zajmują powtórki rozdziałów i przykładowe scenariusze.</p>
<p>Zasadniczo są dwa sposoby używania książki. Można próbować czytać ją tzw. ciurkiem i… po mniej więcej pół godziny odpłynąć do krainy Morfeusza. Nie polecam.</p>
<p>Drugi sposób – znacznie bardziej efektywny – to czytanie książki z otwartym Visual Studio i wypróbowywanie konstrukcji, o których właśnie czytasz. Oczywiście &#8211; pewnie większość z nich już kiedyś używałeś, ale być może nie zauważyłeś pewnych detali, które mogą zaważyć na tym, jak odpowiesz na pytania.</p>
<p>Olbrzymią wartością dodaną jest płyta z przykładowymi pytaniami testowymi. Jest 125 pytań podsumowujących poszczególne lekcje i 200 pytań praktycznych przypominających te, które będą na egzaminie.</p>
<p>W sieci można też kupić zestawy przykładowych pytań na <a href="http://www.measureup.com/">MeasureUp</a> lub na <a href="http://www.selftestsoftware.com/">SelfTestSoftware</a>, które także przypominają pytania na prawdziwym egzaminie i pozwalają ocenić stan przygotowania.</p>
<p>Tak na marginesie: w <a href="http://blog.milosierny.net/2009/01/21/egzamin-70-536-application-development-foundation/#comments">komentarzach</a> do wpisu o <a href="http://blog.milosierny.net/2009/01/21/egzamin-70-536-application-development-foundation/">egzaminie 70-536</a> użytkownik Matol napisał, że można kupić prawdziwe (lub zbliżone do prawdziwych) pytania z egzaminów albo nawet dostać je za darmo, w związku z czym &#8211; jego zdaniem &#8211; egzaminy te nie sprawdzają jakiejkolwiek rzeczywistej wiedzy. Z takim stwierdzeniem nie mogę się zgodzić (z wielu powodów). Jeśli natomiast Matol miał na myśli, że przez dumpy z pytań egzaminacyjnych wartość egzaminów się obniża, to owszem, skłonny jestem przyznać rację. Ale jednocześnie można powiedzieć, że również maturę i pracę magisterską można kupić (i także deprecjonuje to wartość tych egzaminów), a jednak nikt nie wyobraża sobie nie zrobić matury albo nie złożyć egzaminu magisterskiego. Tym niemniej Matol poczynił ciekawą uwagę i odniosę się do niej w innym wpisie.</p>
<p>Wracając do pytań testowych – oczywiście uczenie się odpowiedzi na pamięć nie ma najmniejszego sensu. Ale wykonywanie testów i sprawdzanie swoich odpowiedzi pozwala szybko zidentyfikować te obszary, w których nasza wiedza wymaga ulepszenia.</p>
<p>Ten model nauki sprawdził się w moim przypadku. Nie korzystałem z dumpów i nie mogę się pochwalić wynikiem 1000/1000, ale z powodzeniem zdałem egzamin. Oczywiście z powodu NDA nie mogę ujawniać treści egzaminu, ale zaskoczyła mnie minimalna liczba pytań dotycząca LINQ. Pozostałe proporcje były „w normie”.</p>
<p>Kilka podstawowych informacji dla osób, które jeszcze nie zdawały: egzamin pisze się w centrum szkoleniowym, które może organizować certyfikację Microsoft (<a href="http://www.microsoft.com/poland/certyfikacje/training/default.mspx">aktualna lista ośrodków</a>) za pomocą programu testującego na komputerze. Wynik zna się od razu po egzaminie. Do zaliczenia potrzeba 700 punktów na 1000 możliwych.</p>
<h1>70-562 – zdałem i co dalej?</h1>
<p>Jeśli planujesz przystąpić do egzaminu 70-562 raczej wątpię, że Twój wybór jest przypadkowy. Egzamin ten jest zwykle wybierany jako drugi, po zdaniu 70-536 (przeczytaj,<a href="http://blog.milosierny.net/2009/01/21/egzamin-70-536-application-development-foundation/"> jak przygotować się do egzaminu 70-536</a>). Zdanie dwóch tych dwóch egzaminów skutkuje przyznaniem certyfikatu: Microsoft Certfified Technology Specialist  &#8211; .NET Framework 3.5, ASP.NET Application. Jeśli zdałeś te dwa egzaminy to jesteś wśród 59 osób w Polsce (dane na 8 grudnia 2009 – możesz zajrzeć do oficjalnej <a href="http://www.microsoft.com/poland/certyfikacje/mcp/stat.mspx">statystyki</a>). Brzmi nieźle, prawda? <img src='http://blog.milosierny.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Jeśli chcesz uzyskać wyższy poziom certyfikacji  &#8211; Microsoft Professional Developer (MPD) w dziedzinie ASP.NET na platformie .NET 3.5 i znaleźć się wśród 20 osób w Polsce posiadających ten certyfikat, będziesz zainteresowany zdaniem egzaminu <a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-564">70-564: Pro: Designing and Developing ASP.NET Applications Using the Microsoft .NET Framework 3.5</a>.</p>
<h1>Podsumowanie</h1>
<p>Na koniec krótkie podsumowanie:</p>
<ol>
<li>Egzamin 70-562 jest dla programistów ASP.NE T      z kilkuletnim doświadczeniem.</li>
<li>Istnieje sporo materiałów do nauki do      egzaminu, w tym książka z MS-Press typu Self-Paced.</li>
<li>Przydatne jest wykonywanie opisywanych ćwiczeń (pisanie kodu), tak żeby zaznajomić się z treścią w sposób praktyczny.</li>
<li>Pomocne jest rozwiązywanie przykładowych testów i wyciąganie wniosków ze swoich błędnych odpowiedzi.</li>
<li>Zdanie dwóch egzaminów 70-536 i 70-562      skutkuje uzyskaniem certyfikatu Microsoft Certified Specialist.</li>
</ol>
<p>Powodzenia!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milosierny.net/2009/12/16/egzamin-70-562-net-framework-3-5-asp-net-application-development-%e2%80%93-jak-zdac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Łączenie kontrolek Web Parts w ASP.NET 2.0</title>
		<link>http://blog.milosierny.net/2009/11/30/laczenie-webpartow-w-asp-net-2-0/</link>
		<comments>http://blog.milosierny.net/2009/11/30/laczenie-webpartow-w-asp-net-2-0/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 22:52:21 +0000</pubDate>
		<dc:creator>Bartosz</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[web parts]]></category>

		<guid isPermaLink="false">http://blog.milosierny.net/?p=54</guid>
		<description><![CDATA[W ASP.NET 2.0 wprowadzono interesującą i wydajną funkcjonalność &#8211; Web Parts. Czym są Web Parts? W skrócie: są to pewne zamknięte komponenty aplikacji internetowej, które są tworzone i zarządzane w jednolity sposób. Jedną z najbardziej użytecznych cech web partów (czasami będę odmieniać przez przypadki, ponieważ nie udało mi się znaleźć żadnego dobrego polskiego odpowiednika) jest [...]]]></description>
			<content:encoded><![CDATA[<p>W ASP.NET 2.0 wprowadzono interesującą i wydajną funkcjonalność &#8211; <strong>Web Parts</strong>. Czym są Web Parts? W skrócie: są to pewne zamknięte komponenty aplikacji internetowej, które są tworzone i zarządzane w jednolity sposób. Jedną z najbardziej użytecznych cech web partów (czasami będę odmieniać przez przypadki, ponieważ nie udało mi się znaleźć żadnego dobrego polskiego odpowiednika) jest to, że mogą być one dodawane, usuwane i edytowane nie tylko przez programistów, ale też przez użytkowników Twojej aplikacji internetowej. Web parts w akcji możesz zobaczyć np. na stronie: <a href="http://igoogle.com">igoogle.com</a>.</p>
<p>Ten wpis nie będzie o tworzeniu web partów &#8211; chcę skupić się na pewnym małym wycinku tematu &#8211; mianowicie na tworzeniu połączeń między web partami.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-0055460474580388";
/* 468x60, utworzono 09-11-27 */
google_ad_slot = "0413534588";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h1>Po co łączyć web parts</h1>
<p>Przypuśćmy, że tworzysz aplikację webową, która wyświetla szczegóły na temat europejskich miast. Chciałbyś zorganizować te stroną w taki sposób, żeby korzystała z web parts. W ten sposób umożliwiłbyś użytkownikowi samodzielne zarządzanie wyglądem strony. Załóżmy, że w jednym web parcie użytkownik będzie wpisywał (bądź wybierał z listy) nazwę miasta. W innych web partach pojawią się wówczas informacje takie jak:</p>
<ul>
<li>liczba ludności miasta,</li>
<li>slideshow ze zdjęciami z miasta,</li>
<li>aktualna prognoza pogody, itd.</li>
</ul>
<p>Aby uzyskać opisaną funkcjonalność, jako programista, musisz ustalić połączenie między web partami. Można to zrobić na dwa sposoby &#8211; 1) ustalić statyczne połączenie lub 2) umożliwić użytkownikom tworzenie dynamicznych powiązań. Omówię pierwszy z nich.</p>
<h1>Statyczne powiązanie web partów</h1>
<p>Statyczne powiązanie polega na wskazaniu jednego web parta jako dostawcy (<strong>provider</strong>) i jednego bądź więcej odbiorców (<strong>consumer</strong>).</p>
<p>Uwaga: dla ułatwienia jako web partów będziemy używać własnych kontrolek (<strong>user controls</strong>).</p>
<p>Stworzenie dostawcy polega na dodaniu do gotowej kontrolki metody, która będzie zwracała pewną wartość. W naszym przykładzie chcemy, aby była to nazwa miasta pochodząca z rozwijalnej listy. Oto, jak mógłby wyglądać przykładowy kod takiej kontrolki:</p>
<pre class="brush: csharp;">
public partial class CityChooser : System.Web.UI.UserControl
{

    string _cityName = CityData.GetData().First().Name;

    [ConnectionProvider(&quot;My web parts connection&quot;, &quot;GetCityName&quot;)]
    public string GetCityName()
    {
        return _cityName;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            string userCity = DropDownList1.SelectedValue;
            _cityName = CityData.GetData().First(city =&gt; city.Name == userCity).Name;
        }

    }
}
</pre>
<p>Obiekt <span class="myPre">CityData</span> zawiera po prostu listę miast w postaci struktur zawierających wszystkie potrzebne dane (np. pole <span class="myPre">Name</span> czy <span class="myPre">Population</span>). Dokładny wygląd tej klasy nie jest w tej chwili istotny. Najistotniejsza jest metoda:</p>
<pre class="brush: csharp;">
[ConnectionProvider(&quot;My web parts connection&quot;)]
public string GetCityName()
{
    return _cityName;
}
</pre>
<p>Metoda ta (<strong>ważne &#8211; publiczna!</strong>) zwraca po prostu nazwę miasta wybranego z listy rozwijalnej. Atrybut <span class="myPre">ConnectionProvider</span> określa, że jest to nasz dostawca danych dla innych web partów (konsumentów). Tu używamy z jednym parametrem (&#8221;przyjazną&#8221; nazwą połączenia), ale jest też przeciążona wersja z dwoma typu <span class="myPre">string</span>. Wówczas pierwszy określa &#8220;przyjazną&#8221; nazwę naszego połączenia, a drugi definiuje <strong>unikalną</strong> nazwę naszego punktu połączenia. Można pominąć drugi parametr &#8211; wówczas nasz punkt będzie się nazywał <span class="myPre">default</span> (oczywiście, gdybyśmy chcieli zdefiniować drugi <span class="myPre">ConnectionProvider</span>, to wówczas trzeba już użyć drugiego parametru &#8211; nazwa <span class="myPre">default</span> byłaby już zajęta).</p>
<p>Mamy zatem zdefiniowanego dostawcę naszych danych. Czas na konsumentów.</p>
<p>Stworzenie konsumenta polega na dodaniu do kontrolki będącej web partem metody (znów publicznej), która będzie przyjmować parametr &#8211; tego samego typu, jaki jest zwracany przez naszą metodę-dostawcę. Metodą tą należy opatrzyć atrybutem <span class="myPre">ConnectionConsumer</span>. Całość mogłaby wyglądać następująco:</p>
<pre class="brush: csharp;">
public partial class PopulationDisplayer : System.Web.UI.UserControl
{
    [ConnectionConsumer(&quot;My consumer&quot;)]
    public void ShowPopulation(string city)
    {
        lblCityPop.Text = CityData.GetData().First(c =&gt; c.Name == city).Population.ToString();
    }
}
</pre>
<p>I znów najważniejszy jest atrybut <span class="myPre">ConnectionConsumer</span>. Parametry mają takie samo znaczenie jak w poprzednim przypadku.</p>
<p>Teraz, gdy mamy już zdefiniowanego dostawcę i co najmniej jednego odbiorcę, możemy ustalić połączenie. W tym celu musimy stworzyć stronę, na której będą działać nasze web party. Dodajemy oczywiście kontrolkę <span class="myPre">WebPartManager</span> oraz <span class="myPre">WebPartZone</span>, w której w <span class="myPre">ZoneTemplate</span> umieszczamy nasze web party. Kod kontrolki <span class="myPre">WebPartZone</span> może wyglądać następująco:</p>
<pre class="brush: xml;">
&lt;asp:WebPartZone ID=&quot;WebPartZone3&quot; runat=&quot;server&quot; Style=&quot;width: 650px; height: auto;&quot;&gt;
    &lt;ZoneTemplate&gt;
        &lt;uc2:CityChooser ID=&quot;Provider&quot; runat=&quot;server&quot; /&gt;
        &lt;uc3:PopulationDisplayer ID=&quot;Consumer&quot; runat=&quot;server&quot; /&gt;
    &lt;/ZoneTemplate&gt;
&lt;/asp:WebPartZone&gt;
</pre>
<p>Samo powiązanie definiujemy natomiast w kontrolce <span class="myPre">WebPartManager</span> w części <span class="myPre">StaticConnections</span>:</p>
<pre class="brush: xml;">
&lt;asp:WebPartManager ID=&quot;WebPartManager1&quot; runat=&quot;server&quot;&gt;
    &lt;StaticConnections&gt;
        &lt;asp:WebPartConnection
            ID=&quot;CityToPopulation&quot;
            ProviderID=&quot;Provider&quot;
            ConsumerID=&quot;Consumer&quot;&gt;
        &lt;/asp:WebPartConnection&gt;
    &lt;/StaticConnections&gt;
&lt;/asp:WebPartManager&gt;
</pre>
<p>I tak oto, gdy w jednym web parcie z listy wybierzemy miasto, to w drugim zobaczymy liczbę ludności tego miasta:</p>
<div id="attachment_71" class="wp-caption alignnone" style="width: 488px"><img class="size-full wp-image-71" title="Powiązanie Web Parts " src="http://blog.milosierny.net/wp-content/uploads/2009/11/web-parts.PNG" alt="Powiązanie Web Parts " width="478" height="371" /><p class="wp-caption-text">Powiązanie Web Parts </p></div>
<p>Gdybyśmy w atrybutach definiujących naszego dostawcę i konsumenta podali unikalne nazwy dla naszych punktów, np:</p>
<pre class="brush: csharp;">
[ConnectionProvider(&quot;My web parts connection&quot;, &quot;ProvideData&quot;)]
</pre>
<pre class="brush: csharp;">
[ConnectionConsumer(&quot;My consumer&quot;, &quot;ConsumeData&quot;)]
</pre>
<p>wówczas kod kontrolki <span class="myPre">WebPartManager</span> wyglądałby nieco inaczej:</p>
<pre class="brush: csharp;">
    &lt;asp:WebPartManager ID=&quot;WebPartManager1&quot; runat=&quot;server&quot;&gt;
        &lt;StaticConnections&gt;
            &lt;asp:WebPartConnection
            ID=&quot;CityToPopulation&quot;
            ProviderID=&quot;Provider&quot;
            ProviderConnectionPointID=&quot;ProvideData&quot;
            ConsumerID=&quot;Consumer&quot;
            ConsumerConnectionPointID=&quot;ConsumeData&quot;&gt;
            &lt;/asp:WebPartConnection&gt;
        &lt;/StaticConnections&gt;
    &lt;/asp:WebPartManager&gt;
</pre>
<p>Musielibyśmy wówczas określić, że chodzi nam o konkretne metody za pomocą właściwości: <span class="myPre">ProviderConnectionPointID</span> i <span class="myPre">ConsumerConnectionPointID</span>.</p>
<p>Gdybyśmy chcieli użyć większej ilości konsumentów, musielibyśmy zdefiniować odpowiednie <span class="myPre">WebPartConnection</span> dla każdej pary web partów.</p>
<p>W taki sposób można łatwo definiować statyczne połączenia. O tym, jak umożliwić użytkownikom strony tworzenie dynamicznych połączeń, będzie następny (krótki) wpis.</p>
<p>Tym razem załączam kod źródłowy przykładowego rozwiązania &#8211; wersja dla Visual Studio 2008. Żeby korzystać z web partów, trzeba mieć SQL Server wersję Express, ponieważ web parts korzystają z bazy danych (<span class="myPre">App_Data/ASPNETDB.MDF</span>), żeby zapamiętywać preferencje użytkownika. Paczka z kodem nie zawiera tego pliku &#8211; trzeba go sobie stworzyć samemu (np. przy pomocy narzędzia ASP.NET Configuration).</p>
<p><span class="myPre"><img class="alignnone size-full wp-image-74" style="vertical-align: middle; margin-right: 10px;" title="vssolution" src="http://blog.milosierny.net/wp-content/uploads/2009/11/vssolution.gif" alt="vssolution" width="30" height="28" /><a href="http://blog.milosierny.net/wp-content/uploads/2009/11/WebParts-static-connections-blog.milosierny.zip">WebParts static connections &#8211; kod C#</a> (6,29 KB)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milosierny.net/2009/11/30/laczenie-webpartow-w-asp-net-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

