2008-07-08 - Architecture Chat Tomorrow

Architecture chat tomorrow, some things that have caught my eye lately:

  • Non-paged CLR host - Non paging during normal operation and no paging will occur when the application is idle.... hmmm... could be useful!
  • StyleCop - C# source code analysis for compliance against a set of rules that embody Microsoft's own style conventions.
  • Spartan programming
  • PSake - build automation tool without the angle bracket "tax" (bit like rake or bake (boo make) - but with more similiarity to existing command line tools).
  • Dependency Injection is dead? (A provocatively named article, but really it's just about using compile-time IL-weaving to do lazy loaded DI).
  • TypeMock racer - interesting deadlock finder (still under development) - and probably a sign of things to come (i.e. array of tooling to verify sound multi-threaded code).
  • AAA style syntax for Rhino Mocks (Arrange, Act, Assert) - I've been using this for the past couple of weeks on a project, it really allows for concise easy to read testing with stubs/mocks.


If anyone has any topics they'd like to cover just leave a comment on this post (so other's can get a heads up as well).

Notes from previous meetings and directions etc. can be found here on my wiki - all are welcome to attend.

Also tonight is the Ellerslie .Net user group - A testers perspective's with Hafiz Vegdani, starting at 6pm.

Read More

Architecture Chat #29

Reasonable turnout at the last Architecture Chat - appologies about
the late write-up!



So we talked about a few things last week - on a recurring them of
IL generation and weaving we discussed verifying generated
assemblies with PEVerify
- and how to ensure IL you generate is not invalid and Garreth
mentioned some issues with ILDASM crashes when using Mono.Cecil.



We talked about the process for wrapping and abstracting
functionality and services, and I gave a brief mention to this blog
post which provides a slightly more formalized description to this
process - Wafagy.



The discussion moved onto file/XML persistence and substituting
traditional relational databases with alternative persistence
mechanisms, especially in the cloud.



Static analysis tools were discussed, and thoughts about what (if
any) alternatives exist to tools such as NDepend.



We talked about the use of "toolkit" style projects such as the
Umbrella project or

Rhino Commons
and the compromise often felt between plucking
out only the bits you want (to control the surface area of your
project) verses the wish to easily integrate updates and unit tests
from the library into your project as they undergo continual
improvement.



I also talked about hostile templating/transformation languages
(such as the template language in Enterprise Architect which
I've been using for a recent project) and what features make a
domain or templating language "hostile" to being part of your daily
process i.e. lack of debugging, lack of comment syntax, poorly
identified or completely missed syntax errors, left to right
expression evaluation, lack of operator presidence rules etc.



I then gave a quick run through how I've been using the MDA and MDG
to model a PIM (platform independent model) of the domain,
including OCL constraints, and how it's automatically transformed
into a platform specific model (Castle ActiveRecord with

validation attributes
in this case) which is then used to
generate code from - and the issues I've encountered so far with
the tool.



Details of previous chats can be found here
on the wiki.



The next Architecture chat is this Thursday, all are welcome.

Read More

Castle Visual Studio Integration 0.3 released

Jonathon Rossi over in
Brisbane has been hard at work on the CVSI project (Castle
Visual Studio Integration) and has released
version 0.3
which now supports VS 2008 - for those not in the
know CVSI provides nvelocity intellisense when writing views for
monorail.



I did some testing of some earlier releases last week and it's
looking good, hilights include:

  • New installer which supports 2005 and 2008.
  • Basic XHTML intelisense.

It also includes some fixes which means the intelisense now
works when the templates are not in a web application project
(useful for those of us writing applications where we have
pluggable modules) and fixes for multi-level inheritence, so
helpers and view components with multiple levels of base class i.e.
FormHelper (which now inherits from AbstractFormRelatedHelper) will
be included in the list of classes, something which bugged me with
earlier releases on 2005.



Great work Jono!
Read More

2008-06-24 - Architecture Chat Tomorrow

Architecture Chat Tomorrow... Some possible things to talk
about:



Subversion 1.5 - and it's new
merge tracking
features.




WCF/WF Features
in .Net Framework 3.5 SP1 - a blog post caught
my eye with things I hadn't noticed before mostly around
DataContract Serialization i.e. ability to serialize graphs (not
just trees), an attribute-free mode for the serializer and a suite
of strongly typed classes to make implementing AtomPub easier (i.e.
Workspaces etc.).




P/Invoke Interop Assistant
- handy little tool, about 5 years
too late for me :)



Umbrella Project -
Interesting project, take a look at Ayendes
involved post
for an overview.  The
ExtensionPoint approach for making extensions more
discoverable is interesting - something we discussed right back
when the first beta's of VS2008 were on the horizon.



I'd personally also like to talk about some thoughts people have on
the bare minimums for a usable language and domain specific
languages in particular - i.e. debugging, native support for
comments etc. and some experiences with a rather hostile Model
driven architecture transformation language I've had to deal with
over the last couple of weeks :)



As usual, if anyone has any topics - feel free to leave a comment,
send me an email etc.



Notes from previous meetings and directions etc. can be found
here
on my wiki - anybody is welcome to come along.


Read More

Unity container comparison

If you recall many moons ago I posted a series of articles on the Castle Project's IOC Container "Windsor" teaching the fundamentals of IoC with a practical bent - lots of people liked them, and I still get feedback every now and then from people starting to use windsor and finding them useful.

At any rate Michael McGuire was once such person who read those tutorials a year or so ago and has now started a series of his own - mirroring my castle container tutorials but with the P&P Unity container instead - you can find it here.

As someone who has not given Unity much more then a brief skim it's a nice way to quickly get up to speed on some of the key differences.

So far after reading a couple of articles I've learnt.

  • You need to implement your own type converters for things like arrays or dictionaries in configuration.
  • Configuration syntax is not particularly human-friendly, obviously designed for management via a tool  - requiring the entry of full types all over the spot like "Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration" - just to register a component!
  • Default lifestyle is transient... hmmm.. personally I think singleton is more-often the norm for me when writing applications, but it really depends on how the container is being used/abused I guess.
  • Support for multiple configurations looks a little more baked in - but this is trivial stuff to implement in most containers.


I'll be interested to see how decorator chains etc. are implemented in Unity.

Good work Michael.

Read More