Standing on the shoulders of giants. RSS 2.0
# Wednesday, April 08, 2009

Clemens has posted a number of interesting posts about the .NET Services March 2009 CTP and SDK.

Introduction and new features

Queues and Service Bus Routers
Both are new for this release and look very promising for a number of (reliable) messaging scenarios between parties separated with various NAT and firewall devices.

Miscellaneous

To get a great overview of all these posts you can also watch the recording of his Mix09 session.

This is an ongoing series, so I’ll update this post when he posts a new article. (Or you can just subscribe on his site.)

Wednesday, April 08, 2009 7:14:36 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] - Trackback
Services
# Friday, April 03, 2009

412yJeVFALL[1] Today I finally finished reading Concurrent Programming on Windows by Joe Duffy. It took me this long, not because it’s a boring book (it’s not!), but because it covers a lot of ground and a goes into a lot depth.

This is not a book for someone looking for a 3-step program to start writing flawless concurrent programs, simply because there is no such program. As Joe points out throughout the book, writing concurrent programs is hard and error prone. It’s definitely not a simple case of running running all the items in your for or foreach loop on a new thread and automagically your program got a n-times faster.

Amount of subjects the book covers easily explains it’s size (900 pages), it covers a wide range of subjects from low level Memory models, via threads and lock object, to concurrent containers and finally to Parallel Containers for .NET CTP. I think this is a must read book for all serious developers, who in the near or not so near future expect to be writing concurrent programs. Considering the future of CPU’s and cloudcomputing, I believe that will be all of us.

Friday, April 03, 2009 8:58:48 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] - Trackback
Reading
# Wednesday, March 18, 2009

Announced today: the Microsoft Web Application Gallery. Combined with the WebPI 2.0 it's a single click experience for installing popular and free applications on IIS, where the tool takes care of all dependencies.

For example use this button to install the most recent (2.3) version of dasBlog:
Install DasBlog now with the Web Platform Installer

More info @ScottHanselman.

Wednesday, March 18, 2009 5:20:31 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] - Trackback
dasBlog
# Monday, March 16, 2009

In anticipation of a big announcement on Wednesday we decided to do an interim release of dasBlog 2.3.9074.18820. This is a service release containing only bugfixes. Until Wednesday you can get this release on the daily build page (scroll to the bottom) or on CodePlex, after Wednesday there is an additional distribution and installation method.

Monday, March 16, 2009 9:38:40 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] - Trackback
dasBlog
# Saturday, February 28, 2009

image

It doesn’t let you save anything, Windows Azure doesn’t like it when you try to write to the filesystem, but it shows the posts & loads the theme. And with only minor changes!

I used the manual from “Cloudy in Seattle” to get an existing ASP.NET app running on Windows Azure, to get started. Because ASP.NET is an older application we still had a referce to MSBuild 8.0 in the proj. file and the Azure packaging tool didn’t like that so I removed the following from the web project.

  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" 
Condition=" '$(Solutions.VSVersion)' == '8.0'" />

Further I added a dummy log file to the logs directory to make sure that directory was avaialble got created. And made sure all files which are required have the Build action set to content:

image

The final thing to do is make sure you use the IIS 7 web.config file and disable tracing.

<trace enabled="false" />
Saturday, February 28, 2009 5:59:57 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [2] - Trackback
dasBlog | WindowsAzure
# Tuesday, February 24, 2009

In November last year Kim Cameron wrote a series of posts about Project Geneva. It’s a little late, but still very interesting.

  1. Project Geneva - Part 1
  2. Project Geneva - Part 2
  3. Project Geneva - Part 3
  4. Project Geneva - Part 4
  5. Project Geneva - Part 5

And the PDF with the Identity Software + Services Roadmap.

Tuesday, February 24, 2009 11:09:28 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] - Trackback
Security | Services
# Friday, February 20, 2009

Since today there is a beta version of a SilverLight livestream control on the homepage of this site, which shows my activity on Twitter, Delicious and this blog. It’s not the most original idea, but it was a small enough project to learn something about SilverLight.

