<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://mkdot.net/community/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">The Architect</title><subtitle type="html">Your life is sum of a remainder of unbalanced equation, eventuality of an anomaly, which has led you, here.</subtitle><id>http://mkdot.net/community/mknetug/b/thearchitect/atom.aspx</id><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/default.aspx" /><link rel="self" type="application/atom+xml" href="http://mkdot.net/community/mknetug/b/thearchitect/atom.aspx" /><generator uri="http://telligent.com" version="6.0.119.19092">Telligent Community 6.0.119.19092 (Build: 6.0.119.19092)</generator><updated>2008-02-29T00:33:00Z</updated><entry><title>Workflow Foundation 4.0 - Microsoft Vizija</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2009/10/09/workflow-foundation-4-0-microsoft-vizija.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2009/10/09/workflow-foundation-4-0-microsoft-vizija.aspx</id><published>2009-10-09T04:37:00Z</published><updated>2009-10-09T04:37:00Z</updated><content type="html">&lt;p&gt;These are the materials used on the presentation. I hope i satisfied all attendees with the content of the presentation and the presented demos.&lt;/p&gt;
&lt;p&gt;Presentation: &lt;a target="_blank" title="Workflow foundation 4.0" href="http://mkdot.net/members/Manas/files/Vizija7_2D00_WF4.rar.aspx"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Demos: &lt;a target="_blank" title="Workflow foudnation 4.0 demos" href="http://mkdot.net/members/Manas/files/Demos.rar.aspx"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more information (and help) for WF, do not hesitate to contact me.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=9146&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author><category term="WF 4.0" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/WF+4-0/default.aspx" /><category term="Workflow foundation" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/Workflow+foundation/default.aspx" /></entry><entry><title>What is really an exception handling in C#</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2009/09/09/what-is-really-an-exception-handling-in-c.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2009/09/09/what-is-really-an-exception-handling-in-c.aspx</id><published>2009-09-09T05:17:00Z</published><updated>2009-09-09T05:17:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;The reason of this post is to explain basic concepts of exception handling,&amp;nbsp; and the idea of,  why exception handling in our application. I&amp;#39;ve seen a lot of examples where exception handling is used in very wrong manner. The exception handling is not supposed to be used to control the application flow or the flow of execution, exception is not used in cases of data formatting or data validation, use of generic exception handler blocks is also not a proper way to implement exception handling. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;Exception is an error that occurs at runtime. C# exception handling is managed by four keywords: try, catch, throw, and finally. Some code statements that you want to monitor for exceptions are contained within a try block. If an exception occurs within the try block, it is thrown. We can catch this exception using catch and handle it in some manner. System-generated exceptions are automatically thrown by the runtime system. To manually throw an exception, use the keyword throw. Any code that absolutely must be executed upon exiting from a try block is put in a finally block. When an exception is thrown, it must be caught by some piece of code, somewhere. In general, if our code does not catch an exception, it will be caught by the runtime. The trouble is that the runtime will report an error and terminate the program, which is not nice.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;Couple of rules,&amp;nbsp; nice to know:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;1. Do not use exception handling for controlling the flow:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;wrong&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (GetUser(userID) == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;throw&lt;/span&gt; 
&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;No User&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:small;"&gt;- &lt;b&gt;correct&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (GetUser(userID) == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; 
&lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;span style="font-size:small;"&gt;2. Do not use exception handling for data validation&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;wrong&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;"&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt;&lt;span style="font-size:x-small;"&gt;{ &lt;span style="color:green;"&gt;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt; dt = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Parse(&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.ReadLine()); // And the data is invalid }&lt;br /&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; 
ex) &lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(ex.Message); }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;span style="font-size:small;"&gt;- &lt;b&gt;correct&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt; dt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;(!&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.TryParse(&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.ReadLine(), &lt;span style="color:blue;"&gt;out&lt;/span&gt; dt))&lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Not a valid date.&amp;quot;&lt;/span&gt;); }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;3. Do not use only generic blocks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;- &lt;b&gt;wrong&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;br /&gt;{}&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(ex.Message); }&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;- &lt;b&gt;correct&lt;br /&gt;&lt;/b&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;br /&gt;{}&lt;span style="color:blue;"&gt;&lt;br /&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;ArgumentException&lt;/span&gt; aex)&lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(aex.Message); }&lt;span style="color:blue;"&gt;&lt;br /&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;InvalidCastException&lt;/span&gt; iex)&lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(iex.Message); }&lt;span style="color:blue;"&gt;&lt;br /&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;br /&gt;{ &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(ex.Message); }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:small;"&gt;In addition, to help a bit about last example, here is the list of commonly used exceptions and some explanation for them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;- ArrayTypeMismatchException: Type of value being stored is incompatible with the type of the array.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;- DivideByZeroException: Division by zero attempted&lt;br /&gt;- IndexOutOfRangeException: Array index is out of bounds&lt;br /&gt;- InvalidCastException: A runtime cast is invalid&lt;br /&gt;- OutOfMemoryException: Insufficient free memory exists to continue program execution. For example, this exception will be thrown if there is not sufficient free memory to create an object via new&lt;br /&gt;- OverflowException: An arithmetic overflow occurred&lt;br /&gt;- NullReferenceException: An attempt was made to operate on a null reference&amp;mdash;that is, a reference that does not refer to an object&lt;br /&gt;- StackOverflowException: The stack was overrun&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Remember that throwing exceptions is of high cost, so use 
exceptions to handle unexpected scenarios. Try to handle all kind of exceptions 
for a better logging.&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt; &lt;span style="font-size:small;"&gt;What can be done additionally:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;br /&gt;&lt;br /&gt;- rollback changes done before throwing an 
exception&lt;br /&gt;- &lt;/span&gt;&lt;span style="font-family:verdana,geneva;"&gt;arrange catch blocks to handle most specific to 
least specific exceptions.&lt;/span&gt;&lt;span style="font-family:verdana,geneva;"&gt; &lt;br /&gt;- use Performance counters to understand the impact 
of exceptions on application. &lt;br /&gt;- u&lt;/span&gt;&lt;span style="font-family:verdana,geneva;"&gt;se empty throw when catching and re-throwing an 
exception for preserving call stack pointed to exact error location...&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=8514&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author><category term="catch" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/catch/default.aspx" /><category term="exception handling" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/exception+handling/default.aspx" /><category term="exceptions" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/exceptions/default.aspx" /><category term="finally" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/finally/default.aspx" /><category term="try" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/try/default.aspx" /></entry><entry><title>Lazy Load in LINQ to SQL</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/04/24/lazy-load-in-linq-to-sql.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/04/24/lazy-load-in-linq-to-sql.aspx</id><published>2008-04-23T22:15:00Z</published><updated>2008-04-23T22:15:00Z</updated><content type="html">&lt;h1&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;This is the first post in series regarding LINQ technology and related sub-technologies. &lt;br /&gt;This post will show an example of implementing Lazy load pattern using LINQ to SQL and Visual Studio LINQ Visual Designer.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;LINQ To SQL continues to amaze me at the control we have over the lazy loading and pre-fetch of properties and associations.&lt;br /&gt;If we have several columns in the database that are fairly heavy, like binary and NVARCHAR(MAX) columns, duplicating the data in the rows could be very expensive. So how then can we avoid the performance impact associated with heavy columns? Delay load ( lazy load ) them of course.&lt;br /&gt;&lt;br /&gt;In the example below, I have specified that the Title column (heavy column) be lazy loaded for testing reasons via the Visual Designer:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;vertical-align:top;border-right-width:0px;" alt="Visual Designer in Visual Studio" src="http://mkdot.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/thearchitect/LazyLoadingPropertyLINQToSQ.jpg" height="331" width="434" /&gt;&lt;span style="font-size:x-small;font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;Now the Visual Designer changes the Title Field from a basic string field:&lt;br /&gt;&lt;b&gt;private string _Title;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;to the following decaration which obviously has lazy loading characteristics that we will talk about later:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;b&gt;&lt;span style="font-size:x-small;"&gt;private System.Data.Linq.Link&amp;lt;string&amp;gt; _Title;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;This means the Title property will be lazy loaded, which means it won&amp;#39;t be duplicated above and could really help with performance. Thus, for heavy fields you may want to specify they are always delay loaded. Of course, if we want them to be prefetched, we write the very common code to &lt;b&gt;prefetch Categories and now Title&lt;/b&gt; when we need them:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;using (BlogDataContext context = new BlogDataContext())&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataLoadOptions options = new DataLoadOptions();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.LoadWith&amp;lt;Blog&amp;gt;(c =&amp;gt; c.Categories);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options.LoadWith&amp;lt;Blog&amp;gt;(c =&amp;gt; c.Title);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.LoadOptions = options;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blog blog = context.Blogs.Single&amp;lt;Blog&amp;gt;(c =&amp;gt; c.BlogId == 1);&lt;br /&gt;} &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;font face="Trebuchet MS" size="2"&gt;Can be usefull.&lt;/font&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Original post can be found &lt;a target="_blank" href="http://www.davidhayden.com/blog/dave/archive/2007/08/05/LINQToSQLLazyLoadingPropertiesSpecifyingPreFetchWhenNeededPerformance.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=256&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author></entry><entry><title>Refactoring explained</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/04/22/refactoring-explained.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/04/22/refactoring-explained.aspx</id><published>2008-04-22T06:59:00Z</published><updated>2008-04-22T06:59:00Z</updated><content type="html">&lt;p&gt;&amp;quot;Refactoring is a disciplined technique for restructuring an existing
body of code, altering its internal structure without changing its
external behavior.&amp;quot; &lt;br /&gt;I&amp;#39;ve found this great link about Refactoring.&lt;/p&gt;&lt;p&gt;Check it out:&lt;br /&gt;&lt;a href="http://sourcemaking.com/refactoring/defining-refactoring" title="Refactoring explained" target="_blank"&gt;Refactoring explained&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Additionaly, you can find information about design patterns and anti-patterns.&lt;br /&gt;Very nice to have this site for future reference. &lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=251&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author></entry><entry><title>Software architect and his competencies</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/03/26/software-architect-and-his-competencies.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/03/26/software-architect-and-his-competencies.aspx</id><published>2008-03-26T05:49:00Z</published><updated>2008-03-26T05:49:00Z</updated><content type="html">&lt;i&gt;&amp;quot;The software architect must be well-rounded, posses maturity, vision,
and a depth of experience that allows for grasping issues quickly and
making educated, critical judgment in the absence of complete
information.&amp;quot;&lt;/i&gt;

