Providing WCF and WF Feedback to Microsoft

Perhaps known to a smaller portion of general community of WCF developers and WF developers, there is a Connection for WCF and Connection for WF that enable you, our customers, to submit bugs and feature suggestions.

As the focusing for Visual Studio 2010 and .NET Framework 4 turns to polish and final tweaks, the team’s thoughts start to turn towards the next versions of Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF). As we start to think about what to improve and where we should innovate, your feedback and suggestions are a core input to the process; and Connect is one of the best places for you to have your voice heard – and a place that is often overlooked by customers. I wanted to spend some time highlighting this feedback channel and encouraging you to head over and provide your suggestions as you think of them.

To jump into the fray and provide suggestions, use one of the links below and login. Once logged in, review the list of suggestions/bugs, and lend your voice to the list. You can either vote on existing feedback items (using the vote buttons), or add new ones (using the orange ’Submit Feedback’ button). Here are direct links to suggestion lists:

And, as a note, don’t let the ’Resolved’ status scare you from casting a vote. If you feel strongly about an item, cast a vote for it regardless of current status. Even if something is deemed as ’won’t fix’ or ’by design’ in the current release, knowing that there is a large number of developers that care about a topic helps us keep that item in the future.

What is Connect?

Microsoft Connect is the connection point between you and Microsoft. Microsoft teams host their TAPs (technology adoption programs) and betas on Connect (called ’Connections’ on the site), and allows you to provide bug submissions and feature suggestions to Microsoft teams. Almost all of the products have at least one Connection on the site; these Connections then link to back-end ALM (application lifecycle management) tools, which can be surfaced and triaged as part of the standard planning and servicing loops within Microsoft.

What can you do with Connect?

Each Connection on the Microsoft Connect portal provides different feedback opportunities (surveys, downloads for evaluation, and feedback/bug submission tools). Once you are registered with the Microsoft Connect site, you can participate within any of the Connections you have access to (any public Connection and any private Connections you have been invited/accepted into).

For the WCF Connection and the WF Connection, we ask for feedback on WCF and WF respectively. Here you can provide new feedback and you can also vote on existing feedback, voting them up or down. You can also provide additional comments on the feedback, adding your voice and clarifications on the topic.

Once you’ve provided feedback, it will be tracked and displayed on the ’Your Dashboard’ page of Microsoft Connect, letting you keep track of how your feedback is being taken by Microsoft.

What’s the Difference Between Feedback and Bugs?

There are two tabs in the feedback section of a Connection: ’Bugs’ and ’Suggestions’. In a nutshell, you use the ’Bug’ submission path if you feel that the existing feature isn’t operating the way it should, and use the ’Suggestion’ submission path if you feel that functionality is missing from the current feature set. The difference between a bug and feature is a debate that has raged on since the beginning of [programming] time – it is said that one man’s bug is another man’s featureand let’s leave this debate up to other websites. Either way, I encourage you to pick the one that you think fits best, and at least file the feedback. 🙂

While I’m on this topic, a quick mention of support mechanisms for WCF and WF developers. If you are encountering a real bug that is stopping you from doing work – I urge you to use one of the proper support channels (the MSDN forums or Microsoft Support Services). There isn’t a service level agreement (SLA) in place for feedback submitted via Connect, and you’re likely to get quite frustrated if you’re anxiously waiting for a Connect bug feedback entry to get serviced – while folks are working the Connect feedback queue, you’re likely to get much faster attention on the forums or Support Services.

How does Connect feedback get surfaced to the product group?

When you provide input via Connect, the feedback and bugs automatically get added to the Team Foundation Server (TFS) system here in Microsoft, to get worked on by folks here at Microsoft. Your bugs are worked by a dedicated servicing team, with immediate feedback to the Connect site, letting you know how your bug is resolved and providing suggested workarounds. Your feature suggestions are similarly triaged, giving you feedback on how the feedback is being taken (below is the ideal happy path for a bug/suggestion ^_^ ).

By voting for feedback provided, you can help let us know where you think our efforts should be placed. Most of our current feedback comes from depth customer interactions, chatting with you at events like TechEd and PDC, feedback related via your evangelists and account managers, and feedback in the forums. But even with these many input channels, this is only a small portion of the total developer audience that uses our technologies on a daily basis.

