>
 Friday, March 23, 2007

I just spent the last week at SD West in San Jose...this year the conference was bigger than ever before! Thanks to everone that attended my tutorials and sessions, I really enjoyed the questions and discussions...as I hope you did. As promised, here is a list of all my resources from the conference talks. Enjoy!

 

Intro to Web Services (Tutorial)

  • Christian Gross and myself presented this one, discussing everything from POX, REST, RSS, SOAP/WSDL, WS* and SOA.
  • Code I demonstrated in this tutorial is from the .NET Web Services tutorial next.

.NET Web Services TODAY (Tutorial)

Microsoft Technology Avalanche (Tutorial)

Top 10 Web Service Standards You Need To Know

WCF Contracts and Versioning

  • Demonstrations in both of these talks are based on WCF code from my book here: http://www.thatindigogirl.com/LearningWCFCode.aspx
  • See \Security, \ReliableSessions, \Transactions in particular for the WS* discussion
  • See \DataContracts, \AdvancedSerialization, and \ServiceContracts for the contracts discussion

CardSpace

The Amazing World of Federated Security

3/23/2007 8:57 PM .NET | Speaking/Events | WCF | Web Services  | Comments [37]  |  View reactions  |  Trackback
 Sunday, November 12, 2006

A big thanks to all the participated in this monstrous tutorial at Dev Connections. Whew, I can fully admit it was a lot of work to put all the information together in one place, but I hope that you got a lot out of it. For those that didn't attend, the goal of the tutorial was to provide an overview of the current state of the various technologies and tools for Microsoft developers, with an emphasis on the reasons for moving forward with each technology stack, and hopefully some enlightenment on when you might choose each technology. I'll be keeping this one day session current for future conferences, and for on-site sessions with clients. If you are interested in such a thing, contact me at IDesign: www.idesign.net.

Here are the resources I promised from the tutorial.

Development Tools

In this section I reviewed the stack of development tools and explained how to choose between them.

Language Enhancements

In this section I talked about moving from .NET 1.1 to 2.0, and discussed the key features of 2.0 that folks should be leveraging. Then, I focused on the language enhancements forthcoming with C# 3.0 and VB 9.0.

Demos:

Data Access

In this section I focused on data access technologies, designing the data access tier, and key features of ADO.NET 2.0, vNext and LINQ to give you some idea how to prepare for the next set of innovations.

Demos:

  • When you install ADO.NET vNext and LINQ there are numerous overview documents, tutorials, and samples that will really help you get up to speed here. These are the demos that I showed in the tutorial.

Windows Development

In this section I reviewed Windows Forms 2.0 innovations, primarily ClickOnce, and then talked about how to prepare for WPF and who should use it today.

Demos:


Web Development

In this section I showed an ASP.NET sample application that illustrates key features of ASP.NET 2.0 and practical application of those features. Then we looked at AJAX and discussed trends on the Web compared to Windows development.

Popular AJAX Frameworks:

Demos:

Distributed System Programming

In this section I reviewed the typical use for earlier distributed computing technologies like remoting, enterprise services and ASMX web services with WSE, and compared them with WCF.

BPM and Workflow

In this section I discussed BPM, BizTalk and workflow.

11/12/2006 6:37 AM ADO.NET | ASP.NET | ClickOnce | DevConnections | Speaking/Events | WCF | Web Services  | Comments [0]  |  View reactions  |  Trackback
 Monday, March 20, 2006

Updated 04/09/06

See the previous few entries with code for my interoperability tutorial, and web services tutorial. Collectively they include the code for this session. Thanks!

 