&lt;p style="margin-bottom:12pt;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Role of the Software Architect &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;The software architect has overall
     responsibility for driving the major technical decisions, expressed as the
     software architecture. This typically includes identifying and documenting
     the architecturally significant aspects of the system, including
     requirements, design, implementation, and deployment &amp;quot;views&amp;quot; of
     the system.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;The architect is also responsible for providing
     rationale for these decisions, balancing the concerns of the various
     stakeholders, driving down technical risks, and ensuring that decisions
     are effectively communicated, validated, and adhered to.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal" style="margin-bottom:12pt;"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family:Tahoma;"&gt;Skills of the Software Architect&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Experience in both the problem domain, through
     a thorough understanding of the requirements, and the software engineering
     domain. The software architect must provide the global vision for the
     project.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Leadership in order to drive the technical
     effort across the various teams, and to make critical decisions under
     pressure and make those decisions stick. To be effective, the software
     architect and the project manager must work closely together, with the
     software architect leading the technical issues and the project manager
     leading the administrative issues. The software architect must have the
     authority to make technical decisions.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Communication to earn trust, to persuade, to
     motivate, and to mentor. The software architect cannot lead by decree,
     only by the consent of the rest of the project. In order to be effective,
     the software architect must earn the respect of the project team, the
     project manager, the customer, and the user community, as well as the
     management team.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Goal-orientation and Pro-activity with a
     relentless focus on results. The software architect is the technical
     driving force behind the project, not a visionary or dreamer. The career
     of a successful software architect is a long series of sub-optimal
     decisions made in uncertainty and under pressure. Only those who can focus
     on doing what needs to be done will be successful.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family:Tahoma;"&gt;Many Hats of the Software Architect&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Visionary – Discovers innovative and novel
     approaches, translating highly-abstract concerns into tangible
     opportunities… and results&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Manager - Coordinates with all stakeholders to
     formulate and communicate a practical blueprint&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Salesman - Sells the ideas and appropriateness
     of the solution&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Developer – Helps develop POC or pilot to
     validate solution, patterns, practices, and principles&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Leader - Shepherd&amp;#39;s from ambiguous and abstract
     to concrete and practical&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Coach – Mentors and coaches others on effective
     application of industry best practices&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Governor – Helps to establish architectural
     standards and guidelines&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal" style="margin-left:36pt;"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:12pt;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Responsibilities of the Software Architect&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Abstracts the complexity of a system into
     manageable models that describes the essence of a system by exposing
     important details and significant constraints.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Creates and communicates tailored views of the
     software architecture to appropriate stakeholders at appropriate
     intervals.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Provides leadership on critical decisions that
     designate a specific direction for a system in terms of implementation,
     operations, and maintenance. These decisions usually result in tradeoffs
     that define key characteristics of the solution, and they must be well
     documented and easily understood.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Establishes quantifiable objectives that
     encapsulate quality attributes based upon which the fitness of the
     architecture is measured.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Proactively leads the implementation during all
     iterations and monitors the adherence of the implementation to the chosen
     architecture.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Collaborates with the Project Manager and other
     key disciplines to prioritize use cases and organize work to drive down
     risk and encourage strong project control structures.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;For quick reference, here&amp;#39;s a
