Indigo
First, to all of you that attended my HDC presentation on Software Factories, THANK YOU! I hope that as promised, the "Ah, Ha!" factor was high. Also, I would like to apologize for the issues I ran into with the VPC and the demos. I had tried the demo before with only two VS2005 instances running and had no issues with it...Apparently, four instances of VS2005 running concurrently is too much for VPC. Right after my presentation, I confirmed with Steve Loethen, a co-host of Code To Live, about coming up with the webcast series on Software Factories. I still to work out...
Ok, so I've just posted my current non-technical reading list so now here's my techinical currently-reading list:
Programming Ruby: The Pragmatic Programmers' Guide, Second Edition - Dave Thomas, Chad Fowler and Andy Hunt
I've been playing around with Ruby for quite some time now but I need a good reference book for it. What other book to read than main source of Ruby knowledge out there! After the announcement of the DLR (which I've downloaded already), I can't wait to do more of Ruby natively on .NET!
Programming WCF Services - Juval Lowy
Another great master work by Juval. If you're currently doing WCF...
I've been meaning to blog about this for a while, but for some reason I keep forgetting (sorry, I've been busy at work). If you're wondering on how WCF compares performance wise to existing distributed communication technologies (ASMX, WSE, Enterprise Services, .NET Remoting) you should definitely check out this white paper on MSDN: A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies
We have this document generation app that uses WCF for connecting to our middle-tier server. In order for users to run the application, they need .NET Framework 3.0 installed on their machines. To accomplish this task, I decided to use ClickOnce since it will download the pre-requisites during the installation process. However, when I tried publishing the application, to our intranet, I ran into this issue with the process: No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3.exe' in item '.NET Framework 3.0'. No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3_x64.exe' in item '.NET Framework 3.0'. Yeah,...
Today, I spent the better part of my morning trying to troubleshoot a problem with COM interop within a WCF service. Here's the situation... We currently have a legacy COM (VB6) component that creates a CSV file containing data needed to generate a PDF. Unfortunately, we don't have the time to re-write this component to .NET, so we have to make due for now. I first tried the component within a standard WinForm, and I was able to create/invoke it with no problems. With this success, I proceeded to use said component within a WCF service so it could be exposed within our intranet (netTcpBinding). ...
If you have the time, check out these great downloads add-ons for VS2005. I already have .NET 3.0 framework installed on my laptop and ready to play with WF and WCF...this is just sweet!
That's right, if you're planning on doing some development with the .NET Framework 3.0, you don't have to use CTPs, any more! They've shipped the product! This is the beginning of a brand new approach of application development for the Windows platform. Great job, teams!
That's right, .NET 3.0 (WinFX) has hit RC1. It's pretty much "the final product" from the sounds of it. Go get your copy!
Here’s a really good post (with a flow chart!) in which Craig McMurty describes the steps and scenarios you should consider when making changes to your WCF contracts (service, message or data).
Our dear friend from the north and favorite DCC, Jeff Brand, posted some pretty good tips about managing/monitoring WCF applications he heard from Craig McMurtry (yes, this Craig McMurtry), Longhorn Server App Platform Evangelist. If you got the time, check them out.
I will have to say that if you’re not following tip #1, you’re a masochist; large XML config files != love. (FYI on tip #1, this is installed as a default tool in VS2005 when you install Beta2 of WinFX (sorry, .NET Framework 3.0)).
Kenny Wolf has a very good post on which he describes the reasons for setting the IsOneWay property of your OperationContract attribute to true.
If your operation has void return type, mark it with IsOneWay so …
The service will release the connection (or complete the HTTP request/response by replying with null, etc) before dispatching to user code. If the operation is not marked with IsOneWay then our Dispatcher won’t reply until the Operation has completed
An important thing to know if you’re want to your application to perform well by using the old “fire and forget” idiom.
Kirill G starts to answer the question on how one can control various aspects of WSDL generated by WCF (Indigo) services. His first post is on how you can control the namespace generation through either code or configuration files. If you’re into Indigo (WCF) and would like to learn more about its inner workings, this is a good place to start.
Due to renaming of WinFX to .NET Framework 3.0, Microsoft has launched a new site, http://www.netfx3.com. With this site, you can now access each of the technologies by a sub domain. For example, for WCF, goto http://wcf.netfx3.com.
Check them out!
That's right, Beta2 of WinFX (components, runtime and VS Add-ons) is out! Go download it and have fun playing with the new bits.
Microsoft Pre-Release Software WinFX Runtime Components - Beta2
Microsoft Windows Vista Beta2 Software Development Kit
Microsoft Visual Studio Code Name “Orcas” Community Technology Preview – Development Tools for WinFX®
Doug Purdy posted some great information for using Remoting semantics (passing references and perserving object graphs) in Indigo. Here are the main links:
Perserving Object Graphs (Sowmy)
Passing References (Michael)
Clemens Vasters, Community Relations PM for Indigo, wants your WCF stuff (code, presentations, tutorial, articles, etc.) to fill up WCF's portal. Check out his post if you have some samples you want to submit.
That’s right, go get your copy of the Atlas March CTP release. Not only that, check out the re-vamped Atlas Portal where you can find great tutorials and examples on the framework. And for those of you playing with WCF and Atlas, check out this section of the documentation. WCF + Atlas = I_NEED_MORE_TIME_TO_PLAY_AROUND_WITH_STUFF … Pretty awesome!
Not sure how many of you know this, but there’s a new Vista CTP for download if you have an MSDN account. What’s different from the other CTPs? It’s feature complete and is in-sync with the just released WinFX CTP!
Forgot to post a list that Ed Pinto created that tells the changes of the new CTP. You can check out the list here.
The WinFX Runtime Components Feb CTP is ready for download! The nice thing about this is that there will be a a Vista build (5308.17) that will be in-sych with the WinFX Runtime Components (by way of Shy Cohen). Check out the links below for more information:
WinFX Runtime Components
Windows SDK
Microsoft Visual Studio Code Name “Orcas” Community Technology Preview - Development Tools for WinFX
VS Extensions for Workflow
WinFX RC February CTP “Readme”
Good friend, Matt Milner, has posted a good example for working around the requirement of creating a metadata access point through a service host. I specially like his use of the System.Configuration classes.
Excellent sample by Andy on how to host WCF services in COM+. Also glad to see that they’ve changed the ComSvcConfing tool to not need the COM+ GUIDs. Check it out!
This is a pretty good read from the WCF Forums. Check it out.
Check out this awesome WCF application that Clemens Vasters created. Go here to download the code.
Just released! A new Indigo (WCF) portal! It’s jam packed with samples, resources, and forums. Go check it out!
That’s right, you can get the January CTP for the Runtime Components for WinFX. Also this release, you can get a GoLive license for your production systems. Oh the sweet coding…
I’ve been answering some questions on Google Groups dealing with ASP.NET web services. In some of the questions, people asked, “How do I send a <insert-user-defined-type-here> that’s in <insert-language-here> to a <insert-another-language-here> client?” Or, “Should I send a DataSet/XmlDocument/String to my client for my complex type?”. Clearly, there’s some confusion (or misunderstanding) about how types are represented in the service world.
The purpose of this post (along with the proceeding three) is to share the basics principals outlined by the tenets of Service Orientation. I will present the tenets in no particular order…the reason I started with Share...
Michele Leroux Bustamante (dasBlonde) published a great article at the Server Side .NET describing how you should use/program contracts for Indigo (WCF). The article is about 20+ pages printed and a great read. Go check it out…
Just in time for Christmas! The latest (December) WinFX CTP components!! The cool new features of the CTP is the Visual Studio Code Name “Orcas” CTP WinFX Development Tools. This package has the WPF designer for VS called “Cider”. Also, the SDK installation is now a DVD iso image! It’s about time!!
Runtime Components
Windows SDK
VS2005 Development Tools
For those of you that have previous versions of the CTP, you can use this uninstall tool to make installation easier.
Don Box and Chris Anderson showcase how you can use WinFX within your everyday lives on this MSDN TV episode. I must say, their implementation is pretty cool … however, I wish I could say the same about their signing! ;-)
Check it out!
WOO HOO!! The WinFX team has finally released a CTP that will work with the VS2005 RTM bits!
Here are all the links:
WinFX Runtime Components
WinFX SDK
VS2005 Extensions for WinFX Runtime Components
VS2005 Extensions for Windows WorkFlow
Steve Maine shows the great extensibility of Indigo by creating a binding that uses SMTP as its transport. If you ask me, I think this is a pretty cool example on how Indigo can adapt to your needs.
Thanks Steve for this great example!
During my Indigo talk at the HDC, I was asked about load balancing to another endpoint if your current proxy endpoint is down. I took a look at this problem during lunch today, and this is what I did to solve it:
If you created your proxy using svcutil, you will have a local copy of the service interface. In my second demo, I had the IEightBallService interface under my EightBallProxy.cs file. The main proxy class, EightBallServiceProxy, inherits from System.ServiceModel.ClientBase<T> and implements the generated IEightBallService interface.
The EightBallServiceProxy class also encapsulates a System.ServiceModel.ChannelFactory<T>. Which in turn, exposes a ServiceEndpoint through the ChannelFactory<T>.Description.Endpoint property. So,...
A couple of days ago, Don Box posted about WFPad. In his post he mentioned that he wanted IndiPad. Well, after working on for two hours last night, this is my take on IndiPad:
This version of IndiPad has limited functionality!! To open a .config file, you will need to select it’s corresponding assembly. In other words, if you want to open myclient.exe.config, you need to select myclient.exe in the dialog. Why? Well, I’m using the ConfigurationManager.OpenExeConfiguration method to load the .config file into a Configuration object. This way, I can get the system.serviceModel/services and system.serviceModel/client config sections (Ok, I cheated and disected...
Matt Tavis posted a pretty good guide for converting your .NET Remoting components to WCF. Pretty good read! Quick tally of hands, how many of you out there use .NET Remoting as, well, your remote solution?
[OverDuePost]
I should have posted this about a week ago when I first ran into these issues. If you’re planning on installing WinFX September CTP (beta2), know this:
This CTP installs a new version of the framework.
You must first uninstall your current framework version.
Due to the new version of the framework, SQL Express doesn’t work.
The SDK and VS Extensions only work with beta2 of Studio.
As previously posted, your beta1 WinFX code will need to updated to work with beta2.
I got a little ahead of myself when I was installing the CTP and because of it, I had to reformat my laptop. Hope this helps anyone who’s about...
Michelle Leroux Bustamante (dasBondle), posts a good question: What’s a WCF best practice, Proxies or ChannelFactory? If you take a look at her comments, you can read my two cents on the issue.
Earlier, I had mentioned that I will blog about the changes for beta2 of WCF. Well, Omri Gazitt already blogged these evident changes. If any of you have have written any apps with beta1, I recommend you read his post to help you troubleshoot your changes.
Just wanted to mention that there are significant changes from Beta1 to Beta2 for Indigo (Windows Communication Foundation) that will make your beta1 applications not to work under the new version.
Right now I’m trying to sort through all the big differences. Thus far, I’ve found out the following: wsProfileBinding is no more. wsHttpBinding is now it’s equivalent, also System.ServiceModel.IProxyChannel for your proxy client is no more.
I will try to point out the big changes for the two versions of Indigo.
Clemens Vasters has a new article on MSDN entitled Introduction to Building Windows Communication Foundation Services. The article gives you a nice run through the major parts of Indigo (WCF) and what it can do.
Check it out when you have the time!
The WinFX September CTPs have been released. Click the next links to get your fill of goodness.
Runtime Components
SDK
VS Extensions
I’ve only played with this for a few seconds and all I can say is that it’s pretty sweet…check it out!!
What is it? it’s a pretty sweet implementation of Avalon and Indigo…can you imagine writing applications like this one?
Richard Turner posts information about the support for “RPC” and “Messaging” programming models within Indigo. A quick read with good information.
While doing some of my ES research, I bumped into this article by Richard Turner, PM for Distributed Systems Group, and Ingo Rammer from thinktecture. This is a great read for those of you that are evaluating which technologies to use for their enterprise. They also compare the passing of [Serializable] objects and DataSet objects across your services.
Ok, on a side note why would you want to pass a DataSet across your layers? Let me see…Oh yeah! I want my performance to suffer due to the extra work serializing all of the internal objects!!
Well, I've been out of the bloggin scene for the past week due for many reasons. The most important one is that I've been down at a customer site and it's hard to blog when they monitor your internet access. I make a note to blog about my finding and run-arounds with technology when I get home, but I always forgot or get sidetracked.
On 7/30, I installed Vista as my base OS. Why did I do that? Well, the VPC ran like sh*t! It was soo slow that was a complete waste of time to do anything on it. Vista...
Got your attention? Well, the marketing folks at MS didn’t think that Indigo was a clever market name for the technology. So, what do they come up with? Windows Communication Foundation. Do you see the resemblance in the names? Oh for those of you who are Avalon oriented, it’s now called Windows Presentation Foundation. Yeah, my thoughts exactly.
Thanks to DBox for posting it.
There’s an MSDN article entitled, Installing Microsoft Pre-Release Software Code-Named "Avalon" and "Indigo" Beta1 Release Candidate (RC) that steps you through the process of installing Indigo on your machine(s). It covers the installing of the SDK along with the VS.NET 2005 integration components.
If you are wondering the how’s and what’s of the installation it’s worth the read.
Well, Jeff, Phil and Kent have been promoting their Heartland Developer’s Conference (HDC) talks, so I figured I would jump on the bandwangon. My presentation topic is on Indigo, the new managed communication framework for .NET. Here’s the snippet for the session:
Indigo: A crash course in next generation messenging
Track : Behind the Curtain
Day : 2 ( 2:30PM - 4:00PM)
This talk will be about Indigo, the code name for Microsoft’s infrastructure and programming model for building connected applications. We will cover its role in service orientation, messaging architecture, programming model and interoperability with other messaging services. If you’re currently using other...
All I have to say is RTFM! Well, if I would have looked at the SDK document a little bit closer, I could have read the answer!! Anyway, here’s the updated configuration file:<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service
serviceType="Lozanotek.Examples.Indigo.TestService">
<endpoint
address=""
bindingSectionName="basicProfileBinding"
contractType="Lozanotek.Examples.Indigo.ITestService" />
<endpoint
address="/ws"
bindingSectionName="wsProfileBinding"
contractType="Lozanotek.Examples.Indigo.ITestService" />
<endpoint
address="/wsDual"
bindingSectionName="wsProfileDualHttpBinding"
contractType="Lozanotek.Examples.Indigo.ITestService" />
</service>
</services>
</system.serviceModel>
</configuration>
Ahh, the sweet smell of functional code…
Ok, you problably have already read how to accomplish this from either the SDK docs or another blog. I just wanted to add a little aside to the configuration of your IIS hosted service. When you configure your service to run under the direct virtual path, i.e. http://servername/virdir/serviceName.svc, you can ignore the value of the address attribute under your endpoint definition since the address is relative. However, I’ve been having a heck of a time trying to define multiple endpoints for the same service. Take the following configuration layout:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
Here's the new book on my night stand ...
Programming "Indigo": Code Name for the Unified Framework for Building Service-Oriented Applications on the Microsoft® Windows® Platform Beta Edition
Check it out!