I'm posting references here to the code samples from several tutorials I just completed at SD West in Santa Clara.

  1. Introduction to Web Services (03/13/06) - Christian Gross and I once again joined forces to deliver a half-day tutorial introducing web services. Christian has posted his materials here: http://www.devspace.com/~cgross/sources/2006SDPreConJavaWS.zip and my introduction content can be found here: http://www.dasblonde.net/PermaLink,guid,c56682f0-8351-4f66-9a3a-2015d5a11a66.aspx, and the WCF content will be posted with my "Making Sense of All These Crazy Web Services Standards" post, coming shortly
  2. .NET Web Services (03/13/06) - I delivered a half-day focused 100% on .NET web services (ASMX) for the ASP.NET 2.0 platform. It included some WSE 3.0 introduction as well. The code samples for this can also be found here: http://www.dasblonde.net/PermaLink,guid,c56682f0-8351-4f66-9a3a-2015d5a11a66.aspx

Thanks very much to those that attended our tutorials...I hope you enjoyed them as much as we did :)

 

3/20/2006 8:41 AM Speaking/Events | Web Services  | Comments [2]  |  View reactions  |  Trackback

Here are some ASP.NET 2.0 samples focusing on the fundamentals of ASMX services. Inside the zip you'll find samples for the following:

  • Basics
  • Encoding
  • Serialization
  • IXmlSerializable
  • Faults
  • Headers
  • Session state
  • Asynchronous proxies
  • WSE 3.0 simple example

Cheers!

WebServicesSamples.zip (425.52 KB)
3/20/2006 8:28 AM Web Services  | Comments [6]  |  View reactions  |  Trackback
 Monday, November 28, 2005

Thank you to everyone who attended the webcast this morning on interop. I wanted to share with you some resources I have on interoperability, and some future plans happening at IASA.

First, resources:

IASA plans:

  • Earlier this year I kicked off 3 interop events for IASA (International Association of Software Architects). They were user group driven events, where java and .NET communities (among others) united to enjoy some human interop as well as get some top notch interop experts to show their stuff. If your user groups want to do this locally, IASA can help. And don't worry, we are non-profit...and the events can be free if there is enough support of the community and sponsorship. All we need is to get the user group leads to buy in and say “we want an interop event too!!!“
  • We are building knowledge communities (just now!) related to architecture, including interop...I have not had a chance to post much there yet (blogs links, articles) but we 'd love to get your feedback, and referrals if you run across something poingnant that should be referenced here...let me know and participate in the growth of the community resource!

More stuff...

  • I found some very interesting things as I tested WSE 3.0 and Workshop 8.1 SP5 - keep an eye on this blog for more on that!
  • WebLogic 9.0 is the go forward stack to use, since it supports more WS* and will have an integrated IDE summer-ish 2006...to replace Workshop today. Use Workshop if you need WS* today and can't take the time to be a plumber...if you can, use the WL 9.0 stack now (already released with better WS-Security among other standards support)
  • We have another big interop event coming at SD West 2006, so you can expect some content out of that one in Q1 2006, including some of the original Apache Axis founding members helping us out!

 

 

 

 

 

11/28/2005 8:01 PM Speaking/Events | Web Services | WSE  | Comments [2]  |  View reactions  |  Trackback
 Friday, November 18, 2005

Well folks, it's that time again...MSDN is pulling together a “best of” series for the webcasts presented this year. I'm presenting two of those web casts. The links below will take you to the master list of webcasts coming up...and remember they are free! From there you can find my two events and register.

MSDN Webcast: Building Secure and Interoperable Web Services with WSE (Level 300)
Monday, November 28, 2005
10:00 am - 11:00 am, Pacific Time
 
In this webcast I'll be showing WS-Security between WSE 3.0 and the WebLogic Workshop stack. Great way to get a feeling for the state of interop today on WS-Security.
 
----
 
MSDN Webcast: Going Global Gets Easier with the New Localization Features in ASP.NET 2.0 (Level 300)
Wednesday, November 30, 2005
10:00 am - 11:00 am, Pacific Time

In this webcast I'll be showing off the new globalization features. I was taped doing this presentation at Tech Ed this year, but the VS Beta was bombing on me, a few times, so we didn't have a good run at it...this time will be on the RTM and I can tell you it works just beautifully from my presentations last week at Dev Connections :)

 

