<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Muhanad YOUNIS : .NET</title><link>http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Parent – Child in recursive data table with LINQ</title><link>http://weblogs.asp.net/muhanadyounis/archive/2009/11/07/parent-child-in-recursive-data-table-with-linq.aspx</link><pubDate>Sat, 07 Nov 2009 14:19:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7248858</guid><dc:creator>mohi88</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=7248858</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=7248858</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2009/11/07/parent-child-in-recursive-data-table-with-linq.aspx#comments</comments><description>&lt;p&gt;If you have a data table which looks like this one below and holds child,parent rows at the same table;&lt;/p&gt;
  
&lt;table border="1" cellpadding="2" cellspacing="0" width="400"&gt;&lt;tbody&gt;     
&lt;tr&gt;       
&lt;td valign="top" width="133"&gt;ID&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;ParentID&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;Name&lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td valign="top" width="133"&gt;guid1&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;null&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;parent 1&lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td valign="top" width="133"&gt;guid2&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;guid1&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;child for parent 1&lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td valign="top" width="133"&gt;so on&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;so on&lt;/td&gt;
        
&lt;td valign="top" width="133"&gt;so on&lt;/td&gt;
     &lt;/tr&gt;
   &lt;/tbody&gt;&lt;/table&gt;
  
&lt;p&gt;and you wont to retrieve all records from the table in a table looks like below;&lt;/p&gt;
  
&lt;table border="1" cellpadding="2" cellspacing="0" width="400"&gt;&lt;tbody&gt;     
&lt;tr&gt;       
&lt;td valign="top" width="200"&gt;Parent&lt;/td&gt;
        
&lt;td valign="top" width="200"&gt;Childs&lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td valign="top" width="200"&gt;parent 1&lt;/td&gt;
        
&lt;td valign="top" width="200"&gt;child 1 for parent 1         &lt;br&gt;child 2 for parent 1          &lt;br&gt;child 3 for parent 1          &lt;br&gt;….&lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td valign="top" width="200"&gt;Parent 2&lt;/td&gt;
        
&lt;td valign="top" width="200"&gt;child 1 for parent 2         &lt;br&gt;child 2 for parent 2          &lt;br&gt;….&lt;/td&gt;
     &lt;/tr&gt;
   &lt;/tbody&gt;&lt;/table&gt;
  
&lt;p&gt;This means that i have to make a recursive query in Sql to retrieve it this way. but with LINQ its more easy to be done, see the query below;&lt;/p&gt;
  &lt;div class="csharpcode"&gt;   
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;var q=  from p &lt;span class="kwrd"&gt;in&lt;/span&gt; TypedDataTable&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;where&lt;/span&gt; p.ParentID == &lt;span class="kwrd"&gt;null&lt;/span&gt;  &lt;span class="rem"&gt;// well get all parents&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    select &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;     {&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;           ParentID = p.ParentID,&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;          child =  from c &lt;span class="kwrd"&gt;in&lt;/span&gt; TypedDataTable &lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;where&lt;/span&gt; c.ParentID == p.ID select&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;span class="kwrd"&gt;new&lt;/span&gt;  {ChildID=c.ID,&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                        ParentID = c.ParentID}&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    };&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.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; }&lt;/style&gt;

&lt;p&gt;and by the query above you’ll get this result;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/muhanadyounis/linqParentChild_615EF617.jpg" mce_href="http://weblogs.asp.net/blogs/muhanadyounis/linqParentChild_615EF617.jpg"&gt;&lt;img src="http://weblogs.asp.net/blogs/muhanadyounis/linqParentChild_thumb_31C0D78B.jpg" style="border: 0px none ; display: inline;" title="linqParentChild" alt="linqParentChild" mce_src="http://weblogs.asp.net/blogs/muhanadyounis/linqParentChild_thumb_31C0D78B.jpg" border="0" height="148" width="520"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;

&lt;p&gt;&amp;nbsp;NOTICE : this query will load one level at a time&lt;br&gt;&lt;/p&gt;

