Deliverable: Best
Practice
It is not easy to come to .Net, and immediately adopt best
practice. The issue is that .Net is such a huge framework. It has to
be so flexible as it is required to be all things to all people.
There are just so many options, and it doesn't just stop at the
.Net framework. There is also ADO .Net, ASP.Net and OO design
techniques that also need to be mastered. IF our application is to be
distibuted there is also .Net Remoting or WCF (it's replacement).
There is plenty of help available, but the sheer quantity of this
help is part of the problem. A quick look around my PC shows 130mb of
help and quick start materials within the .Net directories, and then
there is further 950mb in my MSDN directory. There is so much help,
that it is almost no help. It is hard to get the broad overview
needed to make architecture design choices. The help material seems
to quickly descend into fine detail, which seems to open up more
questions than provide answers when I am in architecture-design mode
of thinking.
Of course this broad overview is hard earned, and can only really
come from years of experience of .Net, and the tools which precede
.Net. Rocky has this, which is why he wrote the book, and I am just
the reader.
There are many, many books and sites providing “help”
also. The big question is “which book”, and “which
site”. In my opinion, most books get us up and going too fast
with their “Foo”, or lightweight “customer”
and “order” examples. It is easily apparent how I can
write a .Net application, but it is extremely hard to see how I
should write one. My future self would thank me if I
could just slow down, and get the architecture and basic framework
right before rushing into start coding the application. A great aim,
but so hard to achieve!
I think that Rocky's books have a great deal to offer here.
Best practice: There has obviously been a lot of work
put into understanding .Net's capabilities. The CSLA framework has
been designed to extend upon .Net, to give a rich framework for both
the BO and UI programmers. The book does an excellent job of
explaining the reasons behind the various design decisions, and the
trade-offs that were involved.
Practical: The book goes beyond just theory, and
illustrates the concepts by working through a project to build the
CSLA framework. It then goes on to use the framework by developing
some Business Objects, and then to use those same objects in
desktop, web server, and then web service situations.
Real-world: The CSLA framework is not just some
academic, lightweight framework-example that exists in just a book.
It has been deployed by numerous people in a wide variety of
situations (see links).
Continuous improvement: We
can't be sure of “continuous” in the “forever”
sense, but we can see that there has been an impressive effort so
far. There have been 7 new versions since the VB flavour of the
framework was originally published in June of 2003. We now have a
major overhaul for .Net v2 as of .March 2006. The new versions which
we have already received have implemented many new features as well
as bug fixes. The areas of improvement so far include:
a fundamental level of reworking to take full advantage of .NET 2
improvements such as better type safety and reduced boxing overhead
(generics), much better data binding support (.NET's new
BindingSource component, PropertyChanged event and bi-directional
binding in ASP.NET), reduced overhead in multi-database situations
(ADO.NET 2 promotable transactions)
field level authorisation added to the existing object level
authorisation facilities
role based authorisation rules move from the UI into the BO
remove dependancy upon .NET Remoting, and make ready for WCF
(Windows Communication Foundation; codename Indigo; the future
replacment for .NET Remoting). Microsoft haven't released this
replacement for .NET Remoting yet, but Rocky already has a
downloadable project demonstrating CSLA use against the WCF beta.
the demonstration application has been extended to handle
first-write-wins concurrency, also a nice multi-document SDI UI
built using user controls, also to use the new .NET components such
as the DataGridView and ToolStrip
changes to better facilitate the use of code generators to build our
BO's
complete overhaul, and extension of,of the rules tracking
facilities
localization facilities
enhancement to date handling capabilities
enhancement to exception handling capabilities
handle .NET v1.1
|