Thanks to everyone who attended the SDSIC event last night hosted at WebSense. I had the honor of moderating the event as a favor to Brian Loesgen your usual moderator, and really enjoyed hearing from the panelists:

Thank you also to the panelists for bringing their insight to the challenges with web services today, and how they worked around them. Quite enjoyable!

 Wednesday, November 16, 2005

Just a quick post to let you know about a new article I completed for TheServerSide.NET...enjoy:

http://www.theserverside.net/articles/showarticle.tss?id=InteropWSE

 

11/16/2005 8:46 AM Interoperability | Web Services | WSE  | Comments [2]  |  View reactions  |  Trackback
 Wednesday, September 21, 2005

Microsoft is sponsoring a brand new architecture podcast series, the first one which I participated in with Chris Haddad, Roger Sessions, Jeff Schlimmer and Dare Obasanjo. The subject is of the future of WS* and interoperability. Want to know what we all collectively think on the subject, check it out here:

http://www.microsoft.com/architecture/default.aspx?pid=share.podcast&abver=FEEB2E89-4412-4C58-A7F8-9B2CA0E0BDAC

 

 Saturday, June 11, 2005

Thanks very much to everyone who attended this talk in Orlando. The demonstration code can be found here:

 

WSESecurityDemo_MemberRoles.zip

 

You’ll also notice that there is some set up required to run the code, so be sure and review the readme document for those instructions. The sample uses the 1.1 version of the MemberRoles API.

 

I also have a resource site where other WSE samples have been posted, many that do not require the database setup:

 

http://www.dotnetdashboard.net/resources/wse.aspx

 

This may help those of you that are newer to the subject get your arms around it as well.

6/11/2005 7:27 PM Speaking/Events | Web Services | WSE  | Comments [2]  |  View reactions  |  Trackback

In this talk I demonstrated the following WSE 2.0 example for WS-Security implementation, followed by a demonstration of .NET and BEA interoperability. The BEA interoperability sample is available from the InteropWarriors site, however keep in mind that this requires you to set up a BEA Workshop 8.1 machine, and deploy the project files accordingly. The .NET examples shows the end to end code used for WS-Security that is also demonstrated with Workshop sandwiched in the middle, so this will still be useful to you for the .NET perspective.

 

WSESecurityDemo_MemberRoles.zip

 

I also have a resource site where other WSE samples have been posted, many that do not require the database setup:

 

http://www.dotnetdashboard.net/resources/wse.aspx

 

This may help those of you that are newer to the subject get your arms around it as well.

6/11/2005 7:18 PM Speaking/Events | Web Services | WSE  | Comments [0]  |  View reactions  |  Trackback
In this rather lengthy post I cover the issues I encountered incorporating the MemberRoles API for 1.1 with a WSE 2.0 service. The issues are related to storing hashed passwords in the database, handling that on the server side with WSE’s UsernameTokenManager, and how to work around limitations of the API that prevented me from easily retrieving hashed passwords and generating a hashed version of the UsernameToken for WSE to compare.
6/11/2005 7:13 PM Web Services | WSE  | Comments [1]  |  View reactions  |  Trackback
 Friday, May 13, 2005

I recently received this question at SearchWebService.com...

 

How can I call a Web page from my Web service page after extracting an XML file into a dataset? My Web page will display data from a created dataset into a DataGrid control. Can I return data directly into a Web service page using Visual Studio .NET?

 

Probably because I have had to go through some interesting integration patterns in the past, I answered the question with two flavors...discussions welcome.

 

Here's my answer:

 

I think the best way to tackle your question is to review the workflow between client, Web service and Web application (pages). If the client application is the Web application, then the workflow looks something like this:

1. User browses to a page.

2. During the Page.Load event you invoke a Web service to get the dataset, before binding that dataset response to a DataGrid control on the Web page.

