I was thinking about how to rewrite an old (2009) WCF middle-tier service, and have been thinking about George Tsiokos's recent TPL vs. RxNet post.
I think a middle-tier service is perfect to illustrate how I see the strengths and weaknesses of these two.  Specifically the scenario:

Complex Middle-Tier:  Startup vs. Message Handling

TPL might be great for startup tasks.  There is one 'global' task, Initialize, that has many sequences and chunks (in TPL these could be child tasks) that can have different degrees of parallelization.  It also requires global 'command and control' and 'top-down' composition and error handling (a type of event correlation).  If any critical part of startup fails then tear-down the service (cancel outstanding parallel tasks) and exit the service quickly.  So global handling and command-control programming style (root of the call hierarchy has all control).

Once everything is initialized you want bottom-up event correlation and error handling.  The function at the top of the callstack has no control (usually a WCF operation or I/O completion callback).  You only want global state to be touched when absolutely necessary, not touched by ignorable infrastructure errors, and not by errors that are ignorable according to business rules.

Startup, large complex top-down composable work:
TPL

Streams, composable business logic (streams that include error/end):
RxNet

With .NET 5 the TPL dataflow libraries might change things again, but for now I much prefer RxNet for composing and routing 'messages' between layers.  We recently used it in a project and when you have to correctly handle error scenarios it shines.  Imagine a WCF callback for a business operation that is completely async, where business logic has to fire if the notification fails (delivery of the data to the client).  The code isn't pretty in either case, but is better and can be handled at the right level of the lego blocks with RxNet.
0

Add a comment

'Better together' VS + Windows is over

VS can't run 64-bit web apps, and can't open IIS projects when not elevated. File links can't run an app elevated, and an EXE can't be marked to always run elevated ... so My_IIS_App.sln is always broken.
In Windows 8 the 'default browser' is more complicated. I like IE10 in Metro mode (Chrome just doesn't seem to fit here). But all other times I like chrome.
Lately I post most of my tech thoughts to Google Plus.
I'm running Windows 8 on a laptop and Windows Server on my desktop/workstation.  I'm using Input Director to share Mouse & Keyboard with desktop and laptop.

Why Server?  I use Hyper-V, so same HW can run multiple DEV servers through MSDN license.

OK, background info done.
We're looking at a custom server build for work. I did some research last night and wanted to record some finding regarding RAID.

Windows SW RAID has come a long way since the Windows 2000 days (when I last tried it).
I just ran a little experiment and ran an HTA app under debugger (by adding //X as the arguments to MSHTA.exe). In the app version string it reports Trident 6.0 (a.k.a. IE 10) as the rendering engine.
I'm not sure how to approach the following technology migrations my team needs to tackle, especially planning, story weights, and customer benefit language.
I have VS 2012 running on my main 2 solutions and things are running smoothly. I recently hit a significant problem.
Visual Studio 2012 doesn't have allow the 'compare' command when merging changes from one branch to another.

Here is the uservoice request to add the feature to VS 2012.  If you know me please vote for it.
The Chromium 14 release will come with an inverse flag: --allow-running-insecure-content, as a convenience for users and admins who have internal applications without immediate fixes for these errors.
I wanted the angle of the first side of a polygon in SQL Server 2008+.  Our code for entering the shapes evolved over time, specifically which direction drew the shapes.
This is my second attempt at writing up my DOS tricks. I changed jobs, just like the original post said, but found the original tricks were woefully inadequate in real world use. Consider this as my first attempt at 'pro' tricks. I'll start with the basics from the command-line.
The post I wrote for GreenShot used a configuration file to tell the app to use the CLR and .NET FX that is already installed on Windows 8.  The same hack works for the Metro UI Tweaker tool from The Windows Club (which I found via winsupersite.com).
How to run Greenshot on .NET 4.5 (Windows 8).  Greenshot is an OSS alternative for SnagIt (screenshot tool).

Don't install the Greenshot installer. It will refuse to install without .NET 2.0, even though it seems to run fine on .NET 4.5.
I'm thinking about how to take some of the middle-tier parallel concepts like #RxNet and apply them in a little OSS GUI app I've been thinking about.  I quickly found this gem, ReactiveUI PDF .
I was thinking about how to rewrite an old (2009) WCF middle-tier service, and have been thinking about George Tsiokos's recent TPL vs. RxNet post.

I think a middle-tier service is perfect to illustrate how I see the strengths and weaknesses of these two.
I’ve written this trick every new job or position I miss out on the old standby, using batch script to capture command-line output to a dated log file.  This post is so I’ll never have to reproduce it again.
iPod

I recently bought a 4th gen iPod and man do I love it. Don't have to pay a data plan, and with a few bucks for good software can really make use of the GB of

flash storage and the fat bandwidth over WiFi. Exactly what my old Windows Mobile 6.X phone sucked at.
Microsoft's devs and testers write great little specialized utilities but far too often they never see the light of day. They write it for their team, and sometimes have time to post it internally, but all too often they're too busy to publish it outside the company.
I'm a cross-platform developer in the financial services sector. If any .NET or Java developer interested in reaching a 'new level' of performance on commodity hardware should watch this video about LMAX, hosted on InfoQ.
I've been playing with TopShelf service host.  Its goal is to remove the repetitive code from Windows Services written in .NET.  My production servers aren't Win 2008, so App Fabric service hosting isn't an option.

TopShelf 2.1 is still a bit of a moving target.
I've been playing with NuGet recently.  @GTsiokos pointed out the package service seems to be the same code that hosts the Orchard CMS gallery at http://orchardproject.net/gallery .

The Gallery Service project has good example of code _to read_ for anyone building a production OData service (a.k.a.
I created the name 'yzorg' during a time when I was looking for a smarter organization.
I just did a little demo for [a coworker] today of DOS tricks I learned while at MS.  I thought I'd send out the log as a sample (with mistakes removed, <smile>).  I usually become the goto dev when someone needs a quick-n-dirty batch script, or need to know "Can DOS do X?".
Blog Archive
Contributors
Contributors
Loading
Dynamic Views theme. Powered by Blogger. Report Abuse.