Working in Microsoft
May 20th, 2006
I’ve arrived to Redmond the last week. So far, it was a great week working in the Smart Client team from patterns & practices
We are implementing the Smart Client Software Factory and tackling common problems that happens when you develop Smart Client applications using CAB
- How to handle multiple modules (UI; Services; Layout) and use a new IModuleLoaderService, IModuleEnumerator written by Brad Wilson
- How to manage authentication, authorization, impersonation and roles
- How to handle multiple layouts for a single shell
- How to design for multiple Workitems
- How to share domain model objects on the workitem using ComponentDependency
- How to write a new Workspace, CommandsAdapters and UI Elements
- How to work with Databinding an MVP
- How to write a reusable presenter
- How to unit tests CAB applications
… and more stuff coming like loading on demand modules with ClickOnce, Profile Catalog in a central location, etc.
BTW, so far working with the team was a great experience and of course the new patterns & practices space rocks for collaborative teams!
SaaS: Realization of Metadata Services
May 7th, 2006
I’m in the early stages of writing my thesis about SaaS. As
part of this process I’m reading loads of SaaS content. Mainly, I’m monitoring Gianpaolo Carraro and Fred Chong blogs (from
the Microsoft Architect Strategy group) and a weekly SaaS newsletter.
SaaS is
in its infancy in terms of guidance and realization and as a result, my
thesis outline consists of analyzing the state of the art and fulfills the architectural
concepts by writing a reference implementation of Software as a Service using
Microsoft technologies (WinFx, ASP.Net 2, etc.).
Fred and Gianpaolo wrote a great paper that has been
published on MSDN about architectural
strategies for SaaS.
The paper starts by talking about the business value proposition of SaaS. Leveraging
economy of scale and selling for the long tail are really attractive concepts.
The other half of the paper examines architectural implications
when adopting this model: the SaaS maturity level, metadata services,
multi-tenant and scale out among other things.
This paper is a first approach on the subject and it introduces
concepts like Metadata Services which I found one of the key challenges
to fulfill in terms of guidance because it is a cross-cutting concern in SaaS
architectures.
The following is my first approach on how I would like to achieve
Metadata Services using the Microsoft stack.
I would like to make a special comment on “Extensions to
the data modelâ€. In the previous months we, at Southworks, customized extensively the
process template of VSTS
to fit our needs. This customization has been really straightforward and it
allowed tailoring our specific requirements not only for our SDLC but also on
other business processes. That proved us that XML succeeded as a metadata
language. The guys from VSTS did a great job by providing these metadata
services and I would like to explore more the intrinsic of it.
CAB: Use the Outlook Bar in your CAB applications
May 1st, 2006
UPDATE: I moved the code to codeplex. http://www.codeplex.com/cabextensions.
———-
A frecuently requested feature in the CAB community is a navigation control like Microsoft Outlook’s bar. Chris Holmes posted a few days ago a nice approach on how to achieve this using CAB:
In CAB Reference Implementation 2 (Global Bank Branch WorkBench), an IconTabWorkspace is introduced. The functionallity of the workspace is similar to Outlook’s bar, but it just displays icons (ToolStripButtons):
At Southworks, we liked both ideas and put them together to create an OutlookBarWorkSpace:
| OutlookBar workspace showing the Mails smartpart | Calendar module was selected and the smartpart has been shown |
| Use of the splitter | Show more/fewer buttons |
You can download it from here.
Usage
Use it as every CAB Workspace! Add SmartParts using:
- void Show(object smartPart) and having your SmartPart implement ISmartInfoProvider or
- void Show(object smartPart, ISmartPartInfo smartPartInfo)
But take into account that in both cases you have to provide an OutlookBarSmartPartInfo, which will contain needed information to create the buttons.
OutlookBarSmartPartInfo has the following members in addition to those included in the SmartPartInfo base class:
- Icon: bitmap to be displayed in the button.
- (Optional) ImageTransparentColor: transparent color on the item’s icon for images that support transparency
- (Optional) EventTopicName: EventTopic that will be raised when clicking the button. This is useful, for example, when you need to update another workspace (much like what MS Outlook does).
Apart from these members, the OutlookBarWorkspace uses the Title property to set the button’s text.
Disclaimer:
This code is provided "AS IS" with no warranties, and confers no rights.
Acknowledgments
- The implementation of the stack strip is based on a sample written by Joe Stegman
- Mariano Szklanny helped writing the workspace implementation
- The office icons might be used only if you have a valid Microsoft Office license