3. The page is returned to the browser with the populated DataGrid rendered as HTML.

 

The call chain looks like this:

Browser->Web Page->Web Service

 

What may be misleading about your question is the statement “call a Web page from my Web service”. Web services are data centric calls. They do not return HTML that can be displayed in a browser, therefore they should not be responsible for “calling” a Web page. Rather, the Web page should call the Web service to gather data, and present it. The driver behind the activity is the user who navigates to a page that leverages the service.

 

That said there is another possibility that can be interesting. Consider this workflow:

  1. User interacts with a Windows client application.
  2. The application at some point invokes a Web service to gather data from a remote server. The Web service establishes a session for the caller, and allocates the dataset to the session. The Web service returns XML that includes a link to a Web page exposed by the same server.
  3. The client application retrieves the XML response, which includes a URL to a Web page to navigate to (with session established) and the client application launches a browser (or, has an embedded custom browser) to the URL.
  4. The requested URL (page) retrieves the dataset from the session object, and displays the page fully populated.

So, the call chain is now:

Windows App->Web Service

Windows App -> Browser -> Web Page

 

This type of workflow may seem disconnected, however it is one technique whereby a legacy application can integrate with a modern user interface (through the browser) when the legacy app wants to integrate the modern application’s services as part of a user interface workflow, in addition to data exchange. For example, the insurance industry has many legacy agency management system applications, some even DOS-based entry screens, that “work” therefore will not be replaced. These agency management systems hold important data necessary to create certificates of insurance, a service often provided by external, modern applications. These modern vendor applications rely on data from the agency management system to function, therefore a data exchange must be automated as part of the workflow, enabling the modern application interface to pick up where the legacy system left off, and finish the job.

 

 

 

5/13/2005 5:04 PM .NET | Web Services  | Comments [5]  |  View reactions  |  Trackback
 Wednesday, April 20, 2005

