It's not quite the end of January, but there's already alot of "new" in my new year. There's a new car, some new gadgets, and on the work front a new project and a new team.
As you may have heard, Charles Fitzgerald, left Microsoft to head to a startup. Charles was the GM that my old team, platform incubation, reported into. Charles set the mission for that team, and was the major stakeholder for Tafiti and several other internal facing projects that I worked on. Charles was a great GM, and while this is a loss for MS, I'm confident we haven't heard the last of him.
With Charles' departure, Scott and I will be moving to different roles in the company. I am happy to report that I am now officially part of Simon Guest's team.
One of the few negatives about my last role in incubation was that it was inherently secretive, as parts of the work could be patented. As a result, after delivering my book on CardSpace I mostly dropped off the public scene, save for promoting Tafiti. With Simon's team having a key focus on talking about architecture with the broader community, this is something that will change, and you'll see me engaging more publicly on architecture related subjects. Simon's team has a big focus on Software+Services, which if you've read the blog for awhile know is something I've been looking at for some time in and outside of Microsoft. Expect to see me blogging more, podcasting/screencasting more, and writing the odd article or two. (No more books for awhile, though. Having written or co-written 3 books in 2 years, I've committed to my wife not to start another one until 2009)
I also mentioned there's a new project. I'll be carrying over a project with me from incubation to Simon's team as well. Nothing I can share at the moment, other than it will be public focused and it's going to be a key focus for me for a good portion of 2008.
While this project is big, there's another project I'll be working on that's even bigger. This is a longer term project, estimated to last decades with a budget estimated to be in the seven figures. Oh, and it has nothing to do with software. My wife and I are expected our first child, a son, to literally arrive any day now. While there's alot of great 'new's in 2008 already, this will surely be the best.
Here's hoping your 2008 is going well, and I look forward to engaging with the community more broadly once again. If there's anything you'd like to see me engage on - be it in blog, article, or podcast, let me know. As always, I can be reached at mmercuri@microsoft.com
RSS. Really Simple Syndication. Great for identifying your available content, great for sharing content that can be consumed by aggregators and readers.
What it's not great at is providing a monetization model. Sure you can use ads on your website, but I think there's a better way.
I put together a screen cast that talks about syndication and the opportunity to leverage information cards and CardSpace to monetize RSS and OPML.
Watch it by clicking on the link below.
http://www.marcmercuri.com/downloads/MonetizingRssWithInformationCards.wmv
In case you missed it, Microsoft just released some great new downloads, specifically new versions of VS 2008, Silverlight, and Expression Blend.
As someone who started writing what are now called AJAX apps since 2000, I *really* appreciate how Silverlight and Blend make RIAs much easier to develop.
Links to all the bits-
After a very long hiatus, I am very happy to report my return to regular blogging. The book is now done, some of my major projects are either completed or winding down, and I'll have time to write, post and add screencasts.
So what have I been doing for the past year? Last summer, I took on a new role as an Architect in DPE Platform Incubation Team. I've spent the last year working on solving difficult problems and working on interesting projects. This has hands down been my most intellectually rewarding year in the company. While you won't hear publicly about alot of my work, there are some things I've contributed to that have been entering the public view recently.
I've been doing alot of work with teams in the company doing mashups and mashup events. Last December I wrote 5 'blocks' for a product we had in development that's now been launched over at http://www.popfly.com. I believe it's still on an invite only basis. If you've been on the site, you know it's pretty cool stuff. If you haven't, I believe it's still in an 'invite only' mode. If it is, let me know, as I've got a couple of invites I can share.
In addition, I ended up modifying the dasBlog engine and starting another site. That site http://www.mashupguy.com, is something you may have seen at various conferences this year. I wrote a number of labs that show how to work with various Live APIs, checked out a number of third party services, found some videos, and brought them altogether on that site. It's been used as a resource for everything from the MVP Summit to Mix07 to the Web2Open at O'Reilly's Web 2.0 Conference earlier this year. I've been pretty quiet about the site outside of those events, and plan to migrate it over to silverlight when I get back from Europe later this summer.
I also had a chance to do some work with the folks over at Windows Live and worked with Koji Kato to get LiveInABox published. Specifically, I wrote some workflow activities that wrapped Live Expo and Live Search and generated an aggregate RSS feed and RSS client for them. In addition to being on CodePlex, we've managed to get VPCs hosted in the cloud for folks to try out.
I did have a chance to work with another one of our online properties as well, and expect to see some impact from one of our projects before the year is out.
In addition to cutting back on blogging, I also cut back my public speaking engagements this year, with just one exception. I had worked with the great folks over at Dollar Thrifty Auto Group last year and one of their architects asked if I'd be interested in coming to deliver a keynote at the Tulsa code camp, so I flew out to Tulsa for the day (an interesting route from Seattle) and had a chance to talk about CardSpace. For private speaking engagements, I was pretty engaged at a number of our internal events, and recently was interviewed for some of our internal videos for Engineering Excellence and Innovation.
My largest project, you won't hear anything about anytime soon, but I was honored to find out recently that I was nominated for 2 awards for it, Microsoft's Circle of Excellence Award and the Customer Partner Experience Award.
And then there's the book... with my change in role last year, I ended up spending much more time outside the office working on the research and writing of the book. The book, initially targeted for March, was pushed to June when content grew from the 300 pages I committed to, to almost twice that. Expect to hear (and see) more about the book over the next week or so.
So blogging will resume starting today, the blog will likely go through a site redesign later in the month, using the new template I created for mashupguy.com, and I'll be expanding the scope beyond framework 3.0, where things have been for the past year and a half or so.
Glad to be back, and happy to have you reading,
Marc
Chapter Three of my upcoming book focuses on the work being done with information cards and in the identity metasystem by people outside of Microsoft. The chapter covers third parties and open source projects, focusing primarily on the folks building identity selectors and security token servers. In the process of researching that chapter, I ,of course, ran across the work of Chuck Mortimore. If not famliar with his work, Chuck has built out a Java Relying Party, an identity selector plug-in for FireFox, and his site ( http://www.xmldap.org) issues managed cards. His identity selector has even been enhanced to handle interop with OpenID (see screenshot below).
Needless to say, I was impressed with his work, and reached out to him about including screenshots of his work in that chapter. He was very gracious and gave his approval. As I was wrapping up the book, one of the readers of this blog asked if we were going to have support for Java in the book. Initially, for relying parties, I'd only committed to the publisher for ASP.NET and PHP. In the pre-.NET world, I actually was an early adopter of Java (heck, I even hired Gary Cornell, of Core Java fame, to come to Boston and train my team on Java), so I thought what the hell, and decided to have a go at it. As I was dusting off my core-java books to write the sample, I thought to myself, if I was a java guy, who would I want a sample from? A Microsoft guy who hasn't written any Java code in awhile? Probably not 
I thought of who - if I was a reader - I'd like to see the Java sample come from. A big fan of his work over at xmldap.org, I reached out to Chuck and asked if he'd be interested in contributing a java sample for the chapter. I am really pleased to announce that not only did he agree, he's already sent me the code. If you've not done so already, definately check out his site, he's doing some great work.

I'm pleased to announce that my book now has a new technical editor, Steven Woodward. Steven leads the Identity and Access Management team in Microsoft's Developer & Platform Evangelism Group. Steve works very closely with our top customers looking at the adoption of Information Cards and Windows CardSpace, and he's a regular fixture at a number of major conferences. I had the good fortune to work with Steven last year when we were both members of the Windows Server evangelism team, and am super excited to have Steve onboard.
He's provided some great insights and comments that have already added value to the book.
Welcome Steven!
Just about a year or so ago, I was down in Tulsa working with the good folks at Dollar Thrifty Auto Group, who were doing some great stuff with WF and WCF. If it sounds familiar, I chatted about what they were doing in an ARCast wit Ron Jacobs, and Ron also did an interview with them from Tulsa. (both recordings are available over on http://channel9.msdn.com or http://www.skyscrapr.net.)
Earlier in the week I was talking to Jim Arrowood, a friend and architect at Dollar, and he asked how I'd like a free trip to Tulsa. A s I told him, there are no free lunches in life, and I'm sure no free trips to Tulsa. It turns out there's a CodeCamp event coming up (http://www.tulsacodecamp.com) and was curious if I might be interested in speaking.
A couple hours later I had a ticket to Tulsa and was slotted in for two sessions, an hour in the afternoon and the closing keynote.
I'm looking forward to it, as codecamp is focused much more on code. Last year ,when I was speaking at events, I had to spend a good amount of my sessions doing intro stuff. With the framework having been released for awhile now, I'll be able to dive right in and show some cool stuff I've been working on. If you've seen my previous sessions, expect all new content for this.
The timing of the event is literally days before the release of the updated WCF: Unleashed and I should be wrapping up the Understanding CardSpace and Information Cards book.
If you're going to be in Tulsa and there are particular aspects you're interested in, let me know and we'll see if we can squeeze it into the sessions.
Going through my email this morning, I received my official Mix07 confirmation. Last year, I had a number of customer commitments so was really not in the loop on Mix, this year, though, I've had some overlap with some of the things I've been working on and have had a chance to get involved in various aspects of the event.
Earlier this year I went to another web conference(which shall remain nameless), and was so dissapointed I left the conference (and Vegas) a day early. (Me, leaving Vegas early? unheard of, I know).
Mix, though, is a different story. From what I've seen of the sessions, this is actually an event I'd pay out of pocket to go to. It's got a good mix of folks from MS, as well as from third parties. I may or may not be delivering a session, that's something that'll get decided in the next month or so, but will be onsite either working in certain areas of the event, or attending sessions.
One of the great things about conferences is that I get a chance to meet up with former colleagues and people I've chatted with via email and blogs. If you're going to be in Vegas the 29th - 2nd and want to chat about WCF, CardSpace, Mashups, or whatever - shoot me an email and we'll make some plans to sync up.

The other day, I realized I'd never tried to publish a state machine workflow as as web service. These are more interesting than your standard sequential workflows, as you can have multiple service operations that interact with the workflow over an extended period of time.
I added my web service inputs and outputs, and then published the state machine as a service.
It worked... eventually. I ran into two gotchas one tied to the delay activity the other with IIS7 and proxy servers. After some research, I resolved both. A colleague suggested I write them up for my blog, so here we go...
I wont get into the details of the workflow itself, but here are the high level pieces of information you'd need to know:
The workflow has multiple states, State A is the only state that activates the workflow. Upon receipt of a web service request, the workflow returns a response and transitions to State B StateB is triggered by a delay/timer, and pulls down an XML document from a URL.
Handling Delays in IIS
First, if you want to use state machines in IIS7 and use delay objects, you’ll need to modify web.config to use the ManualWorkflowSchedulerService and the element for that should set the attribute useActiveTimers to true.
The DefaultWorkflowSchedulerService creates threads for every instance. This is not a desirable situation on ASP.NET. Instead, you use the ManualWorkflowSchedulerService allows the thread that is processing the HTTP request to execute a workflow instance. The ManualWorkflowSchedulerService creates a background thread that can monitor delays/timers. Setting useActiveTimers to true enabled this functionality.
<WorkflowRuntime Name="WorkflowServiceContainer">
<Services>
<!--<add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>-->
<add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" useActiveTimers="true"/>
<add type="System.Workflow.Runtime.Hosting.DefaultWorkflowCommitWorkBatchService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</Services>
</WorkflowRuntime>
Handling Delays in IIS
Make this change, and your delays will trigger just fine. What came up next was a bit more interesting. Running a workflow inside the debugging web server that ships with Visual Studio (the one that runs when you hit F5), my workflow retrieved the XmlDocument from the web just fine.
Putting it into IIS7, and it came back with nothing. After adding some logging, I was seeing that the remote servers domain name could not be resolved. So I both pinged it and tried it again in my VS web server. Both worked fine. Switched to the IP address, and 'remote server could not be found'. As it turns out, it was a proxy issue.
Why? IIS7 is not running as a user (the VS Web Server is), so it doesn’t automatically connect with the proxy. You need to add a reference in web.config that points to the proxy. Add the following:
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "False"
proxyaddress="http://yourproxyserver.com:80"
bypassonlocal="True"
/>
</defaultProxy>
</system.net>
Once done, your calls will now work.
When the first version of the WCF book was posted up on Amazon for pre-sale, the title was different than agreed to and there were some concerns about the editorial text. They were shortly fixed, and the real title 'Windows Communication Foundation: Hands On (Beta Edition)' and appropriate text was posted.
A few weeks back, I announced that Windows Communication Foundation: Hands On (Beta Edition) was being renamed (and over 200 pages added) as Windows Communication Foundation: Unleashed.
I've been talking for awhile now about a book I've been working on related to CardSpace and information cards. Like with the first book, the title posted to Amazon was different than what I'd initially agreed to do and the 'about the author' was written when I proposed the book (while working on another team at MS) last year.
Thus, I've not really said much about it, other than referring to it as the 'CardSpace book'. CardSpace is the client-side technology that provides the identity selector and personal sts. While the book covers CardSpace, a large focus is also on the information cards used there. From creating cards, to consuming cards on the web, integrating card-support into ASP.NET membership, consuming cards or requesting them via services, to a simple card issuance system, the book is more than just CardSpace. Fortunately, after talking with my publisher, we've reached an agreement on the new title "Beginning CardSpace and Information Cards: From Novice to Professional".
This book was written by a guy who buys alot of books, and the structure of the book reflects that. When I buy a book, I'm either
(a) Investigating - I'm interested in a high level overview and examination of a technology, the rationale for that technology and the competitive landscape. Ideally, this is at a level where the content is accessible to my team - be they architect, dev, or manager.
(b) Topic Learn By Doing - Just as with the 'Hands On' book, I think there's value in not just reading and then doing simple samples. Let me roll up my sleeves and do some coding and learn by doing.
(c) Prototype Acquisition - A book may have a functional prototype of something (i.e. workflow activities for card creation) that I either want for a demo or to build for real. For $30-$50, the book is a steal to get that.
So that's what I wrote. It's been a long process, but it's due out in April. While the title's not updated on Amazon yet, it is now available for pre-order here: http://www.amazon.com/Beginning-Windows-CardSpace-Novice-Professional/dp/1590598075/sr=8-1/qid=1170952106/ref=pd_bbs_sr_1/103-5507602-4763836?ie=UTF8&s=books
Between some exciting day job work, updating WCF content for the WCF Unleashed book, and writing 15 chapters for the CardSpace book (this time as a sole author) things have been pretty hectic. Mix in the storm that flooded the first floor of the house, and it got even crazier.
The blog has been fairly dark for awhile, but that's about to change. In a few weeks, the CardSpace book will be handed in, and I can start focusing on other activities. In addition to weekly updates here, I'm also going to be starting a sister blog to this one, more details on that in the weeks to come.
So what's coming? Lots of stuff.
Like what?
I talked with the good folks at APress (my publisher for the CardSpace book), and I'm going to be able to release some of my code from the CardSpace book early, and put it into CodePlex. This will include ASP.NET controls that integrate with membership. This will also include Windows Workflow Foundation activities and some utilities for creating managed cards. These will hopefully be in CodePlex, which will include source, so you'll be able to get source and enhance them as you need to. I need to stress that these are from my book written as my 'night job', these are not official controls from Microsoft and should not be viewed as such.
I've actually been pretty busy on some other stuff during the day, and we're looking at what we can release of that (unrelated to CardSpace) to CodePlex as well.
Plus.. I've written about 6 labs in the past couple of days for an internal event. I'm looking to release those as well, likely with the launch of the sister blog to this one.
Oh, and some InfoCenter Controls may just find there way into CodePlex as well (and if not, I'll release them as binaries from my blog). And I might just include a reference app that shows how to snag podcasts for your Zune 
Mercuri's "Services SLA Paradox"
Paid services haven't taken off because there aren't SLAs from Service Providers. There aren't SLAs from Service Providers because people aren't paying for services.
-----------------------
When someone gives you something for free, they have no obligation to you and you have no recourse if something goes wrong. When I was a student, if I was moving to a new apartment, my friends would would help me pack up my old place, load the truck, and unload it at my new apartment. Sometimes people would show up late, sometimes things would get broken, but hey, they were doing me a favor, so I had no room to complain.
When I move now, I hire a moving company. Why? Because my time is more valuable to me than it was 15 years ago, and I also have much more expensive stuff. If I was scheduled to move out of a house on the 31st, and the mover's truck broke down, I'd want to make sure the company could swap in another truck from their lot. If my $4,000 television is dropped, I want someone who's insured and who's going to make it right.
Today, we have a number of people giving away services - Google, Yahoo, Flickr, Amazon, StrikeIron, etc. While there are exceptions like Amazon and StrikeIron that are doing some good work in the utility services space, where they're doing metered usage, I've had a hard time finding SLAs anywhere else. People are doing interesting mash-ups with 'free stuff', but is anyone willing to put free stuff in their application for any key piece of functionality? If you do, and you don't have SLAs, you're a gambler, and for your sake, I hope you're very lucky.
At the Web Builder 2.0 conference held earlier in the month, Day 1's keynote had a speaker who talked about Ajax and mashups, using his company's product as an example. At the end of the presentation, he opened up the floor for Q&A, at which point I asked him two questions - "what about SLAs" and "what about federated identity". The answers?
SLAs: These services are free, so there are no SLAs.
Identity: These services (Yahoo) are free, so that's not an issue.
I find it amazing that people don't pro-actively address the SLA and Identity issues, and I find it borderline irresponsible that 'experts' ignore or wave off these questions when raised. The need for SLAs should not be such a surprise, people who've spent time looking at the space at this have written about it, myself having done so back in 2001 ("14 Best Practices for Selecting a Web Service Provider", 2001, .NET Magazine, Fawcette) Yes, it's cool to include maps, search, and images in my application but if the service code go down - or disappear entirely - at any time, for many scenarios they're a non-option.
If you want to use services for anything real - and by real I mean something you'd use in a key area of an Enterprise or Commercial Software/WebSite - you need to have a Service Level Agreement. Using a service effectively moves a third party from being a vendor to being a business partner. The service provider controls the hardware, the bandwidth, the support, etc. but the service interactions are exposed through your application, with your brand, and your reputation attached to it.
With today's lack of SLAs, if the service goes down for an hour on Thursday, it goes down for an hour on Thursday. Moreover, there's no guarantee that the service is going to be around for a week, a month, a year, etc. Google just announced (http://news.com.com/2061-10812_3-6145053.html) that they're no longer taking on new customers for the SOAP API they'd been offering. They're moving new customers to an AJAX API. If you were evaluating this and building this functionality into a spec for a smart client application you were developing, and now it's gone, sorry charlie. What were you expecting? You're not paying for it, so you can't complain. Without an SLA, no promises are ever made made by the provider, so there are no promises to break.
My argument is that SLAs are late to the game, because people aren't paying for services and people aren't paying for services because there are no SLA's. Something I've shamelessly named 'Mercuri's Services SLA Paradox'. There are some positive movements in the right direction - Amazon and StrikeIron come to mind - but they are definately the exception and not the rule.
If you're like me, you'd like to be able to leverage and mashup services that you can depend on. If we collectively don't stand up and insist on these, we're stifling innovation. I challenge you to ask the providers - at conferences, in forums, online and in person - "What is your SLA for your services and what will it take/cost for you to offer me this service in a dependable fashion?"
As you're likely aware, we've had a new RC1 release of Vista, and along with it a RC1 release of .NET Framework 3.0.
I've gone ahead an updated the code for several chapters from the book WCF: Hands On to be compatibile with RC1 changes
You can find the code for Chapter 9 on Custom Behaviors here:
09PerBook.zip (98.58 KB)
As you're likely aware, we've had a new RC1 release of Vista, and along with it a RC1 release of .NET Framework 3.0.
I've gone ahead an updated the code for several chapters from the book WCF: Hands On to be compatibile with RC1 changes
You can find the code for Chapter 6 on Legacy Integration. In addition to ComPlus and MSMQ which were in the book, I've also added another sample that shows how to call WCF from COM. This allows you to empower legacy applications written in Visual Basic, vbscript, Lotus Notes to now consume WCF services.
You can find the updated samples here: Chapter6Code.zip (350.48 KB)
The WCF Hands On book started off as WCF Labs for last years PDC. We started writing it last year, when the docs were pretty sparse in places (as one would expect).
I haven't spent alot of time in the help file until this morning. I'm updating the chapter of the book that deals with COM Interop and needed to double-check something. I shouldn't have been surprised as we're much closer to RTM, but it was *much* more complete and has lots of good info and downloadable samples. There If you haven't look at the doc (or the samples) lately, I'd definately recommend revisiting them - there's also a good POX sample in the RC1 drop as well.
If you want the absolute latest public drop of docs, there was one made on September 15th. It's posted over on netfx3, check it out here:
http://wcf.netfx3.com/files/folders/product_team/entry5854.aspx
As you're likely aware, we've had a new RC1 release of Vista, and along with it a RC1 release of .NET Framework 3.0.
I've gone ahead an updated the code for several chapters from the book WCF: Hands On to be compatibile with RC1 changes
You can find the code for Chapter 5 on Reliable Sessions, Transactions, and Queues here:
05CodeRC1.zip (226.14 KB)
As you're likely aware, we've had a new RC1 release of Vista, and along with it a RC1 release of .NET Framework 3.0.
I've gone ahead an updated the code for several chapters from the book WCF: Hands On to be compatibile with RC1 changes
You can find the code for Chapter 7 on interoperability here:
Code.zip (295.39 KB)
If you've read the blog for awhile, you'll know that I moved over to the incubation team in Microsoft's Platform Strategy Group back in August.
My old team is still looking for my replacement, and they're now expanding their search. if you're passionate about CardSpace, Windows Communication Foundation, and Workflow Foundation and working with large Enterprise customers you might be interested in this.
In addition to working with some great technologies, you'll be surrounded by a great group of folks on the Longhorn Server evangelism team, many of whom are authors (or authoring) books on .NETFX 3 or other topics.
James has the full scoop on his blog, check out the link below for details:
http://blogs.msdn.com/jamescon/archive/2006/09/19/761696.aspx
|
Twice a year, Microsoft hosts an internal technical readiness event called TechReady. TechReady3 is upon us, and I'll be hosting a couple of sessions. Both a session covering the scenarios where I'm seeing top customers use these technologies, as well as a set of instructor led labs that serve as a walk-through of WCF.
Details are below - some information was excluded ,such as customer names, as several of them are still confidential and will be announced when the technologies launch later this year.
ARC201 - WCF and WF in the Fortune 500: Lessons Learned During Enterprise GO Engagements (Solutions Architect) |
July 25, 2:30 PM - 3:45 PM Hyatt-Leonessa I & II
|
|
As part of Enterprise GO, Marc worked with a number of Fortune 500 companies to incorporate WCF, WF, and Infocard into their solutions. Customers included [not shown here as some are MS confidential, full list in the schedule guide) This session reviews the scenarios in which the technologies were employed, lessons learned, and design decisions made.
| CONIL203 - Understanding Windows Communication Foundation in a Solution |
July 26, 11:00 AM - 12:15 PM WSCTC-602-604
|
| In this lab you will witness the unified distributed programming model of Windows Communication Foundation. The exercises will walk you through creating and deploying a service and client as well as examining the management and monitoring capabilities of Windows Communication Foundation. Finally, the exercises will introduce you to the security and hosting capabilities available for your services. |
| CONIL203R - Understanding Windows Communication Foundation in a Solution |
July 26, 1:45 PM - 3:00 PM WSCTC-602-604
|
| In this lab you will witness the unified distributed programming model of Windows Communication Foundation. The exercises will walk you through creating and deploying a service and client as well as examining the management and monitoring capabilities of Windows Communication Foundation. Finally, the exercises will introduce you to the security and hosting capabilities available for your services. | |
I've gone ahead and updated the sample for Chapter 9 - Custom Behaviors.
Rather than just do a straight port, I looked at the sample and recognized there were some opportunities to make it more interesting for the reader. I've made some changes and additions, which I think you will find beneficial -
Changed this to an EndpointBehavior. This is a more common scenario, and I think you'll find it more valuable.
Added code that shows how to add support for behaviors in the Config file. Note that this is accomplished through a combination of the code in AuditBehavior.AuditBehaviorSection.cs, by adding the behaviorExtensions section in the Service app.config, by specifying a behaviorConfiguration attribute on the endpoint element, and by defining that endpoint in the endpointBehaviors sections.
Use the behavior via configuration (service) and via code (client)
Added significant Console.Write comments so you can see exactly what is happening in which part of the code (i.e. the behavior, message inspector, etc.)
Consolidated all behavior related classes (including message inspectors) to a single project for greater clarity.
I've renamed the projects so there is no question which project is the service, which is the audit recording service, and which is the audit behavior class.
For querying the meta-data of a service, you must now explicitly do several things - add an endpoint for mex, add a behavior, and reference the behavior on the service via an attribute in the configuration file. These changes are also reflected in this sample. 09.zip (98.58 KB)
If you're working with the latest CTP, you may have noticed that InstanceContextMode.Shareable was removed from the InstanceContextMode enumeration.
You can still achieve this same functionality through extensibility. While the sample is being updated, I wanted to point out Maheshwar Jayaraman's blog. Maheshware is in the product group, and provides more information here:
http://blogs.msdn.com/mahjayar/archive/2006/07/08/660176.aspx
There were changes in the later CTPs that affected the code for Chapter 5.
InstanceContextMode.Shareable has been cut. As two of the three excercises here leverage shareable instancing, I am currently talking with the product team about a workaround they have using extensibility.
In the interim, I have updated the first exercise which deals with MSMQ. One thing that is different here is that binding on the sample was changed in the config files as based on Active Directory configurations, people were having challenges with the default binding. The sample in it's current state is should work regardless of configuration.
Also, for the service definition in the configuration file, the type attribute is now changed to name.
For querying the meta-data of a service, you must now explicitly do several things - add an endpoint for mex, add a behavior, and reference the behavior on the service via an attribute
05-PartI.zip (55.21 KB)
This is the updated code for Chapter 7. I will post a doc that covers the specific changes that were made.
The key changes here were very straightforward, and primarily were focused on the following -
For the service definition in the configuration file, the type attribute is now changed to name.
For querying the meta-data of a service, you must now explicitly do several things - add an endpoint for mex, add a behavior, and reference the behavior on the service via an attribute.
07.zip (322.66 KB)
I've had a couple of people ask me recently 'Why is the book using the January CTP bits and not the Feb/May/June/July CTP?"
If you're on one of the latest builds, I can imagine waiting for a new code update could be a bit annoying. I wanted to share that I've actually taken a couple days off of work to update and test the the code for the samples I wrote, and I've almost got everything moved over such that they're running fine on the June and July CTP bits. Expect them to be posted here tomorrow.
I also feel it's important to provide some insight into how that decision was made to go with the January CTP.
One of the great things about Microsoft is that they’re providing broad access to bits much earlier in the lifecycle, with regular refreshes via Community Technology Previews. For WCF, Microsoft is releasing drops in CTP form roughly every 1 – 1.5 months. As the product is still in development, the object model has changes each month based on customer feedback (moreso back in November, less so now). Now, of those monthly drops, only a small subset of them are actually allowable for use in production using a ‘go live’ license (per the end user license agreement).
There are distinct differences between a CTP that is licensed to ‘go live’ and one that is not. Testing for a ‘Go Live’ release is at a much higher quality bar than a non-Go Live release. The benefit for developers is that they can continue to develop and take advantage of the interim changes much more quickly than in years past (whereas historically, you may have hit a stopping point that of 6 months between a release of a Beta1 and a Beta2) The January CTP ,on which the released code was tested, was the last version that was approved to go into production with a ‘Go Live’ license. The interim drop that followed (February) was not available for Go Live. Based on the information we had, we went with the January CTP, with a commitment to update it – which we’re doing now.
I think you'll find of the authors who've written Beta books, Craig, Nigel, and I are probably the most eager to get updates for the new CTPs out there.
|