As you know, there is always more features and enhancements that need to be added than we have developers and time to throw at them. And, if there is sufficient interest/traffic on the Connect sites, we can even provide a leader board-style read-out here on the blog, letting you know where feature suggestions stand in the rankings. I would like to help provide greater transparency into how your input is used here in Redmond. 🙂 To help with this, the team recently reduced the effort required to provide feedback via the Connect sites. Last month, the site required a lot of registration information; now it only validates your name and email address (for follow-up should additional information be needed about your suggestion or bug).

I urge you to weigh in and help lend your voice to that decision process; it really is taken into account!

Have a great weekend; hope you’re enjoying the RC!
  – Cliff

C# REPL in Silverlight Soon Possible?

I was looking over some of the industry news this morning, and spotted this gem from Miguel de Icaza’s blog:

We are also porting our C# compiler to work with Microsoft’s Reflection.Emit to enable us to run our C# Interactive Shell in Silverlight applications and to allow .NET developers to embed our compiler in their applications to support C# Eval.

For those that typically shy away from penguins: Miguel is heavily involved in the Mono project. Mono is a project under the wing of Novell to create an EMCA-334/335 compliant implementation of C# and the CLI. The project includes much of the base class library found in the .NET framework, and also includes more project specific classes. The big selling points for me are binary compatibility with existing .NET assemblies, and availability on multiple platforms.

This is certainly exciting technology (just look at the reaction Anders received demoing very similar functionality at PDC2008). Now imagine that same type of experience in the browser (minus the Windows Form popping up out of no where, since no one likes pop-ups anyway). Imagine games that can be scripted in-play, or instantly extensible rich client applications.

Naturally there will be security considerations, and testing considerations, but for now it is what it is: fairly awesome.

Error Number: 102 Data type error

I know that there are many different reasons why you would be getting this error, but I wanted to document one way you can try to get the BTAHL7 DASM:

Error happened in body during parsing
Error # 1
Segment Id: GT1_Guarantor
Sequence Number: 1
Field Number: 51
Error Number: 102
Error Description: Data type error
Encoding System: HL7nnnn

The data looks like this:

|^NOT EMPLOYED|

The first sub element needs to be set to a max of 0 instead of blank (default 1)

As I discover other fixes I will update this entry

Videos www.Cloudcast.net

Hey, my ESB Toolkit videos have found a new home. They’ve made their way over to www.cloudcasts.net It’s a great community site dedicated to hosting webcasts concerning Microsoft technologies. Run by the very prolific webcaster Alan Smith, this site has a ton of great webcasts concerning a number of different technologies. Check it out if you haven’t seen it yet.

Cheers

Peter

Join the New QuickLearn Technical Community!

Visit the new QuickLearn Community Portal to get breaking news and access our free learning resources for BizTalk, SharePoint, .NET 4.0, and Microsoft Virtualization!

Join the community portal to:

  • Connect with QuickLearn instructors and your peers.
  • Subscribe to the newly redesigned QuickLearn Team Blog to find enlightening blog articles from our team of technologists. 
  • Explore the brand-new QuickLearn Technical Library which contains a compilation of technical articles, useful links, and other relevant content to jumpstart your knowledge or dill-down on emerging technologies.
  • View Screencasts created by QuickLearn Technologists to highlight their favorite features of emerging Microsoft Technologies.

Happy Browsing!

Dallas TechFest 2010 – Call For Speakers

I’m thrilled to announce that Dallas TechFest 2010 has set a date of July 30th, 2010 and is currently engaged in a Call For Speakers looking for those in all sorts of technology areas who wish to speak.  If you’ve got expertise in .NET, Java, Ruby, PHP, ColdFusion, Python, Flex or anything else then send in an abstract and see if you can secure a speaking slot at Dallas TechFest 2010.

Sometime in March we will be opening registration, but in the meantime mark the date on your calendar, and get ready for our registration drive.  Like in previous years, if you recommend people to register you will be entered to win a great prize.  What prize? Hmmm.  Well it’s got a touch screen, a 3G modem, and a huge app store.

WCF Http And Non-Http Calls hosted in the same Asp.Net Application (IIS7)