Yesterday I whipped over to Arizona to deliver an INETA (www.ineta.org) presentation for the Arizona .NET User Group run by Scott Cates (who I didn't realize, even thought we have met several times, is the owner of www.kbalerts.com!). My fellow RD Michael J. Palermo dropped in as well, you know, the one that wrote the hilarious Valentine's Day blog:

I was shocked to arrive and find that people (like Scott) are still somehow finding my 1996 glam shot photo, the one with all the big hair, and posting it in places (like their user group site) that I'm not aware of. THis is crazy, when will that photo go away! It only demonstrates that I still had 80's hair in the 90's...how embarrassing!!! Ok, well it's not that big of a deal...but I always laugh when I see that thing...what people must be thinking!

On to more serious matters, the PDF for my presentation, and my reference materials for the group after my talk. Here are the links you are looking for.

My PDF with slides for this event: wsesecurity_arizonaineta.zip (162.16 KB)

My resource site for WSE materials is here: http://www.dotnetdashboard.net/resources/wse.aspx. You'll find links to my WSE article for CoDe Magazine and the latest code sample link which demonstrates everything I did in the talk last night and more.

WSE 2.0 is now on SP3, so you'll want to download that: http://www.microsoft.com/downloads/details.aspx?FamilyId=1BA1F631-C3E7-420A-BC1E-EF18BAB66122&displaylang=en. Not all of my code samples are yet up to date with SP3, but the larger sample for my article is up to SP2 right now, stay tuned for changes on this site as I post more samples. Easier to go forward than go back to all my past work :)

For my interop demonstration, see www.interopwarriors.com.

For information about IDesign go to: www.idesign.net. You'll be able to find a list of all my articles on the site, plus IDesign utility downloads (not specifically for WSE, but lots of other interesting things).

I had a great time, thanks for having me present! You're fantastic hosts and a great, interactive crowd. 

 

4/20/2005 5:11 PM Interoperability | Speaking/Events | Web Services | WSE  | Comments [2]  |  View reactions  |  Trackback
 Monday, March 21, 2005

Yet another review of WS-Security, where we dug into the meat of the issues, including key management issues and the benefits of WS-Trust, WS-SecureConversation, and SAML. I did demonstrate some .NET samples in this talk, and you can find code for this on this WSE resource page: http://www.dotnetdashboard.net/resources/wse.aspx

 

3/21/2005 12:41 AM Speaking/Events | Web Services | WSE  | Comments [32]  |  View reactions  |  Trackback

We covered a lot of ground in this session, had a little fireside chat about the various standards in all their glory...and the links referenced in the Web services tutorial are also applicable to this session, see this reference:

 

http://www.dasblonde.net/PermaLink.aspx?guid=7af4a00e-34b1-4b09-a4e8-a1a74f093d49

 

3/21/2005 12:10 AM Speaking/Events | Web Services  | Comments [1]  |  View reactions  |  Trackback

This is just a note to thank everyone for attending our interoperability presentation at SD West. Presenters included Michele Leroux Bustamante, Chris Haddad, Anant Kadiyala and Malek Kemmou. We started out by hooking our laptops together on a router/hub and creating a simple HelloWorld round-robin between .NET, WebSphere and WebLogic. The purpose of this to introduce newcomers to Web services, client proxies and the tooling around it. Next we focused on DIME/SwA and demonstrated .NET to Axis interop using DIME. Finally we presented on WS-Security interoperability discussing Axis test results from past events, and demonstrating .NET with WSE 2.0 and BEA WebLogic Workshop 8.1.

 

Our BEA security tests are posted already to the InteropWarriors site here: http://www.interopwarriors.com/PermaLink.aspx?guid=8b01c523-59d6-47be-9843-139f710c5a84

 

We're also pulling together some spreadsheets with test results for WS-Security across platforms. Stay tuned!

 Wednesday, February 23, 2005

I recently received a question from a J2EE developer, who wanted to know how to get started with a multi-tiered architecture for .NET Web services.

The question:

 

I have some experience with J2EE and know that one good design is to create a multi-tier architecture. That is to say create control servers that will request processing from business tire (using some rpc) then forward the result to the display JSPs. I have never used .NET and need to build a web services application using this framework. My question is: what is the .NET alternative for that design? and where can I get the right information and documentation??

 

My answer:

 

.NET Web services are hosted within the ASP.NET runtime environment. They are exposed through .asmx endpoints which have what is known as a code-behind file that has a WebService-derived class linked to it. This class is essentially “the service”, and its methods (those marked with [WebMethod] attribute) are exposed as part of the automatically generated WSDL contract.

 

As a side note, typical of most platforms today, developers are building classes and methods to generate WSDL, however the better approach would be to create the WDSL contract first, and map that to business objects that handle processing. It requires discipline to follow this approach today.

 

The code that is encapsulated by the WebService object should never contain business logic, rather defer to other .NET assemblies that can be invoked in-process or out-of-process to perform the work required to execute the requested service method, and return a response (if not a one way method). That usually means that some form of façade layer is required to pull any business logic from the service class, and choreograph invocations to reusable business logic components (see Figure 1)

 

If you design your business logic in terms of logical, distributable services, then you should end up with a coupling of isolated sets of functionality that comprise an entry point assembly, one or more additional supporting assemblies, and some form of output or data store. For example, in Figure 1, you see that the application server tier has three entry point services: Service A, B and C. Imagine that Service C is a logging service that simply logs the Web service request “happened”; Service B is a service that handles the actual request processing, gathering data from the database, possibly committing some business information to the database; and Service A is a set of messaging and file IO services that handle generating some document output, like a PDF or email generated from the Web service request. Each of these business services can be isolated and distributed to whatever tiers you may desire, or be hosted entirely on the Web server tier, depending on your scalability requirements.

 

So, to your question, how do you distribute components and invoke them across tiers? Assuming your system is designed for reuse and distribution in this way, you can choose from Enterprise Services, Remoting or Web Services (these are the typical