tags:

views:

188

answers:

4

Dear StackOverflow, :-)

For the past eight months or so, I have been banging my head on my keyboard out of frustration because I can't make Windows Identity Foundation do the things that I want it to do.

Even more frustratingly, WIF doesn't seem to enjoy the widespread adoption of many other MS .net technologies. I often cannot find what I'm looking for when I do a Google search.

I read over the MS "Whitepaper for Developers" overview and it gives only a general idea of how the technology general works with not a lot of specifics. I looked over the MS Identity Training Kit; the **ing installer was broken. I could only get it to work at all by hand-editing the install file based on instructions that I found on an MS forum. When it finally worked, I was left scratching my head. I saw how some specific examples worked; it was left up to me to figure out how to use more than half the functions and classes in the framework.

I believe that I can honestly say that in the time I've spent tinkering with WIF, I could have taken and passed a university course on the subject of WIF programming taught by a competent teacher and understand it better than I do now.

Last week, I was asked by my boss to code our WIF enabled ASP.net web project to expire user logins a few minutes before the user session expires. Guess what? I had no idea how to do such a simple task after spending countless hours trying to figure out how WIF works. There are still classes in WIF that I have no idea what they do. There are events for things that I want to control that I have no idea when they are fired or how to handle them. For all my effort to learn this new technology, I sometimes feel incompetent grappling with this technology. BTW, my SO post about the logon expiration issue is here: http://stackoverflow.com/questions/2967253/how-can-i-make-a-security-token-automatically-expire-in-a-passive-sts-setup.

When I first started programming, I was told I needed to learn to implement MS WCF. I picked up a good book about WCF that showed me everything I needed to do to drive our WCF applications. I can easily see myself facing the same situation I face with WIF with WCF without a good reference.

I know of no good book about WIF.

But WIF is just one MS technology that I need to be familiar with.

This situation is all the more frustrating because I have always excelled at studying and research in school.

Anyhow, my question for StackOverflow is this: What are good ways to learn to use new MS .net technologies? What are the best references to consult? Are there references with diagrams showing how the different classes, methods, and events relate to one another I can consult? How can a developer best make use of the MSDN documentation? I think that I would greatly benefit from a visual reference to these things. How can I effectively use my time to learn new MS frameworks?

Clarification: Although I give WIF as an example of a new technology I want to become an expert with, it is only an example. I'm interested in learning about the best tools and references to master a new MS .net technology in general.

Update What about resources on the web. There is StackOverflow of course, and also social.msdn.microsoft.com. What other resources are good for learning a new MS technology?

+4  A: 

I understand your pain. Surprisingly, there are some technologies from MS that are bleeding-edge and there just isn't enough adoption of them, so it is VERY difficult to find the resources that you need.

I have found that contacting a Microsoft sales rep or regional office is a huge step, but appropriate for people like you and I. They can direct you to a MVP on the topic. It is TOTALLY worth the money for your company to rent a MVP for a few days, while you pull a brain dump from the MVP. The cost may seem steep, but if the MVP can get you going in a few days and save you months, it is a solid investment.

Being resourceful is the #1 ingredient in success, but it means different things for different technologies. Even finding one other person to collaborate-with can make a huge difference.

tgolisch
This could be a good thing. However, flying in some MVP's will be a costly thing and in my experience most company's decision makers won't even think about this. If your boss agree on this idea, great!
Sander Pham
So, what are the best resources?
Rice Flour Cookies
+2  A: 

I think the problem you describe is likely to happen for cutting edge-technologies, or technologies with limited adoption only; otherwise, there will be documentation available.

My advice to you is to contact the team responsible for the product/technology at Microsoft, or your local Microsoft Dev Evangelist. In my experience, they are usually looking for feedback and really like to get input from people using it in the field, and help people use the technology. This is especially true for a recent technology.

Mathias
How would you suggest getting in touch with the team at MS? Would it be good to simply send a message to their public e-mail?
Rice Flour Cookies
Yeah, I would send a direct message. Check out the big Microsoft conferences (PDC, TechEd...), look for videos of speakers on your topic, they usually give out their emails and encourage people to contact them.
Mathias
+2  A: 

In my opinion this should be a good path to follow:

1) Choose a .NET language you really want to learn; C# would be a good choice.

2) Your first achievement will be mastering the language from the inside out. Try to get comfortable with the basics, but also with more advance topics sucs as Generics, Lambda expr, value/reference types, covariance, etc. I really recommend Jon Skeet's book "C# in depth" or C# books written by Jeffrey Richter.

3) Bring it into practice and combine it with ASP.NET or WCF for instance; now you master the basics, WCF will not be a big deal for you to understand.

When I start my programming career, I started with "Learn Java in 21 days" :). I was really focussed on understanding the language and its concepts really well. Then I started to some projects with it, doing things with it at the university and the rest comes naturally; after I had serious hands-on experience with it, learning to program Servlets, J2EE, Faces, etc. was just a piece of cake.

Regarding your WIF frustration; this is basically the same thing as learning language basics. WIF is new authorization model introduced in Windows Communication Foundation (WCF). In order to really understand, focus yourself on WCF first and know it features very well. Juval Lowy have written really good books about this. If you have experience with .NET XMl Services or COM stuff, you will love WCF, for sure. You should be happy that your boss gives you the opportunity to work with WIF/WCF instead of old school stuff.

Sander Pham
Learning the syntax and semantics of .net languages per se was not a problem for me. I first learned to program in a CS course where the instructor used C++ as a teaching language. Naturally, I gravitated toward C#, but my company pushed me toward VB.net. Having become familiar with both languages, they feel like almost the same language to me. --The .net code itself poses no problem; it's learning how to implement new framework technologies: WIF being a prime example, that's causing me frustration.
Rice Flour Cookies
Pls check my edited post
Sander Pham
A: 

There is no four-letter word that could sum up my feelings when I read the first response to my post here:

http://social.msdn.microsoft.com/Forums/en-US/Geneva/thread/257d93be-165e-45a6-a277-fc7ed2286e7d/?prof=required&ppud=4

Rice Flour Cookies