You may want to consider the following issue if you plan on hosting your WCF endpoints in IIS. Consider an ASP.NET application which makes both http and non-http (netNamedPipeBinding or netTcpBinding) WCF calls. If the ASP.NET application is restarted, then a 500.21 error will occur if the very first call is a non-http call.

Why does this happen? ASP.Net is heavily dependent on IIS7 where IIS7 calls into ASP.Net and gives ASP.Net the chance to initialize its applications in either Classic or Integrated mode.  There is no way for ASP.Net to know which mode it is in, other than which entry point IIS7 calls into.  So when applications use non-HTTP WAS methods to start app domains and do things without giving IIS7 a chance to initialize ASP.Net, then ASP.Net has to guess.  When ASP.Net knows it is hosted by IIS7, it uses that knowledge to assume it should do Integrated mode initialization.  In other places ASP.Net doesn’t know if it is hosted by IIS7 and decides to initialize a ‘classic’ runtime.  There’s just no way for ASP.Net to know for sure what to do when it is being non-HTTP activated.

In this particular case, the WCF web service executes and then raises a web event on a background thread.  When the configured web event providers try to process the event, the TemplatedMailWebEventProvider creates an internal HttpRequest and tries to execute it and use the output as the email template.  Of course, without having gone through HTTP activation yet, ASP.Net isn’t quite initialized.  When it goes through init code, it initializes the HttpRuntime in a ‘Classic’ style, and it stays that way for the lifetime of the application.  When later HTTP requests come through, the requests are processed by the integrated pipeline, but with a classic StepManager, which results in confusion and failed requests and AV’s.

Unfortunately, ASP.Net can do nothing here since Webhost/WAS doesn’t notify ASP.Net to start an application unless the request is over HTTP. (Thanks to Steve Molloy for his insights)

RESOLUTION

In the specific case:

If you use TemplatedMailWebEventProvider.  use SimpleMailWebEventProvider instead if you must have email alerts for events.

Or, if you need to make the email pretty or fit a special format, you can extend System.Web.Management.MailWebEventProvider to provide that functionality without too much extra effort.

In the general case, you can resolve this issue with the following:

Split the application in two so that http calls are in one and non-http calls are in the other application.

Create a secondary application that can be called from the main application. This requires .NET 4.0 where the location tag can be used in the following scenario. Create two web applications where all the http calls are in the main application and the non-http calls are in the secondary application. In the main application’s web.config file, use a location tag to locate the second application that houses non-http endpoints.

An article based on this issue can be found at this link: http://support.microsoft.com/?kbid=2018968

Understanding Extenders in the Itinerary Designer

I was lurking around the ESB Toolkit forums yesterday, and got involved in an exchange with someone who was hitting the same roadblock to the Itinerary Designer that a lot of people hit: confusion with the model elements and extenders. Upon my first exposure to the Itinerary Designer it took me a week to get over the learning curve of this, and to understand why every send operation seemingly involved two off-ramp shapes instead of one.

Now in the case of that thread, the problem was actually not having a properly formatted SOAP request for the service that was going to be invoked (also a fairly common issue), but getting to the actual issue took cutting through some of the confusing bits of how the itinerary services themselves are implemented, and what they do.

That being said, I took some time last night to write up an article on the different model elements in the itinerary designer, their extenders, and how they can be used to compose an itinerary. You can access the article here: Making Sense of Model Elements and Extenders in the Itinerary Designer

Side note: The article is now part of the brand new (and still under-construction) QuickLearn Technical Library, which will soon contain many more similar articles and links to technical resources for all of the technologies about which QuickLearn teaches.

That’s all for now!

Four New BizTalk Server ESB Toolkit Webcasts

Peter Kelcey has been kind enough to let me host his “How to” webcast series on the BizTalk Server SEB Toolkit on CloudCasts.
ESB Toolkit How To 1: Dynamic Routing and Endpoint Resolution
ESB Toolkit How To 2: Dynamic Mapping and Service Composition
ESB Toolkit How To 3: Itinerary Resolution in the ESB
ESB Toolkit How To 4: Dynamic Itinerary Resolution
The ESB toolkit videos are getting very popular, so I’ve given them their own section.