&lt;p&gt;hope this helps&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7248858" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/linq/default.aspx">linq</category></item><item><title>Using 2 Tables Joined with LINQ as data source without anonymous cast error in databond method</title><link>http://weblogs.asp.net/muhanadyounis/archive/2009/11/04/using-2-tables-joined-with-linq-as-data-source-without-anonymous-cast-error-in-databond-method.aspx</link><pubDate>Wed, 04 Nov 2009 08:19:58 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7246622</guid><dc:creator>mohi88</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=7246622</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=7246622</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2009/11/04/using-2-tables-joined-with-linq-as-data-source-without-anonymous-cast-error-in-databond-method.aspx#comments</comments><description>&lt;p&gt;Yesterday one of our project team member faced a challenge of using an anonymous data that is returned from joining 2 typed data tables with LINQ. The problem is not how to use the data, the problem was how to be able to cast and use the data in Repeater ItemDataBond method without having “&lt;i&gt;&amp;lt;&amp;gt;f__AnonymousType0&lt;/i&gt;….” cast error. below is the join query (tables used are typed) :-&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt;PagedDataSource objPDS = &lt;span class="kwrd"&gt;new&lt;/span&gt; PagedDataSource();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt;objPDS.AllowPaging = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;objPDS.PageSize = 10;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;objPDS.DataSource = (from p &lt;span class="kwrd"&gt;in&lt;/span&gt; Table1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;              join  d &lt;span class="kwrd"&gt;in&lt;/span&gt; Table2 on p.ID equals d.ID&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                             select &lt;span class="kwrd"&gt;new&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                             {   &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                 p,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                                 F1= d.f1,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                                 F2= d.f2,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                                 F3= d.f3,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                                 F4= d.f4,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                               }).ToList();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.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; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The code above will return rows with anonymous type that will include fields wanted for table2 and all table1 fields!. 
  &lt;br /&gt;NOTACE : to bind this data to repeater use &amp;lt;%# Eval(&amp;quot;F1”) %&amp;gt; for Table2 fields and &amp;lt;%# Eval(&amp;quot;p.FieldName”) %&amp;gt; for Table1 Fields.&lt;/p&gt;

&lt;p&gt;Now what will happen if we want to use the datarow data bonded to repeater row! the code below will show you that you can not cast that datasource in ItemDataBond method as DataRowView :- &lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;var bindedRow= e.Item.DataItem &lt;span class="kwrd"&gt;as&lt;/span&gt; DataRowView; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;font color="#008000"&gt;//bindedRow &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt; value&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.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; }&lt;/style&gt;

&lt;p&gt;So how to use a value inside the bonded row! after some researches I found out that reflection must be used to take that value from e.Item.DataItem with anonymous data. Reflection can be done by using &lt;a href="http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx" target="_blank"&gt;DataBind.Eval&lt;/a&gt; which will evaluate data at run time. A label added to repeater and we want to bond some data at itemdatabond time, the code below will demonstrate that :- (Sorry for using multiline in code)&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;label1.Text = Table3.&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;Where(cid =&amp;gt; cid.ID == &lt;/pre&gt;

  &lt;pre&gt;           (Guid)DataBinder.&lt;br /&gt;                 Eval(e.Item.DataItem, &lt;span class="str"&gt;&amp;quot;p.FieldName&amp;quot;&lt;/span&gt;)).&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;First().ToString();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.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; }&lt;/style&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx" target="_blank"&gt;DataBind.Eval&lt;/a&gt; Done the trick for you and retrieve wonted data from the anonymous type and casting it to needed type (here its guid). &lt;/p&gt;

