Yes, it's the longest title of all VS Live Orlando presentations! It's a big topic and it deserves a big name.
I'm heading out Monday night to hurricane country to deliver this talk on Tuesday morning. I like this topic because when you get into it, it's like an onion. It doesn't look like something terribly sophisticated but as you get into you find there are more and more layers to peel back.
I'm co-chairing two tracks of DevCan coming up in Setp/Oct in Vancover/Toronto (exact dates to follow) - see www.devcan.com for more.
I'm doing the architect track and web track. If you have ideas for content you'd like to see, or have a topic you'd like to present in either of those categories, send them to me. You don't have to be canadian, but it helps :)
Eric Gunnerson has great post with some performance inspired assembly guidelines for fewer larger assemblies. Versioning and Security units of work. Good reasons.
But a non-performance reason for partitiioning into more assemblies is to stop developers from doing things like referencing your data access layer classes from a user interface layer (without going through a business object layer). If you have your classes in 3 assemblies/projects: UI, BUS and DA, where UI references BUS and BUS references DA, then it's hard for a class in UI to call a class in DA - without going out of their way to add a project reference.
Should a project always correspond to an assembly? Well that's the default but you can create intermediate assemblies called netmodules and link them together with the assembly linker (AL.exe). Net Modules are MSIL but without a manifest. You create the new assembly which links the modules together (and adds metadata) with the AL.exe.
The only problem with all of this is that you have to use the command line to compile your projects into .netmodules and link them afterwards. The net result however is that still end up satisfying Eric's performance tips with the requirement for binary partitioned UI, Business, and Data Access layers.
I took the train to Montreal to see DevTeach Conference on Monday Tuesday. I managed to get a train without internet access so I took the opportunity to do a long time coming repave of my laptop. I installed from the Windows XP Pro SP1a msdn dvd. I knew I'd have a ton of Critical Updates to get from the Windows Update site when I got to my hotel, but at least I wasn't installed from the Windows XP gold 1.0 disc.
So I get to my hotel room and there is something like 20 critical updates to do. After I get through those there are some more iterations of recommended updates and more critical updates (on the the recommended ones). It was about an hour or so before I had my machine in a nice secure state......but the whole time I WAS CONNECTED TO THE FRIGGIN INTERNET.
I'm still uninstalling and cleaning virus crap off my VIRGIN XP install that I got while connected to the internet waiting for critical updates to secure my machine.
But the problem is that it's too late. What we need is a roll up (Windows XP SP2) but even that is going to get stale. I think what MSDN needs (or maybe Technet already has this) but a roll up of offline windows update stuff that comes out monthly. An Offline Windows Update of all critical updates that I can run on a virgin machine without connecting to the internet to get them. Isn't there some wishlist address at MS.COM I can send this too?
The site doesn't yet contain everything but things are trickling in.
Myself and Adam Gallant delivered an MSDN Deep Dive last week about developing Smart Client applications. I covered the overview & secure data access sections. The samples and IssueVision (1.0 C# & VB) along with the slides are available over here. Thanks to those who came out.
Update: If you want to take advantage of getting this stuff (and more) on the DevDays CD, you can fill in the form here.
No need to have a TechEd commnet password. You can download ALL the pdf's for the plethora of topics. Some good stuff to see how the newly announced stuff (Team System, etc.) works.
Update These links are broken, give this a try: http://www.msteched.com/TechEdLabManuals.aspx
It's official. I'll post more thoughts and analysis about this as time permits, but, things you should know.
- Microsoft now has a new Team version of Visual Studio to be delivered “Next Year“ according to Balmer.
- new source control - more details to follow.
- Project Management - so dev's will be able to see “Work Items“ in their IDE. There is also supposed to be a sharepoint portal of some kind that dev's & pm's can go to see a dashboard view of a project, milestone's, etc. integrated with MS Project Server.
- Unit Testing - yes, a very NUnitish thing built right into visual Studio.
- Code Coverage - yes in the editor you can see what code was executed and what was not.
- Static Code Analysis - a la fxCop integrated right inside of visual studio.
- Check in Source control process policy, so a manager type can say “if you check in something, all tests must pass, all static analysis rules must pass, and your code coverage must be 100%“.
- Also showed was some Load testing stuff that is going to be better than Application Center Test - more on that later.
Of course whitehorse class modeling & SOA designer were showed quickly. Nothing new to announce yet on that front that wasn't covered at PDC....although the guy doing the demo kept saying “Services Oriented APPLICATION” designer. Is this new? Is he changing the acronym from Architecture?
Over the past few months, when I question how something works in the .NET Framework (or when somebody asks me).....I have been creating NUnit tests to verify the behaviour of some class and/or methods in the .NET Framework. Initially it is just to observe the behaviour or verify some assumptions, but by the time I'm finished, I usually inject various Assertions into my tests to tighten them up. These now serve as a test bed for me moving to a new version (or even old versions) of the .NET Framework. I can answer the question: Are any of my assumptions about how the 1.1 framework works broken in 1.2? 2.0? 9.0? etc.
I'm building up a nice collection and I might publish my work. But it struck me that this could be an open source project. In fact, I think it should be an open source project and I think it should be started by Microsoft....and not necessarily for the .NET Framework alone - but that would be an easy place to start.
Microsoft has faced increasing pressures over security and quality of their software - to the point that they've actually made windows source code available to key customers, governments and MVP's. I think that's a bit risky if you ask me. I think it is also a bit hypocritical to point the finger at Linux for being “more hackable because source code is available“ but at the same time make your own source code available to the chinese government.
But why not publish the source code to unit tests (say NUnit fixtures) in an open source format for the community to contribute to. When one of these security firms finds a hole in some MS software, they could create an NUnit test to expose it and submit it to Microsoft to fix, and then make the code for that NUnit test part of the open source project.
Instead of publishing source code, which is really meaningless to give people any kind of comfort in the code, publishing unit tests is publishing assumptions and expectations about what software is supposed to do and how it is supposed to behave. I would think this would become more important over time especially moving towards WinFx and Longhorn.
This is a new smart client reference application from Microsoft. Actually it was created by Vertigo for Microsoft - where Susan Warren now works (former Queen of ASP.NET). This is not a rewrite of TaskVision which is a common question. It was built to show off some advanced topics for Smart Client apps in conjunction with the recent DevDays events that have been going on in the U.S. but unfortunately haven't made it up to Canada due to some overloaded efforts going into VS Live.
You can download this from Microsoft although it's not the easiest thing to find.
Some of the interesting highlights:
- focus on security....some wrapped up DPAPI classes.
- Application Deployment and Updating
This app wasn't built with the recently released offline application block since the timing wasn't right - but nevertheless, a good fresh reference app worth looking at.