Project Silk provides guidance for building cross-browser web applications with a focus on client-side interactivity. These applications take advantage of the latest web standards like HTML5, CSS3 and ECMAScript 5 along with modern web technologies such as jQuery, Internet Explorer 9, and ASP.NET MVC3.
To illustrate this guidance, the project includes a reference implementation called Mileage Stats that enables its users to track various metrics about their vehicles and fill-ups. Much of the effort in building Mileage Stats was applied to the usability and interactivity of the experience. Animations were included to enhance the enjoyment of the site and AJAX is used to keep the interface responsive and immersive. A great deal of care was also taken to ensure the client-side JavaScript facilitates modularity and maintainability. To accomplish these design goals, the JavaScript code was structured into “widgets” that benefit from the jQuery UI Widget Factory.
More information at http://silk.codeplex.com/
A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource.
Example of web.sitemap file:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/" title="Home" description="Home">
<siteMapNode url="" description="Menu 1" title="Menu 1">
<siteMapNode url="" description="SubMenu 1" title="Sub Menu 1"/>
</siteMapNode>
<siteMapNode url="" description="Menu 2" title="Menu 2"/>
<siteMapNode url="" description="Menu 3" title="Menu 3"/>
</siteMapNode>
</siteMap>
Sample code to add to the page menu:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"
EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal"
DataSourceID="SiteMapDataSource1">
</asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
Running the application, we will have something like the next picture:

To show or hide the menu depending on the type of access each user, we may define the Roles in each SiteMapNode.
Another way to control the menus visible, is to add an attribute in each SiteMapNode and depending on its value, or will not display each menu.
For this, the web.sitemap will be something like:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/" title="Home" description="Home" visible="true">
<siteMapNode url="" description="Menu 1" title="Menu 1" visible="true">
<siteMapNode url="" description="SubMenu 1" title="Sub Menu 1" visible="true"/>
</siteMapNode>
<siteMapNode url="" description="Menu 2" title="Menu 2" visible="true"/>
<siteMapNode url="" description="Menu 3" title="Menu 3" visible="true"/>
</siteMapNode>
</siteMap>
The attribute "visible" is that we will indicate whether or not the menu is shown, and we'll add the event MenuItemDataBound on Menu with the following code:
protected void NavigationMenu_MenuItemDataBound(object sender, MenuEventArgs e)
{ SiteMapNode node = e.Item.DataItem as SiteMapNode;
if (!string.IsNullOrEmpty(node["visible"]))
{
bool isVisible;
if (bool.TryParse(node["visible"], out isVisible))
{
if (!isVisible)
{
if (e.Item.Parent != null)
e.Item.Parent.ChildItems.Remove(e.Item);
else
((Menu)sender).Items.Remove(e.Item);
}
}
}
}
Thus, we have our menu to show all nodes whose attribute value equals True.
To be able to directly control the menus that will be visible or not, I used a Treeview to bind the web.sitemap file and set all items to show a checkbox, which will indicate the status of the Visible attribute.
<asp:TreeView runat="server" ID="tvMenus" AutoGenerateDataBindings="False" DataSourceID="XmlDsSiteMap"
OnTreeNodeCheckChanged="tvMenus_TreeNodeCheckChanged" ShowCheckBoxes="All" ShowLines="True"
OnTreeNodeDataBound="tvMenus_TreeNodeDataBound">
<DataBindings>
<asp:TreeNodeBinding DataMember="siteMapNode" SelectAction="None" ShowCheckBox="True"
TextField="title" />
<asp:TreeNodeBinding DataMember="siteMapNode" TextField="title" />
<asp:TreeNodeBinding DataMember="siteMapNode" TextField="title" />
<asp:TreeNodeBinding DataMember="siteMap" />
</DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="XmlDsSiteMap" runat="server" DataFile="~/Web.sitemap" XPath="/*/*/*">
</asp:XmlDataSource>
protected void tvMenus_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
{ XmlElement node = e.Node.DataItem as XmlElement;
if (node.Attributes["visible"] != null)
{ if (!string.IsNullOrEmpty(node.Attributes["visible"].Value))
{
bool isVisible;
if (bool.TryParse(node.Attributes["visible"].Value, out isVisible))
{
e.Node.Checked = isVisible;
}
else
e.Node.Checked = true;
}
else
e.Node.Checked = true;
}
}

Finally, to record the attribute changes depending on the state of the checkbox, we added to the Treeview TreeNodeCheckChanged event the following code:
protected void tvMenus_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{ XmlDsSiteMap.GetXmlDocument().SelectSingleNode(e.Node.DataPath)
.Attributes["visible"].Value = e.Node.Checked.ToString();
}
And we add the button to save the changes the following code:
protected void btn_Click(object sender, EventArgs e)
{ XmlDsSiteMap.Save();
}
Now just enable and disable these items like we want to.

Client + cloud computing is a disruptive, new computing platform, combining diverse client devices – PCs, smartphones, sensors, and single-function and embedded devices – with the unlimited, on-demand computation and data storage offered by cloud computing services such as Amazon’s AWS or Microsoft’s Windows Azure. As with every advance in computing, programming is a fundamental challenge as client + cloud computing combines many difficult aspects of software development.
Orleans is a software framework for building client + cloud applications. Orleans encourages use of simple concurrency patterns that are easy to understand and implement correctly, building on an actor-like model with declarative specification of persistence, replication, and consistency and using lightweight transactions to support the development of reliable and scalable client + cloud software.
Orleans on Microsoft Research
Source:http://blog.agafonov.net.ua/post/2011/04/12/Orleans-software-framework-for-cloud-applications.aspx