Ralf's Sudelbücher
-
Software Transactional Memory III - Making Transactions Atomic
Now that the basic data unit of my .NET Software Transactional Memory (NSTM) has been introduced - transacational objects (txo) aka INstmObject - who implement the Isolation property of transactions, the question is, where Atomicity comes from. Enter: the transaction log.
-
Software Transactional Memory II - Isolation of Changes to Transactional Objects
In yesterday´s posting I introduced my C# implementation (NSTM) of the Software Transactional Memory (STM) concept. It is supposed to make concurrent programming easier than it is today using explicit locking of shared in-memory resources. With NSTM multithreaded processing becomes as easy as accessing RDBMS from multiple applications isolated from each other with transactions.
-
Software Transactional Memory - Making multithreading easier
A while ago Carl Rosenberger - chief architect of db4o - mentioned in a personal conversation the concept of Software Transactional Memory (STM) [1, 8]. I was immediately intrigued by the idea - but the conversation went on. So I sat down later and read up on STM. And what I found made me very confident, STM was a very useful idea. Microsoft has recognized this too and is working on two versions of STM: a Haskell implementation [2, 3] and a more palatable version for mere mortal C# programmers called SXM [4].
-
A truely simple example to get started with WCF
Recently I needed to set up some simple code to demonstrate WCF (as an alternative to some other means of communication in distributed applications). But when I googled around, I could not find a really, really simple WCF example. Sure, there are lots of WCF introductions, but they all explain a lot of stuff I did not really want to know at that time. Also they most often spread the code across many files and even across languages (C# and XML). And that´s what I really, really hate! When I first try out a new API like WCF I want to have everything needed in one (!) place. I want all that´s required to be the minimum and in my favorite programming language. This way I can focus best on what´s really essential without getting distracted by syntax and unnecessary (but cool) "fluff".
-
Why complexity metrics don´t yet help ease software maintenance
Jeroen van den Bos bemoaned in a recent post, of how little help automatic software architecture complexity metrics are to him when assessing effort of a software change. I feel with Jeroen and think, we need to take another look at what complexity means (for software development). Roger Sessions took at stab at this in his article "A Better Path to Enterprise Architecture" - but I disagree with him in some regards.
-
An Exploration of O/R Mapping
I started a new blog. I want to explore the world of O/R Mapping more closely and will report my findings in my blog O/R Mapping Adventures.
-
Contract-first Design - DevWeek 07 Sample Code
For those who just attended my talk on Contract-first Design and microkernel usage at DevWeek 2007 in London here´s the sample code.
-
Single Assembly Deployment of Managed and Unmanaged Code
.NET developers love XCOPY deployment. And they love single assembly components. At least I always feel kinda uneasy, if I have to use some component and need remember a list of files to also include with the main assembly of that component. So when I recently had to develop a managed code component and had to augment it with some unmanaged code from a C DLL (thx to Marcus Heege for helping me with this!), I thought about how to make it easier to deploy the two DLLs. If this were just two assemblies I could have used ILmerge to pack them up in just one file. But this doesn´t work for mixed code components with managed as well as unmanaged DLLs.
-
Inversion of Control Using Generics - Revisiting the Separation of Use and Implementation
Martin Fowler in his famous article "Inversion of Control Containers and the Dependency Injection pattern" has compiled a number of ways how to dynamically bind a client to a service. I now would like to add two points to the discussion: firstly a distinction regarding what is injected, and secondly a new pattern for injection based on generics. During my discusson I´ll use the same sample scenario as Martin to make it easy to see what I´m trying to add. Here´s a quick recap using C#.
-
Der Trend geht zum Zweitblog - Eröffnung meines deutschsprachigen Blogs
[Finally I decided to open a new blog for German language postings only. Englisch speaking readers thus no longer need to complain about my non-English posting to the asp.net blog sphere. If you read German, come and visit my new blog at http://ralfw.blogspot.com/, and subscribe to its feed. This asp.net blog will stay active, though. Whatever I want to communicate to the international .NET developer community, I´ll continue to post here - in English.]