<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Architecture</title>
        <link>http://geekswithblogs.net/joycsharp/category/5020.aspx</link>
        <description>Software Architecture, Design etc. Specifically deals with multi-layer architecture, business entity, logical layers, framework (DNN, ASP.NET), object model etc.</description>
        <language>en-US</language>
        <copyright>Mohammad Ashraful Alam</copyright>
        <managingEditor>joy_csharp@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>ASP.NET Role Based Security: The Basics</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2008/02/18/asp.net-role-based-security-the-basics.aspx</link>
            <description>&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;Authentication and authorization is the two basic part of the user-end security in asp.net web applications. After to successful authentication of a user, authorization takes the place according to which the authenticated user are allowed to access to the corresponding resources in the web application.&lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;Role based security is very basic requirements in the current trend of web applications. Mostly there are two roles involved, which are registered user and the admin users. However in a web application a user can have multiple roles which can be authorized on page and page control level. Today we'll check a basic sample which includes page based authorizations for specific roles.&lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;To implement the basic role based security, there are three points to be considered. In this example we are considering two different roles "member" and "admin". There are two separate folders named "member", which can be accessed by any logged in user, including admin users and "admin", where only the user who contains the "admin" role can access the child resources (page, images etc).&lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;1. Defining the authorization regions in web.config&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;The following xml tags are required to be added under the "configuration" node of the web.config.&lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;Defining security authorization for "member" users&lt;/font&gt;&lt;/p&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;font face="ver" size="2"&gt;  &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;location &lt;/span&gt;&lt;span style="COLOR: red"&gt;path&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;member&lt;/span&gt;"&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;system.web&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;authorization&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;deny &lt;/span&gt;&lt;span style="COLOR: red"&gt;users&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;?&lt;/span&gt;"&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;authorization&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;system.web&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;location&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="ver" size="2"&gt;&amp;gt;
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;Defining security authorization for "admin" users&lt;/font&gt;&lt;/p&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;font face="ver" size="2"&gt;  &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;location &lt;/span&gt;&lt;span style="COLOR: red"&gt;path&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;admin&lt;/span&gt;"&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;system.web&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;authorization&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;allow &lt;/span&gt;&lt;span style="COLOR: red"&gt;roles&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;admin&lt;/span&gt;"&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;deny &lt;/span&gt;&lt;span style="COLOR: red"&gt;users&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;*&lt;/span&gt;"&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;authorization&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;system.web&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;location&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="ver" size="2"&gt;&amp;gt;
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;2. Authenticating the user&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;After the successful authentication, the following codes are required to establish the form based authentication for the corresponding user.&lt;/font&gt;&lt;/p&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;&lt;span style="COLOR: green"&gt;//Authenticating the user Identity. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;System.Web.Security.&lt;span style="COLOR: teal"&gt;FormsAuthentication&lt;/span&gt;.RedirectFromLoginPage&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;font face="ver"&gt;(&lt;span style="COLOR: maroon"&gt;"member1"&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.CheckBox1.Checked);&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;3. Implementing the role based security&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;font face="ver" size="2"&gt;The "Application_AuthenticateRequest" event which was defined in the "Global.asax" file, will include the appropriate codes regarding the role info of the logged in user, which will be accesses each time for any web request in this web application. This can be done in either "cache" or "cookie" mechanism.&lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;u&gt;Cache based mechanism&lt;/u&gt;&lt;/p&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Application_AuthenticateRequest(&lt;span style="COLOR: teal"&gt;Object&lt;/span&gt; sender, &lt;span style="COLOR: teal"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.IsAuthenticated)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.AuthenticationType != &lt;span style="COLOR: maroon"&gt;"Forms"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Exception&lt;/span&gt;(&lt;span style="COLOR: maroon"&gt;"Only forms authentication is supported, not "&lt;/span&gt; +&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        &lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.AuthenticationType);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                System.Security.Principal.&lt;span style="COLOR: teal"&gt;IIdentity&lt;/span&gt; userId = &lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: green"&gt;//if role info is already NOT loaded into cache, put the role info in cache&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (System.Web.&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.Cache[userId.Name] == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] roles;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (userId.Name == &lt;span style="COLOR: maroon"&gt;"admin1"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"admin"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (userId.Name == &lt;span style="COLOR: maroon"&gt;"member1"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"member"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"public"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database                   &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;//1 hour sliding expiring time. Adding the roles in chache. This will be used in Application_AuthenticateRequest event located in Global.ascx.cs file to attach user Principal object.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    System.Web.&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.Cache.Add(userId.Name, roles, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.MaxValue, &lt;span style="COLOR: teal"&gt;TimeSpan&lt;/span&gt;.FromHours(1), System.Web.Caching.&lt;span style="COLOR: teal"&gt;CacheItemPriority&lt;/span&gt;.BelowNormal, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: green"&gt;//now assign the user role in the current security context&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.Security.Principal.&lt;span style="COLOR: teal"&gt;GenericPrincipal&lt;/span&gt;(userId, (&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[])System.Web.&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.Cache[userId.Name]);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;u&gt;Cookie based mechanism&lt;/u&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; 
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Application_AuthenticateRequest(&lt;span style="COLOR: teal"&gt;Object&lt;/span&gt; sender, &lt;span style="COLOR: teal"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (Request.IsAuthenticated == &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.AuthenticationType != &lt;span style="COLOR: maroon"&gt;"Forms"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Exception&lt;/span&gt;(&lt;span style="COLOR: maroon"&gt;"Only forms authentication is supported, not "&lt;/span&gt; +&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        &lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.AuthenticationType);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: green"&gt;//Create/Retrieve cookie and initizalyze the role info in the current security context&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; userInformation = &lt;span style="COLOR: teal"&gt;String&lt;/span&gt;.Empty;&lt;span style="COLOR: green"&gt;//where the cookie info will be placed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] roles;&lt;span style="COLOR: green"&gt;//where the user role will be placed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: green"&gt;// Create the roles cookie if it doesn't exist yet for this session.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; ((Request.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;] == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;) || (Request.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;].Value == &lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.Name == &lt;span style="COLOR: maroon"&gt;"admin1"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"admin"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;HttpContext&lt;/span&gt;.Current.User.Identity.Name == &lt;span style="COLOR: maroon"&gt;"member1"&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"member"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { &lt;span style="COLOR: maroon"&gt;"public"&lt;/span&gt; };&lt;span style="COLOR: green"&gt;//this info will be generally collected from database                   &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;// Create a string to persist the role and user id&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    userInformation = roles[0] + &lt;span style="COLOR: maroon"&gt;";"&lt;/span&gt; + Context.User.Identity.Name;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;// Create a cookie authentication ticket.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: teal"&gt;FormsAuthenticationTicket&lt;/span&gt; ticket = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;FormsAuthenticationTicket&lt;/span&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        1,                              &lt;span style="COLOR: green"&gt;// version&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        User.Identity.Name,             &lt;span style="COLOR: green"&gt;// user name&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now,                   &lt;span style="COLOR: green"&gt;// issue time&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.AddHours(1),       &lt;span style="COLOR: green"&gt;// expires every hour&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;,                          &lt;span style="COLOR: green"&gt;// don't persist cookie&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        userInformation&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                        );&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;// Encrypt the ticket&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: teal"&gt;String&lt;/span&gt; cookieStr = &lt;span style="COLOR: teal"&gt;FormsAuthentication&lt;/span&gt;.Encrypt(ticket);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;// Send the cookie to the client&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    Response.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;].Value = cookieStr;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    Response.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;].Path = &lt;span style="COLOR: maroon"&gt;"/"&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    Response.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;].Expires = &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.AddMinutes(1);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                }&lt;span style="COLOR: green"&gt;//if role cookie not found in local pc&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;span style="COLOR: green"&gt;//we are getting the role info from cookie&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;// Get roles from roles cookie&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: teal"&gt;FormsAuthenticationTicket&lt;/span&gt; ticket = &lt;span style="COLOR: teal"&gt;FormsAuthentication&lt;/span&gt;.Decrypt(Context.Request.Cookies[&lt;span style="COLOR: maroon"&gt;"cnstUserRole"&lt;/span&gt;].Value);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    userInformation = ticket.UserData;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: green"&gt;//info[0] contains the single role and info[1] contains the user name&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] cookieInfo = userInformation.Split(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;char&lt;/span&gt;[] { &lt;span style="COLOR: maroon"&gt;';'&lt;/span&gt; });&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                    roles = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[1] { cookieInfo[0] };&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: green"&gt;//now assign the user role in the current security context&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;                Context.User = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.Security.Principal.&lt;span style="COLOR: teal"&gt;GenericPrincipal&lt;/span&gt;(Context.User.Identity, roles);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            }&lt;span style="COLOR: green"&gt;//if (Request.IsAuthenticated == true) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;&lt;font face="ver" size="2"&gt;Download source code: &lt;/font&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;iframe style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 26px; BACKGROUND-COLOR: #ffffff" marginwidth="0" marginheight="0" src="http://cid-907464dabda55b30.skydrive.live.com/embedrow.aspx/Community/role-based-security-with-caching.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;iframe style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 26px; BACKGROUND-COLOR: #ffffff" marginwidth="0" marginheight="0" src="http://cid-907464dabda55b30.skydrive.live.com/embedrow.aspx/Community/role-based-security-with-cookie.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6a1653e8-6e74-4a49-bb68-4185dbf740fc" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/asp.net"&gt;asp.net&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/security"&gt;security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/programming"&gt;programming&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/coding"&gt;coding&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C#"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/.net"&gt;.net&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119718"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119718" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/119718.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2008/02/18/asp.net-role-based-security-the-basics.aspx</guid>
            <pubDate>Mon, 18 Feb 2008 10:31:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/119718.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2008/02/18/asp.net-role-based-security-the-basics.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/119718.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/119718.aspx</trackback:ping>
        </item>
        <item>
            <title>Software Design Tradeoff Factors</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2008/02/06/software-design-tradeoff-factors.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/joycsharp/WindowsLiveWriter/SoftwareDesignTradeoffFactors_FC7B/3ad3Ja6F62Zw8EhNBX_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="3ad3Ja6F62Zw8EhNBX" src="http://geekswithblogs.net/images/geekswithblogs_net/joycsharp/WindowsLiveWriter/SoftwareDesignTradeoffFactors_FC7B/3ad3Ja6F62Zw8EhNBX_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;In perfect world you can get all of the best things in one place. But in real world it’s not. In software development there are some basic trade-offs when you consider a specific design feature. Exploring these considerations will help you to create the architecture that matches best with the given context.&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="ver" size="2"&gt;Performance&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Security (code level, encryption etc) VS Performance (code level)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Caching: Memory VS Performance&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Object Oriented/Layered Code VS Performance&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Scalability VS Deployment (n-tier)&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="ver" size="2"&gt;User Experience&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;u&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;Usability&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Security (user level) VS Usability (user level)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Usability (user level) VS Functionality (user level)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Robustness (user level) VS Usability (user level)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;Rich User Experience&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;AJAX VS Browser Compatibly Issue&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Rich Function (FAT Client) VS Poor Function (Thin Client)&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="ver" size="2"&gt;Developer Experience&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;Development Time&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Analysis and Design Time VS Development Time&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Object Oriented Programming VS Development Time&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Quality Assurance and Control VS Time&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Well Engineering VS Modification/Change/Reuse (Understandability) Time&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;System Data Reliability (back up) VS Maintenance Time &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="ver" size="2"&gt;Development Structure&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Readability (code level) VS Writability (code level)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Reliability (code level) VS Flexibility (code level)&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="ver" size="2"&gt;Developer Improvement&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Own Study VS External Resources&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="ver" size="2"&gt;Latest/New Practices VS Learning Time (PHP VS .NET etc)&lt;/font&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c1966073-72d6-4126-a004-5b1e9105640c" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/design" rel="tag"&gt;design&lt;/a&gt;,&lt;a href="http://technorati.com/tags/coding" rel="tag"&gt;coding&lt;/a&gt;,&lt;a href="http://technorati.com/tags/software%20development" rel="tag"&gt;software development&lt;/a&gt;,&lt;a href="http://technorati.com/tags/concepts" rel="tag"&gt;concepts&lt;/a&gt;&lt;/div&gt; &lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2008%2f02%2f06%2fsoftware-design-tradeoff-factors.aspx"&gt;&lt;font face="ver" size="2"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2008%2f02%2f06%2fsoftware-design-tradeoff-factors.aspx" border="0" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119324"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119324" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/119324.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2008/02/06/software-design-tradeoff-factors.aspx</guid>
            <pubDate>Wed, 06 Feb 2008 12:01:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/119324.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2008/02/06/software-design-tradeoff-factors.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/119324.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/119324.aspx</trackback:ping>
        </item>
        <item>
            <title>The .NET Framework 3.5 At a Glance</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2008/01/10/the-.net-framework-3.5-at-a-glance.aspx</link>
            <description>&lt;p&gt;All .NETTERS! Download the pdf poster &lt;a target="_blank" href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_LORES.pdf"&gt;here&lt;/a&gt; by which you can see .net 3.5 at a glance!&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.msdn.com/pandrew/archive/2007/11/02/announcing-the-net-framework-3-5-commonly-used-types-and-namespaces-poster.aspx"&gt;&lt;img alt="" src="http://blogs.msdn.com/blogfiles/pandrew/110207_2058_AnnouncingT1.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Check &lt;a target="_blank" href="http://blogs.msdn.com/pandrew/archive/2007/11/02/announcing-the-net-framework-3-5-commonly-used-types-and-namespaces-poster.aspx"&gt;Paul&lt;/a&gt;'s blog for a quick note!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118429"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118429" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/118429.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2008/01/10/the-.net-framework-3.5-at-a-glance.aspx</guid>
            <pubDate>Thu, 10 Jan 2008 06:46:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/118429.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2008/01/10/the-.net-framework-3.5-at-a-glance.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/118429.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/118429.aspx</trackback:ping>
        </item>
        <item>
            <title>Creating a Performance Benchmark Framework for Your .NET Codes</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2007/11/22/117042.aspx</link>
            <description>&lt;p&gt;&lt;font face="ve"&gt;Performance is a one of the basic requirements in the most of the current trend of web applications. While designing software architecture, there are several technologies kept available for the designers. Among these available options, some of techniques may includes multiple solutions, combining of those can create a case, where the basic performance output can't be determined based on the common sense and/or in depth knowledge on the corresponding topics. In short, based upon different options the software architect needs to determine the appropriate object model which fits best with the current application requirement.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="ve" size="3"&gt;The Object Model&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="ve"&gt;There are three layers of our test framework object model, as follows:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="ve"&gt;&lt;strong&gt;The Program Class:&lt;/strong&gt; This is the starter class, which creates the requires instances to start the test operation. The corresponding caller method initializes the Runner class along with the number of iterations to be performed for each test case.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="ve"&gt;&lt;strong&gt;The Runner Class:&lt;/strong&gt; The runner class includes one or multiple methods, which calls a bunch of methods of executor class, each of which contains required functionalities to call the test cases appropriately. &lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;font face="ve"&gt;&lt;strong&gt;The Runner Base Class:&lt;/strong&gt; One important issue with respect to the runner class is, we need to have a way to keep track to execution time for each run and finally we need to determine the average execution time. For this purpose, to perform required initialization and support common reporting feature of test cases, we considered a base class, which includes all tracking data to isolate individual test cases and reporting functionalities. We have used C# delegate to have a very structured and reusable object model regarding this common functionalities. The methods of the inherited class uses this features accordingly. &lt;/font&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="ve"&gt;&lt;strong&gt;The Executor Class:&lt;/strong&gt; The executor class contains the very basic codes with respect to a particular test case. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/joycsharp/WindowsLiveWriter/CreatingaPerformanceBenchmarkFr.NETCodes_D16E/ClassDiagram_4.png"&gt;&lt;font face="ve"&gt;&lt;img height="480" alt="ClassDiagram" width="515" src="http://geekswithblogs.net/images/geekswithblogs_net/joycsharp/WindowsLiveWriter/CreatingaPerformanceBenchmarkFr.NETCodes_D16E/ClassDiagram_thumb_1.png" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="ve" size="3"&gt;&lt;strong&gt;The Sample Codes&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="ve" size="2"&gt;&lt;strong&gt;The  Program Class&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Program&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] args)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Test starts: "&lt;/span&gt; + &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: green"&gt;//----------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;SampleRunner&lt;/span&gt; s1 = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleRunner&lt;/span&gt;(10);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            s1.RunBenchmarks();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: green"&gt;//----------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Test ends: "&lt;/span&gt; + &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.ToString());&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Console&lt;/span&gt;.ReadLine();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    }&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="ve" size="2"&gt;&lt;strong&gt;The Runner Base Class&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleRunnerBase&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;delegate&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="COLOR: teal"&gt;DoWork&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; text);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;long&lt;/span&gt; _Start;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;long&lt;/span&gt; _Stop;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; _Total = 0;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; _TotalSecs;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; _TotalAvgSecs;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; _Repeats;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; _RepeatsToDo; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SampleRunnerBase(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; repeats)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _RepeatsToDo = repeats;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Init()&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _Total = 0;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _TotalSecs = 0;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _TotalAvgSecs = 0;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _Repeats = _RepeatsToDo;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ReportResults()&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _TotalSecs = _Total / 10000000;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            _TotalAvgSecs = _Total / 10000000 / _RepeatsToDo;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Avg: "&lt;/span&gt; + _TotalAvgSecs + &lt;span style="COLOR: maroon"&gt;" s"&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RunBenchmark(&lt;span style="COLOR: teal"&gt;DoWork&lt;/span&gt; func, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; text)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;null&lt;/span&gt; != func)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                Init();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                &lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (_Repeats-- &amp;gt; 0)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                    _Start = &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.Ticks;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                    func(text);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                    _Stop = &lt;span style="COLOR: teal"&gt;DateTime&lt;/span&gt;.Now.Ticks;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                    _Total += _Stop - _Start;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;                ReportResults();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    }&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="ve" size="2"&gt;&lt;strong&gt;The Runner Class&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;sealed&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleRunner&lt;/span&gt; : &lt;span style="COLOR: teal"&gt;SampleRunnerBase&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; SampleRunner(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; repeats)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            : &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(repeats)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RunBenchmarks()&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Running Simple Sample Benchmark"&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"--------------------------------"&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            RunSample1();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            RunSample2();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RunSample1()&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Running Sample 1"&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;SampleExecutor&lt;/span&gt; runner = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleExecutor&lt;/span&gt;();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            RunBenchmark(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;DoWork&lt;/span&gt; (runner.DoSample1), &lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; RunSample2()&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;Output&lt;/span&gt;.WriteLine(&lt;span style="COLOR: maroon"&gt;"Running Sample 2"&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: teal"&gt;SampleExecutor&lt;/span&gt; runner = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleExecutor&lt;/span&gt;();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            RunBenchmark(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;DoWork&lt;/span&gt;(runner.DoSample2), &lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    }&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;font face="ve" size="2"&gt;The Executor Class&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;SampleExecutor&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DoSample1(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; text)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: green"&gt;//do something&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; DoSample2(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; text)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        {&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;            &lt;span style="COLOR: green"&gt;//do something&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;        }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;&lt;font face="ve"&gt;    }&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font face="ve"&gt; Download source code: &lt;/font&gt;&lt;iframe style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginwidth="0" marginheight="0" src="http://cid-907464dabda55b30.skydrive.live.com/embedrowdetail.aspx/Community/performance-framework.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6a2344da-89be-44f9-939b-36333a38defd" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Performance"&gt;Performance&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/.net"&gt;.net&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/C#"&gt;C#&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Testing"&gt;Testing&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Framework"&gt;Framework&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Benchmark"&gt;Benchmark&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2007%2f11%2f22%2f117042.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fgeekswithblogs.net%2fjoycsharp%2farchive%2f2007%2f11%2f22%2f117042.aspx" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117042"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117042" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/117042.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2007/11/22/117042.aspx</guid>
            <pubDate>Thu, 22 Nov 2007 10:32:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/117042.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2007/11/22/117042.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/117042.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/117042.aspx</trackback:ping>
        </item>
        <item>
            <title>Object Oriented Tagging : Adding Power to Web 2.0 Tags!</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/12/09/100695.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;img src="http://static.flickr.com/43/103383461_0c3a8cbff3_m_d.jpg"&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;One of the basic consideration in web 2.0 concept is 'tagging' where any contents in the web can be&amp;nbsp;associated with one or more tags, which can be shared among social community network.&amp;nbsp;It lets others&amp;nbsp;to find any content&amp;nbsp;according to their chosen tag. Tag is nothing, but a way to categorize any web content. In real world, any visitor can quickly reach to a&amp;nbsp;content thru it's associated tags, can thus get a basic idea about whether s/he will consider it to read/download etc. "Search" is older concept to help users to find any desired content, but "Tags" provides users to have an open track to find his own choice which has not been discovered yet!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I am really a tag lover. All of the Web 2.0 sites&amp;nbsp;I am using, I am associating web contents with tags, which helps me to properly organize and structure those. Well, the real world is not bed of&amp;nbsp;roses, so I started to get confused, as soon as my contents get larger. For example, &lt;/font&gt;&lt;a href="http://del.icio.us"&gt;&lt;font face="Verdana" size="2"&gt;http://del.icio.us&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;is one of my very favorite site, which is a award winning web 2.0 site, dedicated for bookmarking urls. Using browser buttons of &lt;/font&gt;&lt;a href="http://del.icio.us"&gt;&lt;font face="Verdana" size="2"&gt;http://del.icio.us&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;,&amp;nbsp;I can quickly&amp;nbsp;bookmark any web page that&amp;nbsp;I was just visiting into my &lt;/font&gt;&lt;a href="http://del.icio.us"&gt;&lt;font face="Verdana" size="2"&gt;http://del.icio.us&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;account, with the URL,&amp;nbsp;title, comment, as well as&amp;nbsp;associate appropriate tags,&amp;nbsp;which I have been defined previously in my account settings. From the beginning it really helped me to keep track of my web studies.&amp;nbsp;So life got easier, it's matter of few seconds for me to find any site of a specific category, that I have been visited and found useful.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;The Real World&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Unfortunately, I am really a nerd reader :P So with in few months, number of my bookmarks crossed couple of hundreds. It&amp;nbsp;turns to a bit problem to me, to find any URL through tag/category, as&amp;nbsp;some of tags already have over hundreds of urls. More over, there are few tags, with similar or nearer meaning&amp;nbsp;(for example: software-development, .NET, C#), and while searching, I didn't get sure that, in which tag, I have been associated the content, that I am just searching for! &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;So I started to feel that, I need to organize my tags in more intelligent way, so that for a long term period, all of my contents can be grouped together and found in much quicker time. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the coming days, tags are getting more important place over the web, so we need to have some good concept and convention while tagging! Well, the popularity of tags&amp;nbsp;lies&amp;nbsp;due to its simplicity,&amp;nbsp;so&amp;nbsp;it will be used by the web users in very quick but un-structured way in the maximum time.&amp;nbsp;That's great tho, you are free to choose your tags, but for important contents, "Intelligent" tags will really save lots of our time and effort!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Intelligent? Huh! Tags will be intelligent?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Well, tags can't be intelligent, it's true, but the fact is it can be designed and considered in intelligent way! &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Object Oriented Tagging&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Object Oriented concept has achieved a great deal of popularity among software developers in previous 2 decades. According to this concept, all real world entities, regarding a given context (or software requirements) are classified into separate areas and utilize each other as needed. One of the basic principal of Object Oriented technology is "Inheritance", where new classes can be inherited from super or base classes, that includes&amp;nbsp;properties of&amp;nbsp;it's parent class. This design idea facilitates the management of software architecture and codes very effectively, specially for large scale software.&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;When we have large number of contents (for example: URL, image etc), the associated tags can utilized in according to the concept of "Inheritance" to manage all contents properly.&amp;nbsp;Here tags should be structured like the "Tree" data structure (root node, parent node, child node, siblings node etc)! For example, we have a base tag "Software Development", clicking on which will result all the contents related to software development. Now consider another tag, named ".NET", which is a sub tag or sub category of "Software Development" tag. Clicking on the tag ".NET" should list the result related to ".NET", which will include a sub portion of "Software Development" tag. Clicking on the tag "Software Development" will considers the contents all the sub tags of "Software Development", including ".NET" tag contents.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;It would be great, if&amp;nbsp;users&amp;nbsp;can define&amp;nbsp;the tree structure of the "Tag Inheritance" tree structure through the web application and thus create the life easy while putting the tags for a content, as well as searching contents through tags will work in much meaningful and faster way. If we have a built-in support for defining tag tree structure, it would take only one "Tag" defining a content in .NET, along with relating the content with "Software Development" tag category. Otherwise both tags "Software Development" and ".NET"&amp;nbsp;needs to be considered with independent (and meaningless) relation among these two tags.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;A Sample Structure&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;To understand the problem in deeper sense, lets go with more complicated example. Consider the following tag structure.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#808040"&gt;&lt;strong&gt;{Software Development}&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;&lt;strong&gt;{Microsoft}&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;________________|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |__________________________&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; &amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font size="1"&gt;&lt;font face="Verdana"&gt;{...}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff0000"&gt;{&lt;/font&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;.NET}&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {...}&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#800080"&gt;&lt;strong&gt;{ASP.NET}&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&amp;nbsp;&lt;strong&gt;{C#}&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the given example, all ASP.NET and C# contents are in sub tag of .NET. But an ASP.NET content might not related to C#, can be VB.NET or other stuffs and vice versa. So they lies in the same layer. In this context, considering ".NET" tag, it includes all tags related to "ASP.NET" and "C#" tag, but "ASP.NET" tag contents&amp;nbsp;don't include&amp;nbsp;"C#" tag contents.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Also, .NET can be a sub category of "Software Development", as this is a software development framework. But "Software Development" tag&amp;nbsp;might have other issues,&amp;nbsp;which are not related to .NET. As well as, .NET can be a sub category of "Microsoft", as this is a&amp;nbsp;development framework by Microsoft. But "Microsoft" tag might have other issues,&amp;nbsp;which are not related to .NET. So considering the tag "Software Development" or "Microsoft" guarantees to get the content of&amp;nbsp;ALL of their sub category contents (.NET, ASP.NET, C#) but not vice versa.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Besides the built-in support in web application, we can solve this issues by maintaining our own policy while define and implement our tags. After some brain storming,&amp;nbsp;I found two ways, where this object oriented approach can&amp;nbsp;be fitted! &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;1. Root level &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;While bookmarking, consider the lowest level, and DON'T consider the corresponding upper parents. For example, "ASP.NET". We will define the tree structure by creating a special bookmark&amp;nbsp;for each parent node. In this case, in the web application, we need to have a support to merge the contents of tags, which can be used by any other users in later time though a&amp;nbsp;labeled name for that merged list. For example: For the merged list of "Microsoft", we can define it as follows:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Microsoft = ".NET" + "ASP.NET" + "C#" + {unclassifield "Microsoft" list}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;2. Node level&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;While bookmarking any contents,&amp;nbsp;starting from the lowest level, all parents corresponding to that level should be marked. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;For example: a content related to "ASP.NET" should be bookmarked as follows:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;ASP.NET content = "ASP.NET" + ".NET" + "Microsoft" + "Software Development"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Technically this is the most easiest way, as we don't need any type of support in the&amp;nbsp;web application. All we need,&amp;nbsp;is just to have a flat set of tags, which relations will be maintained while tagging. The problem is, the user always needs to&amp;nbsp;remind the hierarchy of tags. As this is relatively tough for the users to remind the hierarchy,&amp;nbsp;this idea&amp;nbsp;can be used only in special or important content, where we don't have&amp;nbsp;any tree or merge support in the web application.&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://geekswithblogs.net/joycsharp/archive/2006/12/09/100695.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://geekswithblogs.net/joycsharp/archive/2006/12/09/100695.aspx" border="0"&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100695"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100695" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/100695.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2006/12/09/100695.aspx</guid>
            <pubDate>Fri, 08 Dec 2006 18:22:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/100695.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2006/12/09/100695.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/100695.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/100695.aspx</trackback:ping>
        </item>
        <item>
            <title>Some Basic Differences Between ASP.NET 2.0 ObjectDataSource and SqlDataSource</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/11/15/97221.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;* Type Name&lt;br&gt;&lt;/strong&gt;For ObjectDataSource, the property TypeName includes the class name, that will responsible to manage data, this&amp;nbsp;may NOT be the data object collection. The select, insert etc methods will use the mentioned methods to access or retrieve data. For SqlDataSource, a built-in data collection is used, which can be bound to data data controls.&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;* Connection String&lt;br&gt;&lt;/strong&gt;For ObjectDataSource, there is NO connection string needed, as it is used&amp;nbsp;middle tier. For SqlDataSource, connection string is needed.&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;* CRUD Method&lt;br&gt;&lt;/strong&gt;For ObjectDataSource, there is NO method (select, insert etc) type, as the methods are being used from a class of middle tier. For SqlDataSource, there are two types of methods StoredProcedure and Text. note, in SqlDataSource, for parameters, in the execution time the system automatically includes a '@' before the name as specified in the name property.&lt;/font&gt;&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://geekswithblogs.net/joycsharp/archive/2006/11/15/97221.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://geekswithblogs.net/joycsharp/archive/2006/11/15/97221.aspx" border="0"&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=97221"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=97221" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/97221.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam [MVP]</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2006/11/15/97221.aspx</guid>
            <pubDate>Wed, 15 Nov 2006 16:59:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/97221.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2006/11/15/97221.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/97221.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/97221.aspx</trackback:ping>
        </item>
        <item>
            <title>CodeSmith Tips: Part 2</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/11/09/96606.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;* &lt;font color="#008000"&gt;&lt;strong&gt;Template and out-put view&lt;/strong&gt;&lt;/font&gt;: &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Use F5 and F7 so run &amp;amp; see out put and to switch to the code view. &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;* &lt;font color="#008000"&gt;&lt;strong&gt;Reusing templates&lt;/strong&gt;&lt;/font&gt;: &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the master page, register as: &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" color="#c0c0c0" size="2"&gt;&amp;lt;%@ Register Name="SubTemplate" Template="SubTemplate.cst" %&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;and render the sub-template content in the master template as &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" color="#c0c0c0" size="2"&gt;&amp;lt;% new SubTemplate().Render(this.Response); %&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;* &lt;font color="#008000"&gt;&lt;strong&gt;Code behind page&lt;/strong&gt;&lt;/font&gt;: &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the template page, use the following line to consider the code-behind page &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" color="#c0c0c0" size="2"&gt;&amp;lt;%@ CodeTemplate Src="CodeBehind.cst.cs" Inherits="SampleCodeBehindClass" Language="C#" TargetLanguage="C#" Description="Demonstrates the most basic template." %&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;In the code behind page, consider the code behind class, as follows: &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" color="#c0c0c0" size="2"&gt;using System.ComponentModel;&lt;br&gt;using CodeSmith.Engine; &lt;/font&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;font color="#c0c0c0"&gt;public class SampleCodeBehindClass : CodeTemplate&lt;br&gt;{&lt;br&gt;...&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=96606"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=96606" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/96606.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2006/11/09/96606.aspx</guid>
            <pubDate>Thu, 09 Nov 2006 10:50:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/96606.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2006/11/09/96606.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/96606.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/96606.aspx</trackback:ping>
        </item>
        <item>
            <title>Common Sharable Content: A Missing Feature of Web 2.0</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/08/18/88368.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Lets consider the situation: I have 6 categories of resumes and portfolios which are used for different purposes (i.e. for professional job, contract, personal, marriage, research proposal, university admission purposes etc). I have to provide those with recent information when needed. Also I am a developer, who has blogs, profiles among several online community, forum, sites, for instance in 20 sites. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Among those, of course there are some information which are being changed very frequently (i.e. projects, technology expertise and my skill level etc), some are being changed occasionally (i.e. home address, cell number etc). &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;It turns to a hazardous problem when my personal and professional data are getting changed. In that case I need to change ALL of my online profiles in 20 sites! Each time when I need to submit my resume, I have to go through the whole document to check the info that has been updated! Really silly!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Information technology is growing very fast, lots of exiting, interesting and intelligent techniques are taking places. But I am not sure why we have not get any consistent, easy way (really easy) to solve this issue and thus to save lots of our time and efforts for hazardous tasks and of course to get an efficient way to make information consistent, accurate among all documents and web places. &lt;/font&gt;&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;A Sample Solution:&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Lets say there is a developer who uses the following text in 20 sites as his profile content:&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Verdana" size="2"&gt;Mohammad Ashraful Alam is a Software Engineer. This Bangladeshi national is involved with project management and development of several US based software projects from his country. Already he has managed and developed 15 software projects, which are being used by several users of different countries, such as USA, Canada, Australia, and Bangladesh. Currently he is engaged as Project Manager at ABC Inc, USA.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Using the "Common Sharable&amp;nbsp;Content" concept the user can put his data into a specific space in the web, using a simple web or desktop application. After then can put the following content for his profile, where the web server will parse the tags, so will be able to render the appropriate content to its client end UI. &lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Verdana" size="2"&gt;&lt;datasource id="dataSource1" provider="www.x.com/provider" servername="myServer1" userid="user1"&gt;&lt;/font&gt;&lt;/em&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Verdana" size="2"&gt;&lt;datasource id="dataSource2" provider="www.y.com/provider" servername="mySecuredServer2" userid="user2" password="psw2"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;b&gt;&amp;lt;# dataSource1.GetOfficialName&amp;gt;&lt;/b&gt; is a Software Engineer. This Bangladeshi national is involved with project management and development of several US based software projects from his country. Already he has managed and developed&lt;b&gt; &amp;lt;# dataSource2.GetTotalProjects&amp;gt;&lt;/b&gt; software projects, which are being used by several users of different countries, such as &lt;b&gt;&amp;lt;# dataSource2.GetProjectCountryList&amp;gt;&lt;/b&gt;. Currently he is engaged as &lt;b&gt;&amp;lt;# dataSource2.GetDesignationCurrentCompany&amp;gt;&lt;/b&gt; at &lt;b&gt;&amp;lt;# dataSource2.GetCurrentCompany&amp;gt;&lt;/b&gt;. &lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h3&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Design Issues:&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;While designing any solution for the above case, there are few issues that can be considered as follows:&lt;/font&gt;&lt;/p&gt; &lt;h4&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;1. Data Security Level:&lt;/u&gt;&lt;/font&gt;&lt;/h4&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Some data can be shared or referred by any of the external users or sites. For example, "Ashraf has completed &lt;b&gt;&lt;em&gt;&amp;lt;# dataSource2.GetTotalProjects&amp;gt;&lt;/em&gt;&lt;/b&gt; projects." In this case corresponding reference tags can be shared to all so that anybody can use that in relevant places as needed.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;On the other hand,&amp;nbsp;the content author might not want to let anybody to share his/her info using "Common Sharable Content" technology, but might want to use the content only to specific or private places (for instance personal phone number). Special security mechanism (for instance user name/password) should be used to publish private info.&lt;/font&gt;&lt;/p&gt; &lt;h4&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;2.&amp;nbsp;Service Provider and Data Model:&lt;/u&gt;&lt;/font&gt;&lt;/h4&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Exactly what are the information the user needs to share in the documents, can be defined through the user interface (desktop or web) of the Information Service Provider. The Service Provider should provide enough opportunity to the user to customize content and tag definitions, as much as needed. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Data should be stored into the web space provided by the Service Provider, with&amp;nbsp;normalized model. Using build-in templates or defining custom data model, the user should utilize his own data in various way. For instance if a content author has an entity named "My Projects", which lists all the projects, using a "Row Count" method provided by the service provider, the author can easily refer his number of projects to documents, without requiring to put "Number of Projects" into a separate entity.&lt;/font&gt;&lt;/p&gt; &lt;h4&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;3. Platforms and Standards:&lt;/u&gt;&lt;/font&gt;&lt;/h4&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;As tags are being parsed and rendered form the web server, so the server side scripting software might have it's own syntax and semantics regarding this particular issue. Besides to make it widely usable, a common standard for&amp;nbsp;the syntax and semantics&amp;nbsp;can be defined so that ALL server side scripting languages can follow this standard to render appropriate text. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;As text&amp;nbsp;is being rendered from server side, there are little or no concern in client side support.The only concern&amp;nbsp;that can be considered for the client side is, if, for instance server side script doesn't parse the tags and thus&amp;nbsp;the&amp;nbsp;content will not be rendered in the desired format.&amp;nbsp;The&amp;nbsp;browser&amp;nbsp;(and/or the tag)&amp;nbsp;can have the default value to show&amp;nbsp;it becomes not possible to show the rendered data.&amp;nbsp;So while designing the tag (and it's syntax-semantic) we can consider traditional html/XML mark-up languages for wide range compatibility to show default values in unconsidered cases.&lt;/font&gt;&lt;/p&gt; &lt;h4&gt;&lt;font face="Verdana" size="2"&gt;&lt;u&gt;4. Application Add-in: &lt;/u&gt;&lt;/font&gt;&lt;/h4&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Web application or desktop application that&amp;nbsp;has support to the concept&amp;nbsp;"Common Sharable&amp;nbsp;Content", can contain Add-in where all the available tags or methods can be inserted into the document. For instance in the "DataSource1" sidebar (which has been initialized by connecting to a specific datasource) might contain an element "GetOfficialName" clicking on which inserts the &lt;em&gt;&lt;b&gt;&amp;lt;# dataSource1.GetOfficialName&amp;gt;&lt;/b&gt; &lt;/em&gt;tag into the document.&lt;/font&gt;&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;Conclusion:&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Web 2.0 is taking a very important place among the current trend of web, where rather considering&amp;nbsp;"human to machine communication", "machine to machine communication" and "human to human communication" is regarding more. It has various new approaches which are making the web space better. From my point of view, "Common Sharable&amp;nbsp;Content" concept is EXACTLY what is missing here. Of course this concept encourages the "machine to machine" communication and thus make personal info management over web better. &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;The concept might seem a similar concept of using&amp;nbsp;XML based&amp;nbsp;Web Service in ASP.NET or Java technology. But, as we discussed, to make Web 2.0 really useful and popular, "Common Sharable&amp;nbsp;Content" concept should be designed so that can be integrated by a non-technical or poor technical people in very flexible and easy way. &lt;/font&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;I am interested to work towards this target. If anyone of you, the readers, are interested please let me know thru mail: &lt;a href="mailto:joy_csharp@yahoo.com"&gt;here&lt;/a&gt;&amp;nbsp;.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=88368"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=88368" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/88368.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2006/08/18/88368.aspx</guid>
            <pubDate>Fri, 18 Aug 2006 09:06:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/88368.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2006/08/18/88368.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/88368.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/88368.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET 3.0 — A Sea In Paradise !!!</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/07/21/85866.aspx</link>
            <description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Microsoft is changing it&amp;#8217;s development technology very frequently. By the early of this year I started to learn .net 2.0 and VS.NET 2005 seriously, and with in few months I was just able to capture few new features of this, although I was also engaged with project management, UML, &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:City&gt; and other software engineering issues, as I need to be on the track with other development tracks. Well, not only Microsoft, but also other technologies, relevant to software development is changing very frequently. The concept of web 2.0 had taken a great issue here, targeting a large range of user, usability, communication etc. According to the current development trend in web space, Microsoft is also growing it very faster, and it really seems tremendous speed to me to match.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;.net is a core technology, on which Microsoft has a big investment, to capture huge range to users on web, to provide them a really great, exiting, useful web space. Well as a dot net developer, always I enjoy this technology and feel great when I discover a new thing here. But, as well as, I feel me a bit tired to be on the same speed as it&amp;#8217;s .net platform is growing. .net 2.0 is in the market, developers from .net 1.0, .net 1.1 has been started to learn this new version. But by this time, I see Microsoft has been reached a mentionable path on it&amp;#8217;s next version .net 3.0, targeting it&amp;#8217;s next awesome operating system Windows Vista. There are few names, which are relevant to .net 3.0 are getting the care of the developers, some of those has been listed here:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;PLATFORM&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;STRONG&gt;Windows XP/Server 2003: &lt;/STRONG&gt;Well the current beta and CTP (Community Technology Preview) versions of WinFX and ite's relavent software can&amp;nbsp;run in Windows XP SP1 and Windows Server 2003 SP1 environment.&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Windows &lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt;:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; code name &amp;#8220;Longhorn&amp;#8221;, this is the operating system, which is in the center of curiosity among the computer users of the whole world. Having extremely exclusive set of user interface, easy capability to communicate with other pc etc makes &lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt; a wildcard of Microsoft to have a big beat to it&amp;#8217;s competitors. &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;STRONG&gt;Windows Vienna: &lt;/STRONG&gt;code name &amp;#8220;Blackcomb&amp;#8220;, is the next version of Windows Vista, definitely which will be a platform for .net 3.0.&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;DEVELOPMENT FRAMEWORK&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;.NET Framework 3.0:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; formerly it is &amp;#8220;WinFX&amp;#8221;. This is the core framework that includes WPF, WCF, WWF, WCS pillars to serve different software requirements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Windows Presentation Foundation:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; code name &amp;#8220;Avalon&amp;#8221;, a pillar of&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;WinFX, that deals with UI in &lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt; mainly. Unlike previous development frameworks, this frameworks enables developers to develop applications in both browser and non-browser client platform with the same object model. Using XAML designers will be able to easily design UI here by XML and coders can concentrate more on programming logic,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Windows Communication Foundation:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; code name &amp;#8220;Indigo&amp;#8221;, a set of .net technologies for building and running connected system. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Windows Workflow Foundation (Workflow):&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;a&lt;/SPAN&gt; programming model and set of tools to develop workflow enabled windows application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Windows CardSpace:&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;formarly &amp;#8220;Infocard&amp;#8220;,&amp;nbsp;a&lt;/SPAN&gt; framework to protect end user&amp;#8217;s digital identity and maintain end-user control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;XAML:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; This is a markup language, pronounced &amp;#8220;Zammel&amp;#8221;, based on XML, used to define the rich client application interfaces (fat client) for the Windows Longhorn applications. This is one of the core feature of .net 3.0 based Windows Presentation Foundation API. This markup language make the graphics designers easy to design UI without concerning code level implementation. Where as it&amp;#8217;s frees the programmers NOT to be concerned about UI, but to concentrate on programming and business logic. Great! As developers are rarely good designers and vice-versa ;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;DEVELOPMENT TOOLS&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Windows SDK: &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;This is the development resource that includes tools, documentation, samples to develop applications using .net 3.0 and operating system API (mainly &lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Visual Studio 2005 IDE:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; code name &amp;#8220;Whidbey&amp;#8221;, the current version of Visual Studio, based on .net 2.0. However with some additional software, it&amp;#8217;s also possible to use some .net 3.0 features here. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Visual Studio 2007 IDE:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; &amp;#8220;Orcas&amp;#8221;, this is the next version of Visual Studio 2005 IDE&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Next version IDE of Orcas:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; May be, by 2010 we are going to get &amp;#8220;&lt;st1:State w:st="on"&gt;&lt;st1:place w:st="on"&gt;Hawaii&lt;/st1:place&gt;&lt;/st1:State&gt;&amp;#8221;, which is the next version of &amp;#8220;Orcas&amp;#8221;. Developers are expecting to have a paradise regarding their development experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85866"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85866" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/joycsharp/aggbug/85866.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohammad Ashraful Alam</dc:creator>
            <guid>http://geekswithblogs.net/joycsharp/archive/2006/07/21/85866.aspx</guid>
            <pubDate>Fri, 21 Jul 2006 03:31:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/joycsharp/comments/85866.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/joycsharp/archive/2006/07/21/85866.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/joycsharp/comments/commentRss/85866.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/joycsharp/services/trackbacks/85866.aspx</trackback:ping>
        </item>
        <item>
            <title>Removing Confusion While Creating Use Cases, Regarding Actor Responsibilities/Association</title>
            <link>http://geekswithblogs.net/joycsharp/archive/2006/07/14/85158.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;While developing use cases, the designer often faces a confusing situation to name the use case, while this is associated by multiple actors. For instance, a salesman sells a concert ticket to the customer. In this case there are two actors salesman, customer and one use case. What will be the use case name??? &amp;#8220;Sell a ticket&amp;#8221; ? or &amp;#8220;Buy a ticket&amp;#8221;? Since both actors are associated, how we can recognize specifically which actor is buying or selling the ticket? Well from my point of view there are couple of solutions, based on the situation:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;1. Initiator:&lt;/STRONG&gt; the use case name should be given according to the initiator actor. For instance, in the ticket sells use case, if the sells man is the initiator, then the use case name should be &amp;#8220;Sell a ticket&amp;#8221;.&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;However there may be another new use case that can be associate with &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;/&amp;lt;&amp;lt;exclude&amp;gt;&amp;gt;&lt;/SPAN&gt; relationship with this use case.&lt;/SPAN&gt; In this case to show the association of the corresponding actor with the new use case, we need to explicitly mention this association. For example if there is a new use case is included &amp;#8220;attend the concert&amp;#8221; with the &amp;#8220;Sell a ticket&amp;#8221; use case, we don&amp;#8217;t EXACTLY know who is attending the concert. Well putting a simple association with &amp;#8220;Customer&amp;#8221; actor and &amp;#8220;attend the concert&amp;#8221; use case says the customer will going to attend the concert.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;2. Split the use case:&lt;/STRONG&gt; if we want to show the responsibilities among the actors specifically, in that case we have to divide the functionality into two use cases. In our example: we can split the &amp;#8220;ticket sells&amp;#8221; functionality into two use cases: one is &amp;#8220;sell a ticket&amp;#8221;, which is associated with the &amp;#8220;Salesman&amp;#8221; actor and the other one is &amp;#8220;buy a ticket&amp;#8221; which is associated with the &amp;#8220;Customer&amp;#8221; actor. However to express the total functionality we have to associate these two use cases. &lt;BR&gt;Any following use case from any of two use cases can automatically reflect the association of the corresponding actor of the first use case, with the current following use case. For example: If the &amp;#8220;buy a ticket&amp;#8221; use case follows or includes a new use case &amp;#8220;attend the concert&amp;#8221;, it automatically says or associates the &amp;#8220;customer&amp;#8221; actor, as it is associated with &amp;#8220;buy a ticket&amp;#8221;. However we can still associate &amp;#8220;customer&amp;#8221; with the &amp;#8220;attend the concert&amp;#8221; use case if we wish, which is semantically correct.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Notes:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;STRONG&gt;Initiator:&lt;/STRONG&gt; In a use case diagram, there are the common situations, where actor begins a use case and then the use case interacts with other use cases. However in this case we need to specify the initialization process. This can be done in two ways, either by using the &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;lt;&amp;lt;initiates&amp;gt;&amp;gt; &lt;/SPAN&gt;stereotype in the corresponding association line, or we can use a arrow head line, rather using simple association notation among the actor and the use case.&lt;/FO