summary…&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Communication&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Understand stakeholder needs&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Ensure the stakeholder&amp;#39;s understand the
     capabilities and limitations of the architecture&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Gain consensus on approach through diplomacy,
     compromise, and mediation&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Business
Orientation&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Understanding the business/domain &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Be aware of financial implications, including
     costs vs. benefits&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Discover opportunities to make trade-offs that
     maximize value to the customer&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Technical
Orientation&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Quickly grasp the ins-and-outs of the technical
     and functional domains&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Work with the development teams to make sure
     the target is met&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Don&amp;#39;t gloss over the details - but don&amp;#39;t get
     buried&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Assume accountability for product delivery&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Manage scope&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Provide technical expertise &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Leadership&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Think in the abstract - cut through the clutter
     and quickly arrive at viable solutions.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Know when to stay in the abstract and when to
     go deep&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Engage the teams and build passion for the
     vision&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Demonstrate commitment to continuous
     improvement - for self and team&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Be open minded, innovative, and creative&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Delegate&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Judgment&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Harvest patterns and relationship out of detail
     and build meaningful models and abstraction&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Make good decisions&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;Focus on the right things&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Tahoma;"&gt;&amp;nbsp;&lt;/span&gt;&lt;font face="tahoma,arial,helvetica,sans-serif" size="2"&gt;You may also like to have a look at the competencies that are required by the &lt;a href="http://www.microsoft.com/learning/mcp/architect/archcompetencies/default.mspx#EJG"&gt;Microsoft Certified Architect&lt;/a&gt; (MCA) program.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=100&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author><category term="Software architect" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/Software+architect/default.aspx" /><category term="Software architecture" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/Software+architecture/default.aspx" /></entry><entry><title>How to become Microsoft Evangelist</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/03/19/how-to-become-microsoft-evangelist.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/03/19/how-to-become-microsoft-evangelist.aspx</id><published>2008-03-19T11:29:05Z</published><updated>2008-03-19T11:29:05Z</updated><content type="html">&lt;p&gt;I was wondering for quite some time, what needs to become Microsoft evangelist and who will give me that “title”… is there are exam to pass… what has to be done… work for Microsoft… give feedback to the community…organize events… What? &lt;p&gt;Some notes from the research I made: &lt;p&gt;* Presenting/Training .NET development topics&lt;br /&gt;* Working with User Groups to ensure they get adequate support from Microsoft&lt;br /&gt;* Writing sample code&lt;br /&gt;* Working with local influential’s such as MVPs and RD&lt;br /&gt;* Organizing and managing local developer events, conferences&lt;br /&gt;&lt;br /&gt;&lt;em&gt;(the most important)&lt;/em&gt;&lt;br /&gt;* Microsoft employee ???&lt;/p&gt;If you have more information on this....let&amp;#39;s talk about it &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=72&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author><category term="Evangelist" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/Evangelist/default.aspx" /><category term="Microsoft" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/Microsoft/default.aspx" /></entry><entry><title>MVC Pattern in practice</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/02/29/mvc-pattern-in-practice.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/02/29/mvc-pattern-in-practice.aspx</id><published>2008-02-29T08:01:00Z</published><updated>2008-02-29T08:01:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Calibri" size="2"&gt;The idea for this post was a question from my colleague, from yesterday, when I was presenting the architecture of the solution for their project: What is the difference between code implementation in code behind, why putting the code in the controller class, why it is not in the business layer?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Calibri"&gt;&lt;font size="2"&gt;The answer to this question is simple, MVC pattern: &lt;font color="#ff0000"&gt;model - view - controller&lt;/font&gt;.&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Calibri" size="2"&gt;Little explanation on this:&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;&lt;br /&gt;&lt;font face="Calibri" size="2"&gt;View&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;font face="Calibri" size="2"&gt; is the graphical data presentation (outputting) irrespective of the real data processing. View is the responsible for look and feel, some custom formatting, sorting etc. View is completely isolated from actual complex data operations.&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;font face="Calibri" color="#ff0000" size="2"&gt;Model&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;font face="Calibri" size="2"&gt; is responsible for actual data processing, like database connection, querying database, implementing business rules etc. It feeds data to the view without worrying about the actual formatting and look and feel.&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="Calibri"&gt;&lt;font color="#ff0000"&gt;Controller&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;font face="Calibri" size="2"&gt;is responsible for Notice of action. Controller responds to the mouse or keyboard input to command model and view to change. Controllers are associated with views.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Calibri" size="2"&gt;Some benefits:&lt;br /&gt;- &lt;/font&gt;&lt;font face="Calibri" size="2"&gt;Since the Model is completely decoupled from view it allows lot of flexibility to design and implement the model considering reusability and modularity&lt;br /&gt;- It is possible to have development process in parallel for model, view and controller&lt;br /&gt;- This makes the application extensible and scalable&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Calibri" size="2"&gt;My comments on this issue: there must be a clear and obvious separation of responsibilities, code-behind is view code, never controller/presenter. If you place controller responsibility into the code-behind, good luck with testing. Your lack of cohesion goes up, tight-coupling goes up, extensibility drops and testability drops.&lt;br /&gt;I was trying to explain this, but like always...&amp;quot;&lt;em&gt;please show us code, if you want us to understand.... &lt;/em&gt;&amp;quot; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Calibri" size="2"&gt;Regular code in their application looks like this: (the code should check if the current product exists in the order, and read all business rules for that product: discount depending on ordered quantity, delivery period for the order depending on the value of the order...)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#8080ff"&gt;&lt;font face="Calibri" size="2"&gt;protected void btnAddProduct_Click(object sender, EventArgs&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt; e)&lt;br /&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Product pr in productList)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pr.ProductId == selectedProduct)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// Add quantity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pr.Quantity +=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// Apply discount rule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if pr.Quantity &amp;gt;2 then pr.Discount=5; if prQuantity &amp;gt; 5 then pr.Discount=10&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#8080ff"&gt;&lt;font face="Calibri" size="2"&gt;// Apply order delivery date rule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if order.Amount &amp;gt; 1000$ then order.DeliveryDate = order.StartDate + 3 days&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="2"&gt;Very bad thing to do....&lt;br /&gt;&lt;br /&gt;Instead of this, try to transfer your code in the controller class, let her communicate with all business rules, and with the data access.&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;public&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt; static void CheckProduct(Product currentProduct)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckProduct(currentProduct);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetOrderDelivery();&lt;br /&gt;} &lt;/font&gt; &lt;p&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;private void CheckProduct(Product pr)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// CheckProduct existance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// Call Product Business logic &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// ProductBL.SetDiscount(pr)&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;private void SetOrderDelivery()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// Calculate order amount&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;// Call Order Business logic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Calibri"&gt;&lt;font color="#8080ff"&gt;// OrderBL.SetDeliveryDate(currentOrder)&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;... finally, call the public method from code-behind:&lt;br /&gt;&lt;br /&gt;find appropriate place in your code-behind for creating an instance of the controller...&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#2b91af"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;OrderProcessControler&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt; opc = new OrderProcessControler();&lt;br /&gt;&lt;br /&gt;...and use it in your event handlers &lt;/font&gt; &lt;p&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;protected void btnAddProduct_Click(object sender, EventArgs&lt;/font&gt;&lt;font color="#8080ff"&gt;&lt;font face="Calibri" size="2"&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; opc.&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri" color="#8080ff" size="2"&gt;CheckProduct(selectedProduct);&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Calibri"&gt;&lt;font color="#8080ff"&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: The controller methods must be placed in different project (class library) for easier scalability of the solution.&lt;br /&gt;Those methods can be modified at any time, deployed separately from the presentation logic.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=35&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author><category term="mvc" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/mvc/default.aspx" /><category term="patterns" scheme="http://mkdot.net/community/mknetug/b/thearchitect/archive/tags/patterns/default.aspx" /></entry><entry><title>Hello World!!! :)</title><link rel="alternate" type="text/html" href="http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/02/29/hello-world.aspx" /><id>http://mkdot.net/community/mknetug/b/thearchitect/archive/2008/02/29/hello-world.aspx</id><published>2008-02-29T06:33:00Z</published><updated>2008-02-29T06:33:00Z</updated><content type="html">&lt;p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;As for the beginning of this blog, let me introduce myself. My name is Manas and I work as Solution designer for more than 2 years. I have 9 years of programming experience developing web, windows and mobile applications using .NET technologies.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;The main reason for creating this blog is to share the knowledge with all of you, about the options that this technology offers in terms of defining solution architecture, by using design patterns, frameworks, different technologies and other useful practices.&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;I will try to point some things that &lt;/span&gt;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;should be especially valuable for those &lt;b&gt;architects&lt;/b&gt;, &lt;b&gt;designers&lt;/b&gt;, and &lt;b&gt;developers&lt;/b&gt; who are new to enterprise development in Microsoft environments; this includes both those used to designing and building smaller-sized applications, and those used to design and build enterprise-class applications, web or desktop. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;What are the topics that I will be writing on...?&lt;br /&gt;Enterprise architecture, patterns, enterprise application integration, ESB, SOA, OOP, software architecture, architecture frameworks, design principles, requirements analysis and software estimations… don’t forget UML, NET 3.5 stuff, like: LINQ, WWF, WCF, WPF…&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;span style="FONT-SIZE:12px;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Ok… enough for now…stay cool…&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mkdot.net/community/aggbug.aspx?PostID=31&amp;AppID=26&amp;AppType=1&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Manas</name><uri>http://mkdot.net/community/members/Manas/default.aspx</uri></author></entry></feed>