&lt;p&gt;Hope this Helps&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7246622" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Tips+_2600_amp_3B00_+Tricks/default.aspx">Tips &amp;amp; Tricks</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/linq/default.aspx">linq</category></item><item><title>Extend Forms Authentication Ticket Depending on Session Time Out</title><link>http://weblogs.asp.net/muhanadyounis/archive/2008/12/01/extend-forms-authentication-ticket-depending-on-session-time-out.aspx</link><pubDate>Mon, 01 Dec 2008 10:14:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6761412</guid><dc:creator>mohi88</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=6761412</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=6761412</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2008/12/01/extend-forms-authentication-ticket-depending-on-session-time-out.aspx#comments</comments><description>&lt;p&gt;I know that this subject is not new! but last week one of my students asked me about how we can extend client authentication ticket according to session time out. We should do some coding to achieve such a goal.&lt;/p&gt;  &lt;p&gt;I’ll suppose that you have a master page or a main page with frames (no frames for master page) step by step let us do the following;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create such a JavaScript inside your main page &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;table width="467" border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="465"&gt;           &lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;lt;script type="text/javascript"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var timeOut = setInterval("ExtendSessionPopup();", 19 * 60 * 1000)&lt;/p&gt;            &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function ExtendSessionPopup() { &lt;/p&gt;            &lt;p&gt;&lt;a class="" title="more" name="more"&gt;&lt;/a&gt;indow.open('puppoPageUrl,'anycontent','width=455,height=435, status'); }&amp;lt;/script&amp;gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;In the code above we created a small counter to count the session time out time which is 20 min by default. Here I used 19 min because I’ll give the popup 1 min to count done.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Create a popup page that will tell the client that his session will expire within 1 min and ask him/her if he/she want to extend it. But 2 buttons on the popup, one to extend the session and the other to close session. On page load do this      &lt;br&gt;      &lt;table width="466" border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;         &lt;tr&gt;           &lt;td valign="top" width="464"&gt;             &lt;p&gt;protected void Page_Load(object sender, EventArgs e)                &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!Page.IsPostBack)                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder st = new StringBuilder();                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Append("&amp;lt;script type=\"text/javascript\"&amp;gt;");                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Append("setTimeout(\"ClosePopup();\", 60 * 1000);");                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Append("function ClosePopup()");                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Append("{window.opener.parent.location = \"Login.aspx\";window.close();}");                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; st.Append("&amp;lt;/script&amp;gt;");&lt;/p&gt;              &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(st);                &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }                 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;   &lt;p&gt;you may use a small counter to count down on the popup window for 60 sec.      &lt;br&gt;Here the code above tells the popup to redirect Client to login page after 60 sec for popup rise.       &lt;br&gt;Now; let us edit the click event of the Buttons;&lt;/p&gt;    &lt;table width="467" border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="465"&gt;Session Extend button            &lt;br&gt;            &lt;p&gt;protected void lnkExtendSession_Click(object sender, EventArgs e)              &lt;br&gt;&amp;nbsp; {&lt;/p&gt;            &lt;p&gt;FormsIdentity fi = (FormsIdentity)HttpContext.Current.User.Identity;              &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormsAuthentication.RenewTicketIfOld(fi.Ticket);               &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write("&amp;lt;script&amp;gt;window.close();&amp;lt;/script&amp;gt;");               &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;The code above extends session for another 20 min (if the user stays ideal all that time).&lt;/p&gt;    &lt;table width="463" border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="461"&gt;End Session Button            &lt;br&gt;            &lt;p&gt;protected void lnkEndSession_Click(object sender, EventArgs e)              &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {               &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write("&amp;lt;script type=\"text/javascript\"&amp;gt;window.opener.parent.location = \"Login.aspx\";window.close();&amp;lt;/script&amp;gt;");               &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;The code above will close the session if client click end session link button.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In this way we can give our client to extend his/her session from the popup and if the client is a way from the pc the popup will end the session and redirect the main page to login page. By the way in this article I used session duration as 20 min, there for its hard coded.&lt;br&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Hope this Helps&lt;/i&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6761412" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Session/default.aspx">Session</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/FormsAuthentication/default.aspx">FormsAuthentication</category></item><item><title>.net Workshop</title><link>http://weblogs.asp.net/muhanadyounis/archive/2008/10/24/net-workshop.aspx</link><pubDate>Fri, 24 Oct 2008 11:09:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6701651</guid><dc:creator>mohi88</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=6701651</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=6701651</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2008/10/24/net-workshop.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&amp;nbsp;while surfing i found out that there is people that love to share knowladge. one of them is &lt;/b&gt;&lt;b&gt;Richard Grimes. He shared a full workshop about three subjects;&lt;/b&gt;&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;&lt;strong&gt;&lt;a href="http://www.grimes.demon.co.uk/workshops/fusionWS.htm"&gt;Fusion Workshop&lt;/a&gt;&lt;/strong&gt;&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;b&gt; This workshop teaches you all of the aspects of how .NET locates 
        and loads assemblies.&amp;nbsp;&lt;/b&gt;&lt;/dd&gt;&lt;dt&gt;&lt;b&gt;&lt;strong&gt;&lt;a href="http://www.grimes.demon.co.uk/workshops/securityWS.htm"&gt;Security Workshop&lt;/a&gt;&lt;/strong&gt;&lt;/b&gt; &lt;/dt&gt;&lt;dd&gt;&lt;b&gt; This workshop teaches you how .NET security works and how you can 
        use the administration tools to configure it.&lt;/b&gt;&lt;/dd&gt;&lt;dt&gt;&lt;b&gt;&lt;strong&gt;&lt;a href="http://www.grimes.demon.co.uk/workshops/instrumentationWS.htm"&gt;Instrumentation Workshop&lt;/a&gt;&lt;/strong&gt;&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;b&gt; This workshop teaches you how to add instrumentation to your .NET 
        applications. &lt;/b&gt;&lt;br&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;Maybe he create and worte about these subjects early starting in 2005 but i think you should take a look.&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6701651" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Security/default.aspx">Security</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Workshop/default.aspx">Workshop</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Fusion/default.aspx">Fusion</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Instrumentation/default.aspx">Instrumentation</category></item><item><title>VS 2008 SP1 Released!</title><link>http://weblogs.asp.net/muhanadyounis/archive/2008/08/12/vs-2008-sp1-released.aspx</link><pubDate>Tue, 12 Aug 2008 08:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6507451</guid><dc:creator>mohi88</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=6507451</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=6507451</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2008/08/12/vs-2008-sp1-released.aspx#comments</comments><description>&lt;p&gt;Microsoft Visual Studio 2008 Service Pack 1 released.&lt;/p&gt;
&lt;p&gt;for more information &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:Arial;
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;span style="font-family: 'Calibri','sans-serif';" lang="EN-US"&gt;&lt;a href="http://www.geekzone.co.nz/content.asp?ContentId=7875"&gt;http://www.geekzone.co.nz/content.asp?ContentId=7875&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;to download :&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en" target="_blank" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt; http://www.microsoft.com/downloads/details.aspx.....&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6507451" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>When TO SOA</title><link>http://weblogs.asp.net/muhanadyounis/archive/2008/08/02/when-to-soa.aspx</link><pubDate>Sat, 02 Aug 2008 14:41:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6471264</guid><dc:creator>mohi88</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/rsscomments.aspx?PostID=6471264</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/muhanadyounis/commentapi.aspx?PostID=6471264</wfw:comment><comments>http://weblogs.asp.net/muhanadyounis/archive/2008/08/02/when-to-soa.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp; In the last few years developer start to use &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" title="SOA" target="_blank" mce_href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt; in many applications, because of that many new developers are too much excited to use SOA and apply the architecture of it to their applications. I found out that many applications start to be more complicated (while the application is too much simple without SOA). So, when to use SOA.&lt;br&gt;First we must know what is the meaning of SOA (not as Service-oriented architecture); it’s a kind of architecture to be used over software and web applications to increase the applications flexibility according to business requirements. SOA gives the ability to software and applications to exchange data and functionality by using xml services over the network.&lt;/p&gt;&lt;p&gt;&lt;br&gt;So let us see when to use SOA;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;If you have a business requirement that force you to develop an application that will be used on multiple platforms. (mobiles, desktops, laptops…)&lt;/li&gt;&lt;li&gt;If you have to divide the application into parts (and the parts still
communicate with each other) like ERP developments. ( you may divide an
ERP application into parts like Financial, HR, Logistic and these part
can still communicate with each other.&lt;/li&gt;&lt;li&gt;If you need to open one of your services to another developer or company.&lt;/li&gt;&lt;li&gt;If you want to exchange data over the network in a secured way.&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ………&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp; There is many other ways and needs to use SOA depending on your customer application needs. &lt;br&gt;We must keep on mind that SOA include N-tier programing, but N-tier does not include or use SOA all the time. I do believe that each software or application must be build over tiers to achieve the OOP most important principle “Encapsulate what varies”. &lt;br&gt;So use tiers in all applications but use SOA according to your business demends.&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6471264" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/N-tier/default.aspx">N-tier</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/SOA/default.aspx">SOA</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/muhanadyounis/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>