Busy, busy
Whew! I’ve been busy as hell at work lately, which means I get home and the last thing I want to do is sit down at my computer and write. On top of my own project work, I’ve been helping others get up to speed, as well as other random stuff I’ve been tasked with.
My project at work is a pretty damn cool one though. I’m converting an asp.net application into a Windows Forms application for one of our clients, using .net 2.0 deploying the app using ClickOnce. This was an internal web site, so the deployment piece isn’t a huge deal, but its cool to be using the newest technologies, and I’m learning a ton about how databinding works in WinForms 2.0.
I got approval to use the Composite UI Application block to develop the application, so I furiously researched the CAB and did some of the hands-on labs and whatnot. Doing the labs really helps you understand how the CAB works, as it can be pretty tough to wrap your mind around it. I still don’t fully understand it, as I started developing the project, my code slowly morphed into a simpler MVP pattern, with only views and controllers, leaving the WorkItems to not really do much at all. I’m still developing the modules as separate class libaries so that me and the others on the team can develop the modules independantly of each other, and I’m still using the CAB to dynamically load the interfaces into the workspaces at runtime, but I know that I’m not using the CAB to its full power.
The real benefit to the CAB seems to be that you can dynamically swap out interfaces, but I don’t really need that functionality, as the interfaces will always be a pre-defined set. I am using this feature to swap out whole interfaces based on the user role (Admin, User, Guest, etc.) which makes it a lot easier to do authorization, because in my Admin views I can load all the info I want, in the User views, I only interact with data that is authorized for User’s; so rather than have a bunch of code that is always checking the role of the person who’s logged in, I can simply do the check once, load the appropriate interface, and that it. Very slick.