<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bird's Bits</title>
	<atom:link href="http://birdsbits.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://birdsbits.wordpress.com</link>
	<description>Computers, programming, and the internet</description>
	<lastBuildDate>Fri, 25 Mar 2011 00:02:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='birdsbits.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bird's Bits</title>
		<link>http://birdsbits.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://birdsbits.wordpress.com/osd.xml" title="Bird&#039;s Bits" />
	<atom:link rel='hub' href='http://birdsbits.wordpress.com/?pushpress=hub'/>
		<item>
		<title>.NET Remoting with Events in VB 2005 and .NET 2.0</title>
		<link>http://birdsbits.wordpress.com/2007/09/05/net-remoting-with-events-in-vb-2005-and-net-20/</link>
		<comments>http://birdsbits.wordpress.com/2007/09/05/net-remoting-with-events-in-vb-2005-and-net-20/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 18:31:55 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/09/05/net-remoting-with-events-in-vb-2005-and-net-20/</guid>
		<description><![CDATA[I learned how to add events to a remote client by studying the &#8220;Chatter&#8221; remoting example in .NET Remoting and Event Handling in VB .NET, by Paul Kimmell. I will not attempt to explain the entire &#8220;Chatter&#8221; code example, since a good explanation is already given in Kimmell&#8217;s article, but I do want to point out a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=34&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I learned how to add events to a remote client by studying the &#8220;Chatter&#8221; remoting example in <a target="_blank" href="http://www.developer.com/net/vb/article.php/3452471" title="This web page will open in a new window.">.NET Remoting and Event Handling in VB .NET</a>, by Paul Kimmell. I will not attempt to explain the entire &#8220;Chatter&#8221; code example, since a good explanation is already given in Kimmell&#8217;s article, but I do want to point out a few important aspects that weren&#8217;t clear to me at first.<span id="more-34"></span></p>
<p><strong>Delegate</strong><br />
The delegate is declared in the SharedCode project (it doesn&#8217;t really matter where it is declared, as long as it is within the scope of any class that uses it):</p>
<p><pre class="brush: vb;"> Public Delegate Sub MessageEventHandler(ByVal Sender As Object, ByVal e As ChatEventArgs) </pre></p>
<p><strong>Remotable class and event source</strong><br />
The delegate is used by the <code>Chatter</code> class which is also in the SharedCode project. It appears in the event declaration of the <code>Chatter</code> class:</p>
<p><pre class="brush: vb;"> Public Event MessageEvent As MessageEventHandler </pre></p>
<p><strong>Client class and event handler</strong><br />
The <code>Chatter</code> class is declared in the  <code>Client</code> class as a private class member, <code>FChatter</code>. It is instantiated by the constructor, which also adds an event handler. The event handler handles the <code>Chatter.MessageEvent</code> which is of the type <code>MessageEventHandler</code>. The actual address of <code>OnMessageEvent</code> will be an address within the application domain of whatever application instantiates an object of type <code>Client</code>. Here&#8217;s where things can get a bit confusing. The <code>Client</code> class doesn&#8217;t get directly instantiated, instead this class has a shared (static) field that is given a reference to an object of it&#8217;s own type (it&#8217;s own class) when the <code>Instance</code> method is called for the first time.</p>
<p>The most important points here,  are that the <code>Client</code> constructor will only be called once (this is the Singleton pattern) and will use the <code>AddHandler</code> statement to add the address of the <code>OnMessageEvent</code> handler to the Client object. The address will be <u>in the application domain of the application that calls the constructor</u>.</p>
<p><pre class="brush: vb;">
Private Sub New()
RemotingConfiguration.Configure("client.exe.config", False)
FChatter = New Chatter
AddHandler FChatter.MessageEvent, AddressOf OnMessageEvent
End Sub
</pre></p>
<p>When it is called, the delegate is given the address of the <code>OnMessageEvent</code> handler in the application domain of whichever client called the <code>Send</code>, or <code>ShowHistory</code> method. This is important! The <code>ClientApp</code> is able to receive events from the remote <code>Chatter</code> object because the delegate for the event holds a reference to an event handler in the <code>ClientApp</code>&#8216;s own memory space.</p>
<p><pre class="brush: vb;"> Public Sub OnMessageEvent(ByVal Sender As Object, ByVal e As ChatEventArgs)

If (Not IsSelf(e.Sender)) Then
Broadcaster.Broadcast(Environment.NewLine)
Broadcaster.Broadcast("{0} said: {1}", e.Sender, e.Message)
Broadcaster.Broadcast("chat&gt;")
End If
End Sub

</pre></p>
<p> It is also important to remember how the <code>MarshalByRefObject</code> class works. The <code>Chatter</code> class inherits from <code>MarshalByRefObject</code>, which allows the methods of a <code>Chatter</code> object to appear in a remote application domain. In other words, a remote application can instantiate a <code>Chatter</code> object (which is really running in the server&#8217;s application domain) and call methods on that object. But, when the <code>Chatter</code> raises an event, it will call the event handler on the client. This call goes in the opposite direction, so the client also needs to inherit from <code>MarshalByRefObject</code> so that it&#8217;s event handler can be marshaled back to the <code>Chatter</code> object.</p>
<p><strong>Additional Reading</strong></p>
<p>From dotNetJunkies<br />
Scott Stewart, 2003, <a target="_blank" href="http://dotnetjunkies.com/Tutorial/BFB598D4-0CC8-4392-893D-30252E2B3283.dcik" title="This web page will open in a new window.">Working With Events Over Remoting</a><br />
(This article is quite helpful if you can get past the non-standard grammar.)</p>
<p>From Useless Inc.<br />
Tomer Gabel, 2005, <a target="_blank" href="http://www.tomergabel.com/Events+And+NET+Remoting.aspx" title="This web page will open in a new window."><font color="#6c8c37">Events and .NET Remoting</font></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=34&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/09/05/net-remoting-with-events-in-vb-2005-and-net-20/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>More on Delegates and Events in VB 2005</title>
		<link>http://birdsbits.wordpress.com/2007/08/31/more-on-delegates-and-events-in-vb-2005/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/31/more-on-delegates-and-events-in-vb-2005/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 18:21:58 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/31/more-on-delegates-and-events-in-vb-2005/</guid>
		<description><![CDATA[In the .NET 2.0 Framework, with Visual Basic 2005, there are a number of ways to define and use delegates, and even more ways to define and use events . This post summarizes these differences. Using  delegates To use delegates you need three things: A delegate declaration: A declaration of the signature of the handler procedure. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=33&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the .NET 2.0 Framework, with Visual Basic 2005, there are a number of ways to define and use delegates, and even more ways to define and use events . This post summarizes these differences.<span id="more-33"></span></p>
<h2>Using  delegates</h2>
<h4>To use delegates you need three things:</h4>
<ol>
<li>A delegate declaration: A declaration of the signature of the handler procedure.<br />
(A class is actually defined behind the scenes in VB.)</li>
<li>A delegate object: An instance of the delegate type defined above which holds a pointer to the actual handler procedure.</li>
<li>A handler: The function that is called indirectly by the delegate.</li>
</ol>
<p>When a call is made to the delegate, the call is forewarned to the handler.</p>
<h4>There are three places that you need to add code to your project:</h4>
<ol>
<li>Outside the other class declarations:
<ul>
<li>Declare the delegate using the <em>Delegate</em> keyword. This is really a class declaration of your delegate type. This declaration defines the signature for event handing procedures of this type:<br />
<code>Delegate Sub BirdsBitsEventHandler(ByVal sMessage As String)</code></li>
</ul>
</li>
<li>In the class that will send a callback:
<ul>
<li>Declare (<em>Dim</em>) a variable of your delegate type:<br />
<code>Dim BBMsgDelegate As BirdsBitsMessageHandler</code></li>
<li><code></code>Create a <em>New</em> instance of your delegate type:<br />
<code>BBMsgDelegate = New BirdsBitsMessageHandler _<br />
(AddressOf Form2.IncomingBirdsBitsMessage)</code></li>
<li><code></code>Indirectly call the event handler by calling <em>Invoke</em> on the delegate:<br />
<code>BBMsgDelegate.Invoke("This is a test!")</code></li>
</ul>
</li>
<li>In the module that will receive the callback:
<ul>
<li>Define the actual<strong> </strong>handler procedure:<br />
<code>Public Sub IncomingBirdsBitsMessage(ByVal sMessage As String)<br />
    TextBox1.Text = sMessage<br />
End Sub</code></li>
</ul>
</li>
</ol>
<h2>Exposing  and Handling Events</h2>
<h4>To use events, there are still three things you need:</h4>
<ol>
<li>A declaration of a delegate.<br />
(VB can generate a hidden delegate declaration when the event is declared.)</li>
<li>A declaration of the event.</li>
<li>An event handler.</li>
</ol>
<p>A class that exposes an event defines a private (hidden) delegate field that holds pointers to all the clients that subscribe to the event. There are a number of ways to add events and event handlers to a classes.</p>
<h4>There are two or three places (depending on your approach) that you need to add code to your project:</h4>
<ol>
<li> Outside the other class declarations:<br />
(This step is only required for the first option in step 2.)</p>
<ul>
<li>Declare the delegate using the <em>Delegate</em> keyword.<br />
<code>Delegate Sub AFoundEventHandler(ByVal sMessage As String)</code></li>
</ul>
</li>
<li>In the class that will send events:
<ul>
<li>Declare and raise an event of the delegate type.
<ul>
<li>Use the <em>Event</em> keyword to declare an event:<br />
<code>Public Event AFound As AFoundEventHandler</code></li>
<li>Use the <em>RaiseEvent </em>keyword to send an event.<br />
<code>Dim e As New EventArgs<br />
RaiseEvent AFound(Me, e)<br />
</code></li>
</ul>
</li>
<li><code></code>Or, declare and use an event type defined by the .NET Framework.<br />
<u>This is the preferred approach!</u>  (You can skip step 1, since the delegate for this event is defined in the .NET Framework.)</p>
<ul>
<li>Use the <em>Event</em> keyword to declare an event of the type <em>System.EventHandler</em>. <code>Public Event AFound As EventHandler</code></li>
<li>Use the <em>RaiseEvent </em>keyword to send an event.<code><br />
Dim e As New EventArgs<br />
RaiseEvent AFound(Me, e)<br />
</code></li>
</ul>
</li>
<li>Or, Declare an event <u>and</u> a delegate in one statement: (If you use this option, you don&#8217;t need step 1 above since the delegate is declared along with the event) 
<ul>
<li>Use the <em>Event</em> keyword to declare an event. VB generates a hidden delegate with the signature of the event:<br />
<code>Public Event AFound(ByVal sender As Object, ByVal e As EventArgs)</code></li>
<li><code></code>Use the <em>RaiseEvent </em>keyword to send an event.<br />
<code>Dim e As New EventArgs<br />
RaiseEvent AFound(Me, e)<br />
</code></li>
</ul>
</li>
</ul>
</li>
<li> In the module that instantiates the event class:
<ul>
<li>Create an object for use with events<em>.</em> 
<ul>
<li>Use the<em>WithEvents</em> keyword to create an instance of the class:<br />
<code>Dim WithEvents LetGet as new LetterGetter() </code></li>
<li><code></code>Use the <em>Handles</em> keyword to define an event handler:<code><br />
Private Sub LetterGetter_AFound(ByVal sender As Object, ByVal e As EventArgs) Handles LetGet.AFound<br />
  ' Do something<br />
End Sub<br />
</code></li>
</ul>
</li>
<li>Or, add an event handler to an existing object:
<ul>
<li>Declare an instance of the event class:<br />
<code>Dim LetGet as new LetterGetter() </code></li>
<li>Define a subroutine to handle the event:<br />
<code>Private Sub AFoundHandler(ByVal sender As Object, ByVal e As EventArgs)<br />
  ' Do something<br />
End Sub</code></li>
<li>Add a subroutine to handle the event using the <em>Add</em> <em>Handler</em> keyword:<br />
<code>AddHandler LetGet.AFound, AddressOf AFoundHandler</code></li>
<li>Remove the handler (when no longer needed) using the <em>Remove</em> <em>Handler</em> keyword :<br />
<code>RemoveHandler Obj.Ev_Event, AddressOf EventHandler</code></li>
</ul>
</li>
</ul>
</li>
</ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=33&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/31/more-on-delegates-and-events-in-vb-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>.NET Remoting: The Simplest Remoting Example</title>
		<link>http://birdsbits.wordpress.com/2007/08/24/net-remoting-the-simplest-remoting-example/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/24/net-remoting-the-simplest-remoting-example/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 22:18:56 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Remoting]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/24/net-remoting-the-simplest-remoting-example/</guid>
		<description><![CDATA[I just read chapter 10, .NET remoting, in Introducing Microsoft .NET 3rd Edition, 2003, by David S. Platt. His explanations are very clear and easy to read, but I had a little trouble compiling and running the sample code. Part of the problem is that the code was written for an earlier version of Visual Studio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=28&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just read chapter 10, .NET remoting, in <em><a target="_blank" href="http://www.rollthunder.com/Books/IntroducingMicrosoftDotNet/index.htm" title="This web page will open in a new window.">Introducing Microsoft .NET 3rd Edition</a></em>, 2003, by David S. Platt. His explanations are very clear and easy to read, but I had a little trouble compiling and running the sample code. Part of the problem is that the code was written for an earlier version of Visual Studio and the .NET library. I took notes as I upgraded and built this example and I thought I&#8217;d share them here. I built this example in Visual Basic 2005 Express SP1. I have upload this project into my Box.net folder on this blog. Even if you don&#8217;t have David Platt&#8217;s book you can probably get a good idea about how remoting works by looking at my VB2005 version of his example code, reading the introduction below,  and reading the on-line articles listed at the end of the introduction.</p>
<p><span id="more-28"></span><br />
<strong>Introduction</strong></p>
<p>I&#8217;m working on an application that can use two alternative user interfaces: a GUI, and a remote text terminal. Most of the time the application will be installed on a single computer and users will interact with the application through the Windows Forms GUI on that machine, and remote users will interact by sending text commands via TCP/IP. But there are also situations where users may wish to install the GUI on one machine and the application on another. In the old days, I would have solved this problem with DCOM. But, this is a .NET application, so I set out to learn the .NET way to solve this problem. (I made a decision at the beginning of the project to use .NET 2.0 rather than 3.0 or 3.5, since it is time tested and well documented.)</p>
<p>There are three general solutions available  in the .NET 2.0 Framework: ASP.NET (aka .NET web services, XML Web services), Enterprise Services (built on COM+), and .NET remoting. (With the introduction of Windows Communication Foundation in .NET 3.0 there are even more options.) You can read a good comparison of these methods in this MSDN Library article: .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/8119f66k(vs.80).aspx">Choosing Communications Options in .NET</a>. I chose .NET remoting because: 1) It doesn&#8217;t require IIS (or any other server). Our customer wouldn&#8217;t like the extra administrative overhead of having to set up and run an Internet server with this application. 2) Performance: .NET remoting over TCP or IPC gives better performance than .NET web services. 3) Preserves all the features of the managed code framework: the type system, pass by reference, etc.</p>
<p>There are three basic entities involved in .NET remoting: 1) The host- which just launches the remotable type. This will typically be housed in an .exe file. 2) The remotable type (class) &#8211; which runs in the application domain of the host, but presents it&#8217;s properties, methods, and events for consumption by a client in another application domain or on another machine. This is typically housed in a DLL. 3) The client- a class (usually housed in another .exe file) which instantiates an instance of the remotable type. The remotable type will appear as if it were running in this class&#8217; application domain. You can read more about his in the MSDN article:  .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/72x4h507(VS.80).aspx">.NET Remoting</a>.</p>
<p>It is fairly simple to create each of these three entities:</p>
<ol>
<li>To create a remotable type, you only need to define a class that inherits the <em>MarshalByRefObject</em> base class. Here&#8217;s an example from the MSDN .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/txct33xt(VS.80).aspx">How to: Build a Remotable Type</a>.</li>
<li>To create a host you need to do two things:<br />
- Create and register a server channel object, which will handle the networking protocols and serialization formats that transport requests to the remotable object.<br />
- Register the remotable type with the .NET remoting system so that it can use your channel to listen for requests for this type.<br />
Here&#8217;s an example from the MSDN .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ecc85927(VS.80).aspx">How to: Build a Hosting Application</a>.</li>
<li>To create a client you need to do three things:<br />
- Create a register a client channel.<br />
- Activate the remotable object. Depending on the activation mode you may be getting a reference to an object that was already created and published by the host, or you may be creating the object remotely.<br />
Here&#8217;s an example from the MSDN .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/y6dc64f2(VS.80).aspx">How to: Build a Client Application</a>.</li>
</ol>
<p><strong>Building and running the &#8220;SimplestRemoting&#8221; sample code</strong><br />
Here are the steps I took to build and run the &#8220;SimplestRemotingVB&#8221; code sample from Platt&#8217;s book:</p>
<p>1) Imported  the SimplestRemotingHostVB  project into VS2005 using the conversion wizard which starts automatically when you open a project created in a previous version of Visual Studio.</p>
<p>a) Changed the following declaration to use <code>Dim </code>instead of <code>Public:</code></p>
<p><code>Dim Chnl As Runtime.Remoting.Channels.Tcp.TcpServerChannel</code><br />
(Note that I am showing the line as it is after I fixed it, not as it was originally)</p>
<p>b) Added the argument <code>true </code>to the following line:</p>
<p><code>Runtime.Remoting.Channels.ChannelServices.RegisterChannel(Chnl, True)</code></p>
<p>c) Deleted the &#8220;AssemblyInfo.vb&#8221; file, since it isn&#8217;t needed.</p>
<p>2) Imported the SimplestRemotingObjectVB project into VS2005.</p>
<p>3) Imported the SimplestRemotingClientVB project in to VS2005.</p>
<p>a) Added the argument <code>true </code>to the following line:</p>
<p><code>Runtime.Remoting.Channels.ChannelServices.RegisterChannel(Chnl, True) </code></p>
<p><code></code> 4) Delete all the existing files in bin/release/ and bin/debug/. (I did this after I had trouble with the VB2005 &#8220;rebuild&#8221; command. Sometimes it didn&#8217;t recreate all the executables.)</p>
<p>5) Build each project.</p>
<p>6) Run the host, SimplestRemotingHostVB.exe, and click the &#8220;Register&#8221; button. You may have antivirus or other security software that will try to block the remoting host from opening a TCP port. If this happens you may get a pop-up message that gives you the option to allow this program to open a port. (Norton does this.)</p>
<p>7) Run the client, SimplestRemotingClientVB.exe, and click the &#8220;Register&#8221; button, and then the &#8220;Get time&#8221; button. You should see your computer&#8217;s time displayed.</p>
<p><strong>Discussion</strong></p>
<p>I would have called this section FAQs, but these are just my questions, but often my questions are also other people&#8217;s questions too, so I&#8217;ll pass them on with the answers I found.</p>
<ul>
<li>Q: Do I need to run a web server like IIS, or apache in order to use a TCP channel with .NET remoting? <br />
A: No.</li>
<li>Q: How do I know I&#8217;m really creating a remote object (i.e., an object that really is in the host&#8217;s application domain and not in the client&#8217;s?)<br />
A1: Try running the client without first running the host and registering the remoting object. The client will throw an unhandled exception when you click on the &#8220;Get time&#8221; button. This doesn&#8217;t completely answer the question, but at least you know that the host is providing <em>something</em> that&#8217;s needed by the client.<br />
A2: Run the <em>client</em> in the VS2005 debugger. You <u>will not</u> see trace messages from the object in the immediate window. You <u>will</u> see trace messages when you run the <em>host</em> in the VS2005 debugger. Presumably the trace listener will not receive trace messages across a process boundary (or application domain?) so you only get trace messages in the host&#8217;s process since that is where the object is actually running.</li>
<li>Q: Is the DLL which houses the remoting object loaded by both the host and the server?<br />
A: Yes, if you look at the host and server processes in a process viewer like <a target="_blank" href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx">ProcessExplorer</a>, you see that SimpleRemotingObjectVB.dll is loaded into both processes. Apparently this is because it is running in the host process and it is loaded in the client process because the client reads meta-data from it.</li>
</ul>
<p><strong>Building and Running the ConfigFile Sample Code</strong></p>
<p>There is another example program in chapter 10 of Platt&#8217;s book, in the section titled &#8220;Big Simplification: Configuration Files&#8221;. I imported and built these files, but I wasn&#8217;t able to get the client to work using the configuration files. I&#8217;ve added this VB2005 project to my Box.net folder, just in case one of you can help me figure out why it doesn&#8217;t work. Here are the symptoms:</p>
<ul>
<li>Everything builds without errors or warnings.</li>
<li>The host runs and throws no exceptions when I click either of the buttons (the top button registers the remotable object programmatically, the bottom button registers it using the app.config file.)</li>
<li>The client runs and throws no exceptions when I click the top button to register the remotable object using the app.config file. When I click the &#8220;Get time&#8221; button the application freezes.</li>
<li>I commented out the client code that does configures the client using the app.config file and replaced it with code that programmatically configures the client. Everything works with this code. My conclusion is that the host code that uses app.config is working, but there is something wrong with either the client app.config file or the code that registers it.</li>
</ul>
<p>Any suggestions as to why this isn&#8217;t working?</p>
<p><strong>Further Reading</strong><br />
Here are some additional articles that you may find helpful:</p>
<p>From MSDN<br />
2007, The MSDN Library, .NET Framework Developer&#8217;s Guide: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/kwdt6w2k.aspx">.NET Framework Remoting Overview</a><br />
Matt Travis, 2005, <a target="_blank" href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20050120NETMT/manifest.xml">What&#8217;s new in .NET Remoting for the .NET Framework 2.0</a> (Video)<br />
Web Services and Other Distributed Technologies, Reference: <a target="_blank" href="http://msdn2.microsoft.com/en-us/webservices/aa740645.aspx">.NET Remoting</a> (Links to MSDN resources on remoting)</p>
<p>From the CodeProject<br />
(These three articles have code examples in C#)<br />
Nishant Sivakumar, 2002, <a target="_blank" href="http://www.codeproject.com/csharp/absoluteremoting.asp" title="This web page will open in a new window.">Absolute Beginners Introduction to Remoting</a><br />
Lim Bio Liong, 2004, <a target="_blank" href="http://www.codeproject.com/csharp/ProcessActivator.asp" title="This web page will open in a new window.">Simple but Potentially Useful .NET Remoting</a>, <a target="_blank" href="http://www.codeproject.com/csharp/processactivator2.asp" title="This web page will open in a new window.">Part 2</a><br />
2007, <a target="_blank" href="http://www.codeproject.com/useritems/Remoting_Architecture.asp">Remoting Architecture in .NET</a></p>
<p>From Developer.com<br />
Paul Kimmell, 2004, .<a target="_blank" href="http://www.developer.com/net/vb/article.php/3452471" title="This web page will open in a new window.">NET Remoting and Event Handling in VB.NET</a>, <a target="_blank" href="http://www.developer.com/net/vb/article.php/3487111" title="This web page will open in a new window.">Part 2</a>, <a target="_blank" href="http://www.developer.com/net/vb/article.php/3487776" title="This web page will open in a new window.">Part 3</a><br />
(This article is very helpful and informative. I was able to build and run the example in VS2005 on Vista.)</p>
<p>From The SecretGeek<br />
2003, <a target="_blank" href="http://secretgeek.net/QAD_Remoting.asp" title="This web page will open in a new window.">.NET Remoting: The Quick and Dirty Guide</a></p>
<p>From VB.NET Heaven:<br />
2004, <a target="_blank" href="http://www.vbdotnetheaven.com/UploadFile/ksasikumar/NetRemoting11152005081901AM/NetRemoting.aspx" title="This web page will open in a new window.">.NET Remoting Using VB.NET</a></p>
<p> From &#8220;Welcome to the Metaverse&#8221;<br />
Rich Turner, 2004, <a target="_blank" href="http://blogs.msdn.com/richardt/archive/2004/03/05/84771.aspx">On the Road to Indigo: Is .NET Remoting Dead?</a> (The answer: no! But&#8230; )</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=28&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/24/net-remoting-the-simplest-remoting-example/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>Join me in studying for MCTS exam 70-536</title>
		<link>http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 18:53:46 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[MCPD]]></category>
		<category><![CDATA[MCTS]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/</guid>
		<description><![CDATA[I just got the MCTS Self-Paced Training Kit (Exam 70-536): .NET FRAMEWORK 2.0 Application Development  Foundation in the mail yesterday. I finished lesson 1 in chapter 1 and posted my notes and VB examples on this page: Types in the .NET Framework &#8211; Part 1: Value Types. As I complete each lesson, I&#8217;ll add a link [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=27&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just got the <cite>MCTS Self-Paced Training Kit (Exam 70-536): .NET FRAMEWORK 2.0 Application Development  Foundation</cite> in the mail yesterday. I finished lesson 1 in chapter 1 and posted my notes and VB examples on this page: <a href="http://birdsbits.wordpress.com/mcpd-study-guide/exam-70-536-application-development-foundation-study-topics/types-in-the-net-framework-part-1-value-types/">Types in the .NET Framework &#8211; Part 1: Value Types</a>.</p>
<p>As I complete each lesson, I&#8217;ll add a link to my notes on this page: <a href="http://birdsbits.wordpress.com/mcpd-study-guide/exam-70-536-application-development-foundation-study-topics/">Exam 70-536: Application Development Foundation &#8211; Study Topics</a>. Note that my lesson notes will be on pages, not posts. I&#8217;ll only post to let you know when I start  a new chapter.</p>
<p>I hope some of you will join me and add comments to the lesson pages. Whether you are studying for the MCTS or MCPD, it will be easier and more fun if we take the journey to certification together!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=27&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>Events and Delegates in the .NET Framework</title>
		<link>http://birdsbits.wordpress.com/2007/08/10/events-and-delegates-in-the-net-framework/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/10/events-and-delegates-in-the-net-framework/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 19:50:13 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/10/events-and-delegates-in-the-net-framework/</guid>
		<description><![CDATA[I spent the morning learning about events and delegates. I needed to learn these concepts for a VB2005 project that I&#8217;m working on. In addition, this is one of the topics that is supposedly covered in Exam 70-536. So, here&#8217;s what I learned: Events are signals that a sending object sends to a receiving object, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=20&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I spent the morning learning about events and delegates. I needed to learn these concepts for a VB2005 project that I&#8217;m working on. In addition, this is one of the topics that is supposedly covered in Exam 70-536. So, here&#8217;s what I learned:<span id="more-20"></span></p>
<p><em>Event</em>s are signals that a <em>sending object</em> sends to a <em>receiving object</em>, or <em>receiving objects</em> to notify it (or them) of some action that occurred out in the real world (like a button click), or some change of state in the program (like the completion of a computation). A sending object is said to <em>raise</em> an event, and a receiving object is said to <em>handle</em> an event.</p>
<p>When a sending object sends and event, it does it by calling a method on the receiving object. But, a sending object doesn&#8217;t doesn&#8217;t always know which object or objects might be receiving events. This problem is solved by the use of an intermediary called a <em>delegate</em>. A delegate is a class that can hold a reference to a method on a receiving object. The sending object is then able to invoke a method on the receiving object indirectly via the delegate.  (If you&#8217;ve done C programming, you can think of a delegate as being similar to a function pointer, or a callback, but delegates are type-safe) A delegate class only needs a declaration, you don&#8217;t need to provide the implementation since the CLR will implement it. The declaration specifies the signature and methods that can be called.</p>
<p>While Delegates are a feature of the .NET Framework and not specific to any particular .NET Language, it is a lot easier to understand how they work by seeing an example. Here is an experiment that I wrote in VB2005: (This isn&#8217;t elegant programming, just a quick experiment to see how events and delegates work!) This example demonstrates <em>delegate multicasting </em>which means sending an event to multiple receiving objects. I also added code to allow objects to register their delegates at run-time. This allows you to design a much more flexible software system in which there are optional objects that may or may not be created at run time and thus couldn&#8217;t be &#8221;hard wired&#8221; at design time to receive messages.</p>
<p>I created a windows forms project and added three forms: Form1, Form2, and Form3. The code from Form1 is shown below this paragraph. (I only showed the code I added, not the code created by the Forms Designer.) Form one just has one button on it. When you push the button, it invokes events for any delegates that have been registered through the method: BirdsBitsEventHandler(&#8230;).</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><font color="#0000ff">Public Class Form1<br />
    Public Delegate Sub BirdsBitsEventHandler(ByVal sMessage As String)<br />
    Dim MultiBBEventDelegate As BirdsBitsEventHandler</font></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>    <font color="#0000ff">Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br />
        Form2.Show()<br />
        Form3.Show()<br />
    End Sub </font></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>   <font color="#0000ff"> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />
        If MultiBBEventDelegate IsNot Nothing Then<br />
            MultiBBEventDelegate.Invoke(&#8220;This is a test of the BirdsBits event handler&#8221;)<br />
        Else<br />
            MsgBox(&#8220;No callbacks registered&#8221;)<br />
        End If<br />
    End Sub </font></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>    <font color="#0000ff">Public Sub RegiserHandler(ByRef BBEventDelegate As BirdsBitsEventHandler) </font></p>
<p><font color="#0000ff">        If MultiBBEventDelegate Is Nothing Then<br />
            MultiBBEventDelegate = BBEventDelegate<br />
        Else<br />
            MultiBBEventDelegate = System.Delegate.Combine(MultiBBEventDelegate, BBEventDelegate)<br />
        End If </font></p>
<p><font color="#0000ff">    End Sub</font></p>
<p><font color="#0000ff">End Class</font></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Form2 and Form3 are identical. The code from Form2 is shown below this paragraph. The form has one text box for displaying messages and a button for registering this form&#8217;s method: IncomingBirdsBitsMessage(&#8230;) with the sending form (Form1). You could actually have any number of receiving forms with this same code.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><font size="2" color="#0000ff">Public Class Form2</font><font size="2" color="#0000ff">    Public Sub IncomingBirdsBitsMessage(ByVal sMessage As String)<br />
        TextBox1.Text = sMessage<br />
    End Sub</font></p>
<p><font size="2" color="#0000ff"><font size="2" color="#0000ff"><font size="3" color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></font><font size="2" color="#0000ff"> </font><font size="2" color="#0000ff"> </font></font><font size="2" color="#0000ff"> </font></p>
<p><font size="2" color="#0000ff"><font size="2" color="#0000ff">Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />
        Dim DelegateForThisSub As New Form1.BirdsBitsEventHandler(AddressOf IncomingBirdsBitsMessage)<br />
        Form1.RegiserHandler(DelegateForThisSub)<br />
    End Sub<br />
End Class</font></font><font size="2" color="#0000ff"> </font><font size="2" color="#0000ff"><font size="2" color="#0000ff"> </font></font></p>
<p><font size="2" color="#0000ff"><font size="2" color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></font><font size="2" color="#0000ff"> </font></p>
<p><font size="2" color="#0000ff"><font size="2" color="#0000ff"><strong><font color="#000000">Sources</font></strong></font></font><font size="2" color="#0000ff"> </font></p>
<ul>
<li><font size="2" color="#0000ff"><font size="2" color="#0000ff"><font color="#000000">From the MSDN Library:</font> <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/17sde2xt.aspx">NET Framework Developer&#8217;s Guide: Events and Delegates</a></font><font size="2" color="#0000ff"> </font></font></li>
<li><font size="2" color="#0000ff"><font size="2"><font color="#000000">Balena, Francesc0. 2006. Chapter 7: Delegates and Events. <em>Programming Visual Basic 2005: The Language</em>. Microsoft Press : Redmond. </font></font></font></li>
</ul>
<p><font size="2"><font color="#000000">(The explaination of delegates and events in Balena is excellent. This is where I got most of my information.)</font></font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=20&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/10/events-and-delegates-in-the-net-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>Study Topics for Microsoft Exam 70-536: .NET Framework 2.0&#8212;Application Development Foundation</title>
		<link>http://birdsbits.wordpress.com/2007/08/10/study-topics-for-microsoft-exam-70-536-net-framework-20application-development-foundation/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/10/study-topics-for-microsoft-exam-70-536-net-framework-20application-development-foundation/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 03:48:18 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[MCPD]]></category>
		<category><![CDATA[MCTS]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/10/study-topics-for-microsoft-exam-70-536-net-framework-20application-development-foundation/</guid>
		<description><![CDATA[This list of topics was taken from a page on the Microsoft Learning web site, Preparation Guide for Exam 70-536 TS: Microsoft .NET Framework 2.0—Application Development Foundation, from the section: &#8221;Skills Measured in Exam 70-536&#8243;. I&#8217;ve just reformatted the information to make it easier to read (IMHO).  This exam is required for both the MCPD and MCTS certifications. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=19&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This list of topics was taken from a page on the Microsoft Learning web site, <a target="_blank" href="http://www.microsoft.com/learning/exams/70-536.mspx">Preparation Guide for Exam 70-536<br />
TS: Microsoft .NET Framework 2.0—Application Development Foundation,</a> from the section: &#8221;Skills Measured in Exam 70-536&#8243;. I&#8217;ve just reformatted the information to make it easier to read (IMHO).  This exam is required for both the MCPD and MCTS certifications.</p>
<p>This looks like a huge amount of material to cover in a test. I wonder if the test really covers all of this material, or just a sampling of it? Does anyone who has taken the test have some insight into this? (I&#8217;m not looking for shortcuts to studying for the exam, I&#8217;m just curious!) <span id="more-19"></span></p>
<ol>
<li><strong>Developing applications that use system types and collections</strong>
<ul>
<li><strong>Types:</strong> Manage data in a .NET Framework application by using the .NET Framework 2.0 system types. (Refer System namespace)<br />
•Value types<br />
•Nullable type<br />
•Reference types<br />
•Attributes<br />
•Generic types<br />
•Exception classes<br />
•Boxing and UnBoxing<br />
•TypeForwardedToAttribute Class</li>
<li>  <strong>Collections:</strong> Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace)<br />
•ArrayList class<br />
•Collection interfaces<br />
•ICollection interface and IList interface<br />
•IComparer interface and IEqualityComparer interface<br />
•IDictionary interface and IDictionaryEnumerator interface<br />
•IEnumerable interface and IEnumerator interface<br />
•Iterators<br />
•Hashtable class<br />
•CollectionBase class and ReadOnlyCollectionBase class<br />
•DictionaryBase class and DictionaryEntry class<br />
•Comparer class<br />
•Queue class<br />
•SortedList class<br />
•BitArray class<br />
•Stack class</li>
<li><strong>Generic Collections:</strong> Improve type safety and application performance in a .NET Framework application by using generic collections. (Refer System.Collections.Generic namespace)<br />
•Collection.Generic interfaces<br />
•Generic IComparable interface (Refer System Namespace)<br />
•Generic ICollection interface and Generic IList interface<br />
•Generic IComparer interface and Generic IEqualityComparer interface<br />
•Generic IDictionary interface<br />
•Generic IEnumerable interface and Generic IEnumerator interface IHashCodeProvider interface<br />
•Generic Dictionary<br />
•Generic Dictionary class and Generic Dictionary.Enumerator structure<br />
•Generic Dictionary.KeyCollection class and Dictionary.KeyCollection.Enumerator structure<br />
•Generic Dictionary.ValueCollection class and Dictionary.ValueCollection.Enumerator structure<br />
•Generic Comparer class and Generic EqualityComparer class<br />
•Generic KeyValuePair structure<br />
•Generic List class, Generic List.Enumerator structure, and Generic SortedList class<br />
•Generic Queue class and Generic Queue.Enumerator structure<br />
•Generic SortedDictionary class<br />
•Generic LinkedList<br />
•Generic LinkedList class<br />
•Generic LinkedList.Enumerator structure<br />
•Generic LinkedListNode class<br />
•Generic Stack class and Generic Stack.Enumerator structure</li>
<li><strong>Specialize Collections</strong>: Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace)<br />
•Specialized String classes<br />
•StringCollection class<br />
• StringDictionary class<br />
• StringEnumerator class<br />
• Specialized Dictionary<br />
• HybridDictionary class<br />
• IOrderedDictionary interface and OrderedDictionary class<br />
• ListDictionary class<br />
• Named collections<br />
• NameObjectCollectionBase class<br />
• NameObjectCollectionBase.KeysCollection class<br />
• NameValueCollection class<br />
• CollectionsUtil<br />
• BitVector32 structure and BitVector32.Section structure</li>
<li><strong>Interfaces:</strong> Implement .NET Framework interfaces to cause components to comply with standard contracts. (Refer System namespace)<br />
• IComparable interface<br />
• IDisposable interface<br />
• IConvertible interface<br />
• ICloneable interface<br />
• IEquatable interface<br />
• IFormattable interface</li>
<li><strong>Events and Delegates:</strong> Control interactions between .NET Framework application components by using events and delegates. (Refer System namespace)<br />
• Delegate class<br />
• EventArgs class<br />
• EventHandler delegates</li>
</ul>
</li>
<li><strong>Implementing service processes, threading, and application domains in a .NET Framework application</strong>
<ul>
<li><strong>Service Process:</strong> Implement, install, and control a service. (Refer System.ServiceProcess namespace)<br />
• Inherit from ServiceBase class<br />
• ServiceController class and ServiceControllerPermission class<br />
• ServiceInstaller and ServiceProcessInstaller class<br />
• SessionChangeDescription structure and SessionChangeReason enumeration</li>
<li><strong>Threads:</strong> Develop multithreaded .NET Framework applications. (Refer System.Threading namespace)<br />
• Thread class<br />
• ThreadPool class<br />
• ThreadStart delegate and ParameterizedThreadStart delegate<br />
• Timeout class, Timer class, TimerCallback delegate, WaitCallback delegate, WaitHandle class, and WaitOrTimerCallback delegate<br />
• ThreadState enumeration and ThreadPriority enumeration<br />
• ReaderWriterLock class<br />
• AutoResetEvent class and ManualResetEvent class<br />
• IAsyncResult interface (Refer System namespace)<br />
• EventWaitHandle class, RegisterWaitHandle class, SendOrPostCallback delegate, and IOCompletionCallback delegate<br />
• Interlocked class<br />
• ExecutionContext class, HostExecutionContext class, HostExecutionContext Manager class, and ContextCallback delegate<br />
• LockCookie structure, Monitor class, Mutex class, and Semaphore class</li>
<li><strong>Application domains:</strong> Create a unit of isolation for common language runtime in a .NET Framework application by using application domains. (Refer System namespace)<br />
• Create an application domain.<br />
• Unload an application domain.<br />
• Configure an application domain.<br />
• Retrieve setup information from an application domain.<br />
• Load assemblies into an application domain.</li>
</ul>
</li>
<li><strong>Embedding configuration, diagnostic, management, and installation features into a .NET Framework application</strong>
<ul>
<li><strong>Configuration management:</strong> Embed configuration management functionality into a .NET Framework application. (Refer System.Configuration namespace)<br />
• Configuration class and ConfigurationManager class<br />
• ConfigurationElement class, ConfigurationElementCollection class, and ConfigurationElementProperty class<br />
• ConfigurationSection class, ConfigurationSectionCollection class, ConfigurationSectionGroup class, and ConfigurationSectionGroupCollection class<br />
• Implement ISettingsProviderService interface<br />
• Implement IApplicationSettingsProvider interface<br />
• ConfigurationValidatorBase class</li>
<li><strong>Installation:</strong> Create a custom Microsoft Windows Installer for the .NET Framework components by using the System.Configuration.Install namespace, and configure the .NET Framework applications by using configuration files, environment variables, and the .NET Framework Configuration tool (Mscorcfg.msc).<br />
• Installer class<br />
• Configure which runtime version a .NET Framework application should use.<br />
• Configure where the runtime should search for an assembly.<br />
• Configure the location of an assembly and which version of the assembly to use.<br />
• Direct the runtime to use the DEVPATH environment variable when you search for assemblies.<br />
• AssemblyInstaller class<br />
• ComponentInstaller class<br />
• Configure a .NET Framework application by using the .NET Framework Configuration tool (Mscorcfg.msc).<br />
• ManagedInstallerClass class<br />
• InstallContext class<br />
• InstallerCollection class<br />
• InstallEventHandler delegate<br />
• Configure concurrent garbage collection.<br />
• Register remote objects by using configuration files.</li>
<li><strong>Event logs:</strong> Manage an event log by using the System.Diagnostics namespace.<br />
• Write to an event log.<br />
• Read from an event log.<br />
• Create a new event log.</li>
<li><strong>Diagnostics:</strong> Manage system processes and monitor the performance of a .NET Framework application by using the diagnostics functionality of the .NET Framework 2.0. (Refer System.Diagnostics namespace)<br />
• Get a list of all running processes.<br />
• Retrieve information about the current process.<br />
• Get a list of all modules that are loaded by a process.<br />
• PerformanceCounter class, PerformanceCounterCategory, and CounterCreationData class<br />
• Start a process both by using and by not using command-line arguments.<br />
• StackTrace class<br />
• StackFrame class</li>
<li><strong>Debugging:</strong> Debug and trace a .NET Framework application by using the System.Diagnostics namespace.<br />
• Debug class and Debugger class<br />
• Trace class, CorrelationManager class, TraceListener class, TraceSource class, TraceSwitch class, XmlWriterTraceListener class, DelimitedListTraceListener class, and EventlogTraceListener class<br />
• Debugger attributes<br />
• DebuggerBrowsableAttribute class<br />
• DebuggerDisplayAttribute class<br />
• DebuggerHiddenAttribute class<br />
• DebuggerNonUserCodeAttribute class<br />
• DebuggerStepperBoundaryAttribute class<br />
• DebuggerStepThroughAttribute class<br />
• DebuggerTypeProxyAttribute class<br />
• DebuggerVisualizerAttribute class</li>
<li><strong>Management information and Events:</strong> Embed management information and events into a .NET Framework application. (Refer System.Management namespace)<br />
• Retrieve a collection of Management objects by using the ManagementObjectSearcher class and its derived classes.<br />
• Enumerate all disk drivers, network adapters, and processes on a computer.<br />
• Retrieve information about all network connections.<br />
• Retrieve information about all services that are paused.<br />
• ManagementQuery class<br />
• EventQuery class<br />
• ObjectQuery class<br />
• Subscribe to management events by using the ManagementEventWatcher class.</li>
</ul>
</li>
<li><strong>Implementing serialization and input/output functionality in a .NET Framework application</strong>
<ul>
<li><strong>Serialization:</strong> Serialize or deserialize an object or an object graph by using runtime serialization techniques. (Refer System.Runtime.Serialization namespace)<br />
• Serialization interfaces<br />
• IDeserializationCallback interface<br />
• IFormatter interface and IFormatterConverter interface<br />
• ISerializable interface<br />
• Serilization attributes<br />
• OnDeserializedAttribute class and OnDeserializingAttribute class<br />
• OnSerializedAttribute class and OnSerializingAttribute class<br />
• OptionalFieldAttribute class<br />
• SerializationEntry structure and SerializationInfo class<br />
• ObjectManager class<br />
• Formatter class, FormatterConverter class, and FormatterServices class<br />
• StreamingContext structure</li>
<li><strong>XML serialization</strong>: Control the serialization of an object into XML format by using the System.Xml.Serialization namespace.<br />
• Serialize and deserialize objects into XML format by using the XmlSerializer class.<br />
• Control serialization by using serialization attributes.<br />
• Implement XML Serialization interfaces to provide custom formatting for XML serialization.<br />
• Delegates and event handlers are provided by the System.Xml.Serialization namespace</li>
<li><strong>Custom serialization and deserialization:</strong> Implement custom serialization formatting by using the Serialization Formatter classes.<br />
• SoapFormatter class (Refer System.Runtime.Serialization.Formatters.Soap namespace)<br />
• BinaryFormatter class (Refer System.Runtime.Serialization.Formatters.Binary namespace)</li>
<li><strong>File system:</strong> Access files and folders by using the File System classes. (Refer System.IO namespace)<br />
• File class and FileInfo class<br />
• Directory class and DirectoryInfo class<br />
• DriveInfo class and DriveType enumeration<br />
• FileSystemInfo class and FileSystemWatcher class<br />
• Path class<br />
• ErrorEventArgs class and ErrorEventHandler delegate<br />
• RenamedEventArgs class and RenamedEventHandler delegate</li>
<li><strong>Stream classes:</strong> Manage byte streams by using Stream classes. (Refer System.IO namespace)<br />
• FileStream class<br />
• Stream class<br />
• MemoryStream class<br />
• BufferedStream class</li>
<li><strong>Reader and Writer Classes:</strong> Manage the .NET Framework application data by using Reader and Writer classes. (Refer System.IO namespace)<br />
• StringReader class and StringWriter class<br />
• TextReader class and TextWriter class<br />
• StreamReader class and StreamWriter class<br />
• BinaryReader class and BinaryWriter class</li>
<li><strong>Stream Compression and Decompression:</strong> Compress or decompress stream information in a .NET Framework application (refer System.IO.Compression namespace), and improve the security of application data by using isolated storage. (Refer System.IO.IsolatedStorage namespace)<br />
• IsolatedStorageFile class<br />
• IsolatedStorageFileStream class<br />
• DeflateStream class<br />
• GZipStream class</li>
</ul>
</li>
<li><strong>Improving the security of the .NET Framework applications by using the .NET Framework 2.0 security features</strong>
<ul>
<li><strong>Code Access Security Policy</strong>: Implement code access security to improve the security of a .NET Framework application. (Refer System.Security namespace)<br />
• SecurityManager class<br />
• CodeAccessPermission class<br />
• Modify the Code Access security policy at the computer, user, and enterprise policy level by using the Code Access Security Policy tool (Caspol.exe).<br />
• PermissionSet class and NamedPermissionSet class<br />
• Standard Security interfaces<br />
• IEvidenceFactory interface<br />
• IPermission interface</li>
<li><strong>Access Control</strong>: Implement access control by using the System.Security.AccessControl classes.<br />
• DirectorySecurity class, FileSecurity class, FileSystemSecurity class, and RegistrySecurity class<br />
• AccessRule class<br />
• AuthorizationRule class and AuthorizationRuleCollection class<br />
• CommonAce class, CommonAcl class, CompoundAce class, GenericAce class, and GenericAcl class<br />
• AuditRule class<br />
• MutexSecurity class, ObjectSecurity class, and SemaphoreSecurity class</li>
<li><strong>Custom Authentication Scheme:</strong> Implement a custom authentication scheme by using the System.Security.Authentication classes. (Refer System.Security.Authentication namespace)</li>
<li><strong>Cryptography:</strong> Encrypt, decrypt, and hash data by using the System.Security.Cryptography classes. (Refer System.Security.Cryptography namespace)<br />
• DES class and DESCryptoServiceProvider class<br />
• HashAlgorithm class<br />
• DSA class and DSACryptoServiceProvider class<br />
• SHA1 class and SHA1CryptoServiceProvider class<br />
• TripleDES and TripleDESCryptoServiceProvider class<br />
• MD5 class and MD5CryptoServiceProvider class<br />
• RSA class and RSACryptoServiceProvider class<br />
• RandomNumberGenerator class<br />
• CryptoStream class<br />
• CryptoConfig class<br />
• RC2 class and RC2CryptoServiceProvider class<br />
• AssymetricAlgorithm class<br />
• ProtectedData class and ProtectedMemory class<br />
• RijndaelManaged class and RijndaelManagedTransform class<br />
• CspParameters class<br />
• CryptoAPITransform class<br />
• Hash-based Message Authentication Code (HMAC)<br />
• HMACMD5 class<br />
• HMACRIPEMD160 class<br />
• HMACSHA1 class<br />
• HMACSHA256 class<br />
• HMACSHA384 class<br />
• HMACSHA512 class</li>
<li><strong>Resource Permissions:</strong> Control permissions for resources by using the System.Security.Permission classes. (Refer System.Security.Permission namespace)<br />
• SecurityPermission class<br />
• PrincipalPermission class<br />
• FileIOPermission class<br />
• StrongNameIdentityPermission class<br />
• UIPermission class<br />
• UrlIdentityPermission class<br />
• PublisherIdentityPermission class<br />
• GacIdentityPermission class<br />
• FileDialogPermission class<br />
• DataProtectionPermission class<br />
• EnvironmentPermission class<br />
• IUnrestrictedPermission interface<br />
• RegistryPermission class<br />
• IsolatedStorageFilePermission class<br />
• KeyContainerPermission class<br />
• ReflectionPermission class<br />
• StorePermission class<br />
• SiteIdentityPermission class<br />
• ZoneIdentityPermission class</li>
<li><strong>Code Privileges</strong>: Control code privileges by using System.Security.Policy classes. (Refer System.Security.Policy namespace)<br />
• ApplicationSecurityInfo class and ApplicationSecurityManager class<br />
• ApplicationTrust class and ApplicationTrustCollection class<br />
• Evidence class and PermissionRequestEvidence class<br />
• CodeGroup class, FileCodeGroup class, FirstMatchCodeGroup class, NetCodeGroup class, and UnionCodeGroup class<br />
• Condition classes<br />
• AllMembershipCondition class<br />
• ApplicationDirectory class and ApplicationDirectoryMembershipCondition class<br />
• GacInstalled class and GacMembershipCondition class<br />
• Hash class and HashMembershipCondition class<br />
• Publisher class and PublisherMembershipCondition class<br />
• Site class and SiteMembershipCondition class<br />
• StrongName class and StrongNameMembershipCondition class<br />
• Url class and UrlMembershipConditon class<br />
• Zone class and ZoneMembershipCondition class<br />
• PolicyLevel class and PolicyStatement class<br />
• IApplicationTrustManager interface, IMembershipCondition interface, and IIdentityPermissionFactory interface</li>
<li><strong>Identity Information:</strong> Access and modify identity information by using the System.Security.Principal classes. (Refer System.Security.Principal namespace)<br />
• GenericIdentity class and GenericPrincipal class<br />
• WindowsIdentity class and WindowsPrincipal class<br />
• NTAccount class and SecurityIdentifier class<br />
• IIdentity interface and IPrincipal interface<br />
• WindowsImpersonationContext class<br />
• IdentityReference class and IdentityReferenceCollection class</li>
</ul>
</li>
<li><strong>Implementing interoperability, reflection, and mailing functionality in a .NET Framework application</strong>
<ul>Expose COM components to the .NET Framework and the .NET Framework components to COM. (Refer System.Runtime.InteropServices namespace)<br />
• Import a type library as an assembly.<br />
• Add references to type libraries.<br />
• Type Library Importer (Tlbimp.exe)<br />
• Generate interop assemblies from type libraries.<br />
• Imported Library Conversion<br />
• Imported Module Conversion<br />
• Imported Type Conversion<br />
• Imported Member Conversion<br />
• Imported Parameter Conversion<br />
• TypeConverter class<br />
• Create COM types in managed code.<br />
• Compile an interop project.<br />
• Deploy an interop application.<br />
• Qualify the .NET Framework types for interoperation.<br />
• Apply Interop attributes, such as the ComVisibleAttribute class.<br />
• Package an assembly for COM.<br />
• Deploy an application for COM access.</p>
<li><strong>Unmanaged DLLs:</strong> Call unmanaged DLL functions in a .NET Framework application, and control the marshaling of data in a .NET Framework application. (Refer System.Runtime.InteropServices namespace)<br />
• Platform Invoke<br />
• Create a class to hold DLL functions.<br />
• Create prototypes in managed code.<br />
• DllImportAttribute class<br />
• Call a DLL function.<br />
• Call a DLL function in special cases, such as passing structures and implementing callback functions.<br />
• Create a new Exception class and map it to an HRESULT.<br />
• Default marshaling behavior<br />
• Marshal data with Platform Invoke<br />
• Marshal data with COM Interop<br />
• MarshalAsAttribute class and Marshal class</li>
<li><strong>Reflection:</strong> Implement reflection functionality in a .NET Framework application (refer System.Reflection namespace), and create metadata, Microsoft intermediate language (MSIL), and a PE file by using the System.Reflection.Emit namespace.<br />
• Assembly class<br />
• Assembly attributes<br />
• AssemblyAlgorithmIdAttribute class<br />
• AssemblyCompanyAttribute class<br />
• AssemblyConfigurationAttribute class<br />
• AssemblyCopyrightAttribute class<br />
• AssemblyCultureAttribute class<br />
• AssemblyDefaultAliasAttribute class<br />
• AssemblyDelaySignAttribute class<br />
• AssemblyDescriptionAttribute class<br />
• AssemblyFileVersionAttribute class<br />
• AssemblyFlagsAttribute class<br />
• AssemblyInformationalVersionAttribute class<br />
• AssemblyKeyFileAttribute class<br />
• AssemblyTitleAttribute class<br />
• AssemblyTrademarkAttribute class<br />
• AssemblyVersionAttribute class<br />
• Info classes<br />
• ConstructorInfo class<br />
• MethodInfo class<br />
• MemberInfo class<br />
• PropertyInfo class<br />
• FieldInfo class<br />
• EventInfo class<br />
• LocalVariableInfo class<br />
• Binder class and BindingFlags<br />
• MethodBase class and MethodBody class<br />
• Builder classes<br />
• AssemblyBuilder class<br />
• ConstructorBuilder class<br />
• EnumBuilder class<br />
• EventBuilder class<br />
• FieldBuilder class<br />
• LocalBuilder class<br />
• MethodBuilder class<br />
• ModuleBuilder class<br />
• ParameterBuilder class<br />
• PropertyBuilder class<br />
• TypeBuilder class</li>
<li><strong>E-mail:</strong> Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application. (Refer System.Net.Mail namespace)<br />
• MailMessage class<br />
• MailAddress class and MailAddressCollection class<br />
• SmtpClient class, SmtpPermission class, and SmtpPermissionAttribute class<br />
• Attachment class, AttachmentBase class, and AttachmentCollection class<br />
• SmtpException class and SmtpFailedReceipientException class<br />
• SendCompletedEventHandler delegate<br />
• LinkedResource class and LinkedResourceCollection class<br />
• AlternateView class and AlternateViewCollection class</li>
</ul>
</li>
<li><strong>Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application</strong>
<ul>
<li><strong>Regional Formatting</strong>: Format data based on culture information. (Refer System.Globalization namespace) • Access culture and region information in a .NET Framework application.<br />
• CultureInfo class<br />
• CultureTypes enumeration<br />
• RegionInfo class<br />
• Format date and time values based on the culture.<br />
• DateTimeFormatInfo class<br />
• Format number values based on the culture.<br />
• NumberFormatInfo class<br />
• NumberStyles enumeration<br />
• Perform culture-sensitive string comparison.<br />
• CompareInfo class<br />
• CompareOptions enumeration<br />
• Build a custom culture class based on existing culture and region classes.<br />
• CultureAndRegionInfoBuilder class<br />
• CultureAndRegionModifier enumeration</li>
<li><strong>Drawing namespace:</strong> Enhance the user interface of a .NET Framework application by using the System.Drawing namespace.<br />
• Enhance the user interface of a .NET Framework application by using brushes, pens, colors, and fonts.<br />
• Brush class<br />
• Brushes class<br />
• SystemBrushes class<br />
• TextureBrush class<br />
• Pen class<br />
• Pens class<br />
• SystemPens class<br />
• SolidBrush class<br />
• Color structure<br />
• ColorConverter class<br />
• ColorTranslator class<br />
• SystemColors class<br />
• StringFormat class<br />
• Font class<br />
• FontConverter class<br />
• FontFamily class<br />
• SystemFonts class<br />
• Enhance the user interface of a .NET Framework application by using graphics, images, bitmaps, and icons.<br />
• Graphics class<br />
• BufferedGraphics class<br />
• BufferedGraphicsManager class<br />
• Image class<br />
• ImageConverter class<br />
• ImageAnimator class<br />
• Bitmap class<br />
• Icon class<br />
• IconConverter class<br />
• SystemIcons class<br />
• Enhance the user interface of a .NET Framework application by using shapes and sizes.<br />
• Point Structure<br />
• PointConverter class<br />
• Rectangle Structure<br />
• RectangleConverter class<br />
• Size Structure<br />
• SizeConverter class<br />
• Region class</li>
<li><strong>Text namespace:</strong> Enhance the text handling capabilities of a .NET Framework application (refer System.Text namespace), and search, modify, and control text in a .NET Framework application by using regular expressions. (Refer System.RegularExpressions namespace)<br />
• StringBuilder class<br />
• Regex class<br />
• Match class and MatchCollection class<br />
• Group class and GroupCollection class<br />
• Encode text by using Encoding classes<br />
• Encoding class<br />
• EncodingInfo class<br />
• ASCIIEncoding class<br />
• UnicodeEncoding class<br />
• UTF8Encoding class<br />
• Encoding Fallback classes<br />
• Decode text by using Decoding classes.<br />
• Decoder class<br />
• Decoder Fallback classes<br />
• Capture class and CaptureCollection class</li>
</ul>
</li>
</ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=19&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/10/study-topics-for-microsoft-exam-70-536-net-framework-20application-development-foundation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>MCSD is outdated. Become an MCPD instead!</title>
		<link>http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 16:25:11 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[MCPD]]></category>
		<category><![CDATA[MCSD]]></category>
		<category><![CDATA[MCTS]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/</guid>
		<description><![CDATA[I&#8217;ve been thinking about getting Microsoft Certification for years. I remember sitting at my desk at Intel, back in 1998, taking a break from C++ debugging in VS5 and browsing the Microsoft Certification web site. I read the requirements and decided that I would like to be an MCSD. Well, life goes on, and getting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=18&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about getting Microsoft Certification for years. I remember sitting at my desk at Intel, back in 1998, taking a break from C++ debugging in VS5 and browsing the Microsoft Certification web site. I read the requirements and decided that I would like to be an MCSD. Well, life goes on, and getting married, buying a house, traveling, going to grad school, becoming a dad, and generally having a really great time all took priority over certification. And I&#8217;m <strike>pretty</strike> quite happy about those choices!</p>
<p>Now, I&#8217;ve got a ton of experience  in C, C++, MFC, ATL and COM programming as well as some pretty respectable VB programming experience going all the way back to VB 4.0. I&#8217;m currently working on my first VB2005 project for one of my company&#8217;s clients, but I&#8217;d like to strengthen that experience with certification so that  future clients know I&#8217;m prepared to do .NET programming. That&#8217;s why I think this a good time for me to get MS certification. So, I bought a used copy of the <a target="_blank" href="http://www.microsoft.com/mspress/books/6716.aspx" title="This web page will open in a new window."><em>MCAD/MCSD Self-Paced Training Kit</em></a>. I got a good deal on it too! Two days ago I <a target="_blank" href="http://birdsbits.wordpress.com/2007/08/08/join-me-in-preparing-for-microsoft-vbnet-certification/" title="A previous post from this blog will open in a new window.">started posting </a>about starting the certification process, and started studying for my MCSD.<span id="more-18"></span></p>
<p>But this morning, while surfing blogs, looking for posts by people studying for, or who had passed the MCSD exams, I discovered that the <strong>MCSD is no longer the preferred certification for developers</strong>. Microsoft has a &#8220;<a target="_blank" href="http://www.microsoft.com/learning/mcp/newgen/default.mspx" title="This Microsoft web page will open in a new window.">New Generation of Certifications</a>&#8220;. The certification that is most appropriate for the work I am doing is <a target="_blank" href="http://www.microsoft.com/learning/mcp/mcpd/windev/default.mspx" title="This MS web page will open in a new window.">MCPD: Windows Developer</a>. Here are the requirements for getting this certification:</p>
<ol>
<li>Pass the two exams required for a Microsoft Certified Technology Specialist <a target="_blank" href="http://www.microsoft.com/learning/mcp/mcts/winapps/" title="This MS web page will open in a new window.">MCTS: .NET Framework 2.0 Windows Applications:</a>
<ul>
<li><a target="_blank" href="http://www.microsoft.com/learning/exams/70-536.mspx" title="This MS web page will open in a new window.">Exam 70-536</a>: TS: Microsoft .NET Framework 2.0 – Application Development Foundation</li>
<li>
<p class="lastInCell"><a target="_blank" href="http://www.microsoft.com/learning/exams/70-526.mspx" title="This MS web page will open in a new window.">Exam 70-526</a>: TS: Microsoft .NET Framework 2.0 – Windows-Based Client Development</p>
</li>
</ul>
</li>
<li>
<p class="lastInCell">Pass <a target="_blank" href="http://www.microsoft.com/learning/exams/70-548.mspx">Exam 70–548</a>: PRO: Designing and Developing Windows Applications by Using the Microsoft .NET Framework.</p>
</li>
</ol>
<p class="lastInCell"> So, the next step for me is to get a study guide for exam Exam 70-536. Microsoft has a self-paced training kit: <a target="_blank" href="http://www.microsoft.com/MSPress/books/9469.asp"><em>MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 &#8211; Application Development Foundation</em></a>. I&#8217;ll probably take a look at it. Does anyone have any other recommendations?</p>
<p class="lastInCell"><strong>8/9/07 3:45 PM Update:</strong> I bought the book.</p>
<p class="lastInCell"><strong>8/16/07 Update:</strong> I finished the first lesson. If you want to join me, start here: <a href="http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/">Join me in studying for MCTS exam 70-536</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=18&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>VB.NET: Lesson 1-1 The .NET Framework and the CLR</title>
		<link>http://birdsbits.wordpress.com/2007/08/09/vbnet-lesson-1-1-the-net-framework-and-the-clr/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/09/vbnet-lesson-1-1-the-net-framework-and-the-clr/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 04:18:22 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[MCSD]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/09/vbnet-lesson-1-1-the-net-framework-and-the-clr/</guid>
		<description><![CDATA[Today I read the first lesson from chapter 1, &#8220;Introduction to the .NET Framework&#8221;, in  Developing Windows-Based Applications with Microsoft Visual Basic.NET and Visual C#.NET . I read through the lesson and took the notes shown in the section below as I read. After I finished reading, I thought &#8220;ok, that&#8217;s all good stuff to know, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=16&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I read the first lesson from chapter 1, &#8220;Introduction to the .NET Framework&#8221;, in  <a target="_blank" href="http://www.microsoft.com/MSPress/books/6715.aspx" title="This web page will open in a new window."><em>Developing Windows-Based Applications with Microsoft Visual Basic.NET and Visual C#.NET</em> </a>. I read through the lesson and took the notes shown in the section below as I read. After I finished reading, I thought &#8220;ok, that&#8217;s all good stuff to know, but I want to DO something!&#8221; So, I found an article in the MSDN library on viewing the contents of an assembly: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ceats605.aspx">How to: View Assembly Contents</a>. This was actually very easy and helped me attach the material in this lesson to something concrete.</p>
<p>You use the MISL disassembler to view the assembly. If you haven&#8217;t used it before, you&#8217;ll be happy to hear that it&#8217;s easy to run. Just go to &#8220;Visual Studio Tools&#8221; on your start menu and select &#8220;Visual Studio 2005 Command Prompt&#8221;. In the DOS window that opens, type &#8220;ILDASM&#8221; which will launch the MISL disassembler in it&#8217;s own window. The MSDN &#8220;How to&#8221; article explains the rest. I recommend that you do this exercise, but don&#8217;t get sidetracked by trying to decipher everything in the manifest. It&#8217;s enough just to get the general idea of what&#8217;s in there. </p>
<p>8/9/07 Update: I won&#8217;t be posting about any more lessons in this series. Read: <a href="http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/">MCSD is Outdated. Become an MCPD Instead</a> to see why.</p>
<p>8/16/07 Update: If you would like to study for the MCTS or MCPD, then start here: <a href="http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/">Join me in studying for MCTS exam 70-536</a>.</p>
<p><strong><span id="more-16"></span></strong></p>
<p><strong>A summary of this lesson</strong> (my reading notes.)</p>
<ol>
<li>The .NET framework has two elements:
<ul>
<li>The Common Language Runtime (CLR). The CLR manages code execution. It compiles MSIL (Microsoft Intermediate Language), allocates memory, manages threads, and does garbage collection.</li>
<li>The .NET Framework class library. The class library provides reusable types that are Common Language Specification (CLS) compliant and thus can be called from any .NET language.</li>
</ul>
</li>
<li>Assemblies are the basic unit of a .NET application. They are a collection of code, resources, and metadata. The assembly has the following parts:
<ul>
<li>Assembly manifest. Each assembly has one manifest which provides:
<ul>
<li>Identity information, such as the assembly&#8217;s name and version number.</li>
<li>A list of all types exposed by the assembly.</li>
<li>A list of other assemblies required by the assembly</li>
<li>A list of code assess security instructions, including permissions required by the assembly and permissions to be denied the assembly.</li>
</ul>
</li>
<li>Modules. Each assembly contains one or more modules which contain:
<ul>
<li>Code (MSIL). This is all, or part of, the code that makes up the application.</li>
<li>Metadata that describes the code</li>
<li>Type (class) metadata</li>
</ul>
</li>
</ul>
</li>
<li>Compilation and execution of a .NET application:
<ul>
<li>Applications written in a high level .NET language like VB or C# are compiled to MSIL for deployment in one or more assemblies. At least one assembly will have a .NET executable file (stored as MISL code) designated as the entry point of the application.</li>
<li>At the beginning of execution the first assembly is loaded into memory, then the CLR:
<ol>
<li>Determines the requirements for running the program from the assembly&#8217;s manifest.</li>
<li>Compares security permissions requested by the assembly with the system&#8217;s security policy.</li>
<li>If the security permissions are appropriate, it creates a process for the application to run in.</li>
<li>Runs the Just In Time (JIT) compiler to compile the first block of MSIL into native binary code and stores the code for use until the program exits.</li>
<li>Initiates execution of the native code.</li>
<li>Compiles and stores more blocks of MISL as needed while the application executes.</li>
</ol>
</li>
</ul>
</li>
</ol>
<p><strong>Additional resources on this topic</strong></p>
<p>From the MSDN Library: <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/a4t23ktk.aspx">Overview of the .NET Framework</a>, <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ceats605.aspx">How to: View Assembly Contents</a></p>
<p>Tutorials from Bean Software: <a target="_blank" href="http://www.beansoftware.com/Net-Tutorials/Net-Assemblies.aspx">.NET Framework Assemblies- Part 1</a>, <a target="_blank" href="http://www.beansoftware.com/NET-Tutorials/GAC-Vbc-MSIL.aspx">.NET Framework Assemblies- Part 2</a></p>
<p>From the CodeProject: <a target="_blank" href="http://www.codeproject.com/dotnet/asmex.asp">A .NET Assembly Viewer</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=16&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/09/vbnet-lesson-1-1-the-net-framework-and-the-clr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>Join me in preparing for Microsoft VB.NET certification</title>
		<link>http://birdsbits.wordpress.com/2007/08/08/join-me-in-preparing-for-microsoft-vbnet-certification/</link>
		<comments>http://birdsbits.wordpress.com/2007/08/08/join-me-in-preparing-for-microsoft-vbnet-certification/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 21:38:01 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[MCSD]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/08/08/join-me-in-preparing-for-microsoft-vbnet-certification/</guid>
		<description><![CDATA[I&#8217;m an old programmer, but relatively new to .NET. I have some experience with VB2005 programming and would like to get certified, so I&#8217;m studying for Microsoft exam 70-306, &#8220;Developing and Implementing Windows Based Applications with Microsoft Visual Basic.NET and Microsoft Visual Studio.NET&#8221;. I&#8217;m using the book Developing Windows-Based Applications with Microsoft Visual Basic.NET and Visual C#.NET [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=15&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m an old programmer, but relatively new to .NET. I have some experience with VB2005 programming and would like to get certified, so I&#8217;m studying for Microsoft exam 70-306, &#8220;Developing and Implementing Windows Based Applications with Microsoft Visual Basic.NET and Microsoft Visual Studio.NET&#8221;. I&#8217;m using the book <a target="_blank" href="http://www.microsoft.com/MSPress/books/6715.aspx" title="This web page will open in a new window."><em>Developing Windows-Based Applications with Microsoft Visual Basic.NET and Visual C#.NET</em> </a> by Matthew A. Stoecker, published by Microsoft Press in 2003.</p>
<p>I really don&#8217;t like to study alone, so I&#8217;m inviting you  to join me. I&#8217;ll be posting my  questions, answer, and discoveries as I complete each lesson and lab in this text and I&#8217;m hoping you will also post your  observations, questions and answers in comments to the post for each lesson and lab.</p>
<p><strong>8/9/07 Update:</strong> I won&#8217;t be studying for exam 70-306 after all. Read this post to see why: <a href="http://birdsbits.wordpress.com/2007/08/09/mcsd-is-outdated-get-an-mcpd-instead/">MCSD is Outdated. Become an MCPD Instead</a></p>
<p><strong>8/16/07 Update:</strong> Join me in studying for the MCTS and MCPD. Start by reading here: <a href="http://birdsbits.wordpress.com/2007/08/16/join-me-in-studying-for-mcts-exam-70-536/">Join me in studying for MCTS exam 70-536</a>.</p>
<p><span id="more-15"></span><br />
Here&#8217;s a list of the lessons and labs from the book&#8217;s table of contents:</p>
<p>CHAPTER 1 Introduction to the .NET Framework<br />
Lesson 1: The .NET Framework and the Common Language Runtime<br />
Lesson 2: The .NET Base Class Library<br />
Lesson 3: Using Classes and Structures<br />
Lesson 4: Using Methods<br />
Lesson 5: Scope and Access Levels<br />
Lesson 6: Garbage Collection<br />
Lab 1: Classes and Garbage Collection</p>
<p>CHAPTER 2 Creating the User Interface<br />
Lesson 1: User Interface Design Principles<br />
Lesson 2: Using Forms<br />
Lesson 3: Using Controls and Components<br />
Lesson 4: Using Menus<br />
Lesson 5: Validating User Input<br />
Lab 2: The Virtual Doughnut Factory</p>
<p>CHAPTER 3 Types and Members<br />
Lesson 1: Using Data Types<br />
Lesson 2: Using Constants, Enums, Arrays, and Collections<br />
Lesson 3: Implementing Properties<br />
Lesson 4: Implementing Delegates and Events<br />
Lab 3-1: Adding Components and Implementing Members<br />
Lab 3-2: Creating a Class</p>
<p>CHAPTER 4 Object-Oriented Programming and Polymorphism<br />
Lesson 1: Introduction to Object-Oriented Programming<br />
Lesson 2: Overloading Members<br />
Lesson 3: Interface Polymorphism<br />
Lesson 4: Inheritance Polymorphism<br />
Lab 4: Using Inherited Classes</p>
<p>CHAPTER 5 Testing and Debugging Your Application<br />
Lesson 1: Using the Debugging Tools<br />
Lesson 2: Using the Debug and Trace Classes<br />
Lesson 3: Creating a Unit Test Plan<br />
Lesson 4: Handling and Throwing Exceptions<br />
Lab 5-1: Debugging an Application<br />
Lab 5-2: Creating, Throwing, and Handling Exceptions<br />
Lab 5-3: Implementing Tracing</p>
<p>CHAPTER 6 Data Access Using ADO.NET<br />
Lesson 1: Overview of ADO.NET<br />
Lesson 2: Overview of Structured Query Language<br />
Lesson 3: Accessing Data<br />
Lesson 4: Using DataSet Objects and Updating Data<br />
Lesson 5: Binding, Viewing, and Filtering Data<br />
Lesson 6: Using XML in ADO.NET<br />
Lab 6-1: Connecting with a Database<br />
Lab 6-2: Connecting with an XML Data Store</p>
<p>CHAPTER 7<br />
Lesson 1: Using GDI+<br />
Lesson 2: Authoring Controls<br />
Lesson 3: Common Tasks Using Controls<br />
Lab 7: Creating a Custom Control</p>
<p>CHAPTER 8 Advanced .NET Framework Topics<br />
Lesson 1: Implementing Print Functionality<br />
Lesson 2: Accessing and Invoking Components<br />
Lesson 3: Implementing Accessibility<br />
Lesson 4: Implementing Help in Your Application<br />
Lesson 5: Globalization and Localization<br />
Lab 8: Creating a Localized Form with Print Support</p>
<p>CHAPTER 9 Assemblies, Configuration, and Security<br />
Lesson 1: Assemblies and Resources<br />
Lesson 2: Configuring and Optimizing Your Application<br />
Lesson 3: Securing Your Application<br />
Lab 9: Configuring and Securing an Application</p>
<p>CHAPTER 10 Deploying Your Application<br />
Lesson 1: Planning the Deployment of Your Project<br />
Lesson 2: Configuring Your Setup Project<br />
Lab 10: Creating an Installer Application</p>
<p><strong>Additional Resources</strong></p>
<p>From Microsoft:  </p>
<ul>
<li><a target="_blank" href="http://www.microsoft.com/learning/mcp/mcsd/default.mspx">Microsoft Certified Solution Developer</a></li>
<li><a target="_blank" href="http://www.microsoft.com/learning/exams/70-306.mspx">Preparation Guide for Exam 70-306</a></li>
</ul>
<p>From Bloggers:</p>
<ul>
<li><a target="_blank" href="http://geekswithblogs.net/gavin/archive/2004/09/02/10583.aspx" title="This blog post will open in a new window.">MCSD.Net Certification Trail</a></li>
<li><a target="_blank" href="http://claudiolassala.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=amonth%3D1%26ayear%3D2007" title="This blog post will open in a new window.">Studying for VS2005 / .NET 2.0 Certifications</a></li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=15&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/08/08/join-me-in-preparing-for-microsoft-vbnet-certification/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
		<item>
		<title>The Windows USB video class driver</title>
		<link>http://birdsbits.wordpress.com/2007/07/24/the-windows-usb-class-driver/</link>
		<comments>http://birdsbits.wordpress.com/2007/07/24/the-windows-usb-class-driver/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 01:56:46 +0000</pubDate>
		<dc:creator>Bahrom</dc:creator>
				<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Windows Driver Kit]]></category>

		<guid isPermaLink="false">http://birdsbits.wordpress.com/2007/07/24/the-windows-usb-class-driver/</guid>
		<description><![CDATA[In 2003, Microsoft added a standard USB video class (UVC) driver, Usbvideo.sys, to Windows XP as part of SP2. It is also included in all installations of Windows Server 2003 and Vista. This means that if you have a webcam or other video device that has a USB device driver that conforms to the USB video [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=14&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In 2003, Microsoft added a standard USB video class (UVC) driver, <em>Usbvideo.sys,</em> to Windows XP as part of SP2. It is also included in all installations of Windows Server 2003 and Vista. This means that if you have a webcam or other video device that has a USB device driver that conforms to the USB video class specification, you can just plug it into your computer and it will work! No driver installation necessary. Any video device that has the &#8220;Designed for Windows Vista&#8221; logo must have a UVC compliant driver. The really cool thing about the UVC driver is that it is not just provided on Windows, but also on Linux and Mac OS-X, so a video device that complies with this spec will work anywhere!<span id="more-14"></span></p>
<p><strong>Documentation for the Microsoft UVC driver</strong></p>
<p>A description of functions supported by Microsoft&#8217;s UVC driver (from a system administrator&#8217;s perspective). Can be found here: <a target="_blank" href="http://support.microsoft.com/kb/828756">Availability of the USB video class driver for Windows XP</a></p>
<p>An updated driver that allows UVC-compliant cameras to render DV data from the host PC back to the device, and capture MPEG2 TS data from the device to the host PC can be downloaded here: <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A1DECD8D-F955-4767-B372-D30DD6AD3194&amp;displaylang=en">Update for USB Video Class (UVC) driver in Windows XP Home and Professional with Service Pack 2</a></p>
<p>Specifications for USB classes, including UVC, are available on the USB Implementer&#8217;s forum at: <a target="_blank" href="http://www.usb.org/developers/devclass_docs#approved">Approved Class Specification Documents</a></p>
<p>The main programming documentation for the UVC driver is in the online MSDN library under: &#8220;Win32 and COM development &#8211; Windows Driver Kit &#8211; Device and Driver Technologies &#8211; Streaming Media &#8211; Design Guide &#8211; AVStream Minidrivers &#8211; USB Video Class Driver&#8221;. URL: <a target="_blank" href="http://msdn2.microsoft.com/En-US/library/ms803117.aspx">Windows Driver Kit: Streaming Media Devices: USB Video Class Driver</a></p>
<p>(The above documentation is part of the Windows Driver Kit (WDK). This documentation is not included in the Windows SDK docs or in the MSDN Library for VS2005. You can download the documentation for the WDK from this page: <a target="_blank" href="http://www.microsoft.com/whdc/DevTools/WDK/WDKdocs.mspx">Windows Driver Kit (WDK) Documentation</a>)</p>
<p><strong>Programming interfaces for the UVC driver</strong></p>
<p>A Windows application can access the UVC driver via Microsoft DriectShow (<a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms783323.aspx">Microsoft DirectShow 9.0</a>), or via the kernel stream (also known as AVStream) interface, <em>ks.sys</em> (<a target="_blank" href="http://msdn2.microsoft.com/En-US/library/ms803077.aspx">Windows Driver Kit: Streaming Media Devices: Kernel Streaming</a>). Note that the MS UVC driver is a type of AVStream Minidriver. AVStream Minidrivers (<a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms802464.aspx">Windows Driver Kit: Streaming Media Devices : AVStream Overview</a>) conform to the Windows Driver Model (WDM) (<a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa490246.aspx">Windows Driver Kit: Kernel-Mode Driver Architecture: Introduction to WDM),</a> and WDM drivers are kernel mode drivers.</p>
<p><strong>Next Post: Writing an application that uses the Microsoft UVC driver</strong></p>
<p>I would like to write a video capture program for my Logitech web cam with a UVC driver. This camera has a button on the top that allows a user to snap a still picture, so I would like to be able to capture both video as well as still images. In addition, I want to use the bulk transfer USB mode so that my image transfer will be error free. This means I want to use UVC still image transfer method 3.</p>
<p>I was able to use graphedit.exe, one of the tools in the <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa469207.aspx">tools in the Windows driver kit</a>, to connect the camera driver&#8217;s video pin to a video rendering filter and the still pin to another video rendering filter which allowed me to alternately capture video or still images running the filter graph in graphedit- Cool! But, I couldn&#8217;t find any properties on the still pin to tell me which still image capture method was being used.</p>
<p>I used both UVCView.exe and KsStudio.exe provided by the WDK for <a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa906848.aspx">AVStream Testing and Debugging</a> to see if I could determine what still image capture method, or what USB transfer mode was being used, but to no avail. I couldn&#8217;t figure out how to decipher the descriptors reported by UVCView, and I couldn&#8217;t find a property related to still image transfer methods in any of the KsStudio filters that are related to USB video capture.</p>
<p>I don&#8217;t know whether still image transfer mode is a property of the MS UVC that can be set by an application, or is &#8220;hard wired&#8221; in the MS UVC implementation, or is hard wired in the device (the camera&#8217;s) UVC driver implementation. If anyone can shed some light on these questions I would be quite appreciative!</p>
<p>8/7/07 Update:  I&#8217;ve been told that the MS UVC driver will support still image transfer via a bulk pipe, but the firmware in the camera device needs to implement the bulk pipe, it&#8217;s not something that is determined by the application using the UVC driver.</p>
<p>This project to write an app that captures video from the UVC driver is on hold. My priorities have shifted elsewhere for now.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/birdsbits.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/birdsbits.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/birdsbits.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/birdsbits.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/birdsbits.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=birdsbits.wordpress.com&amp;blog=1359850&amp;post=14&amp;subd=birdsbits&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://birdsbits.wordpress.com/2007/07/24/the-windows-usb-class-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833fe95e886649b01bdb5b4851163f75?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bahrom</media:title>
		</media:content>
	</item>
	</channel>
</rss>