Loading the items

You can use the WebClient class (which internally uses the WebRequest class) to load data from the internet, this has some restrictions. To successfully connect to a site different from the site where the control is hosted, the site has to have a clientaccesspolicy.xml file or a crossdomain.xml which allows remote connections.

For performance reasons all methods on the WebClient class are asynchronous and since I request 3 different streams, I request those using using workitems in the ThreadPool (from a Timerevent every 5 minutes).

public void ProcessFeeds(object state)
{
    // twitter crossdomain.xml is very strict, so we have to have to 
    // use a proxy
    ThreadPool.QueueUserWorkItem(new WaitCallback(StartLoadFeed), new Uri("http://feeds2.feedburner.com/paulvanbrenk/twitter"));
    ThreadPool.QueueUserWorkItem(new WaitCallback(StartLoadFeed), new Uri("http://feeds2.feedburner.com/paulvanbrenk/clean"));
    ThreadPool.QueueUserWorkItem(new WaitCallback(StartLoadFeed), new Uri("http://feeds.delicious.com/v2/rss/paul.van.brenk"));
}

private void StartLoadFeed(object url)
{
    WebClient client = new WebClient();
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
    client.OpenReadAsync((Uri)url);
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    SyndicationFeed feed;
    using (var xReader = XmlReader.Create(e.Result))
    {
        feed = SyndicationFeed.Load(xReader);
    }

    foreach (var item in feed.Items)
    {
        Dispatcher.BeginInvoke(new AddItem(delegate(FeedItem x) { feedItems.Add(x); }), FeedItem.Create(item));
    }
}

private delegate void AddItem(FeedItem item); 

We need to use the Dispatcher to add the items to the collection, since the collection is bound to a UI element, which responds to changes in the collection.

Binding the items to the UI

The items are bound to the panel which renders them, using the DataContext. This makes it easy to use the Binding Markup Extension to extract information from the bound items and allows the panel to monitor the collection for changes (if the collection implements the INotifyCollectionChanged interface).

Render the items

The items are rendered using an ItemsControl, with the ItemsPanelTemplate set the WrapPanel from the SilverLight Toolkit, this way the items are wrapped over multiple lines. The items are renderd using a DataTemplate in the ItemsTemplate. The image for each type of feed is converted from the type of the item using to an ImageBrush using a class implementing the IValueConverter interface.

Improvements:

  1. Implement an ICollectionView instead of wrapping an ObservableCollection in a custom collection;
  2. Use some smart caching for the feeditem collection;
  3. Add an info button, instead of the the info in the bottom left;
  4. Improved the design;
  5. Add filtering and sorting;
  6. Make the SilverLight plugin resize with the browser;
  7. Support more feed types like flickr and youtube.

[Download the project from http://code.msdn.microsoft.com/LiveStream]

Friday, February 20, 2009 4:42:30 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] - Trackback
SilverLight
# Wednesday, February 18, 2009

Shawn Wildermuth wrote about his experience using ASP.NET MVC for a new site he developed.

  1. Part 1: Why ASP.NET MVC
  2. Part 2: MVC in action
  3. Part 3: Datavalidation

One of the things he does is sending "complex" models to the view to render, I'm not sure that's something you should do. I believe that you should stick so simple strings and have the controller do all the heavy lifting. It's a slippery slope you're stepping on, before you know, you're sending 'models' straight from the Entity Model to the view.

Not sure if that's really feasible (or the simplest/easiest) in all situations, but it ensure a clean separation between business logic in the controller and the model and the UI in the view.

More info:Enforcing Strict Model-View Separation in Template Engines (pdf)

Wednesday, February 18, 2009 5:56:48 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [1] - Trackback
ASP.NET | Security
Ads
About
© Copyright 2010
Paul van Brenk
Sign In
newtelligence dasBlog 2.3.9074.18820
All Content © 2010, Paul van Brenk
DasBlog theme 'Business' created by Christoph De Baene (delarou)