# Wednesday, June 04, 2003

I’ve seen a wide range of TechEd presentations on Web Services now by some of the luminaries (Don Box, Keith Ballinger, Doug Purdy, et. al.) and I find it interesting that the story for how to build .NET web services has changed.  Maybe that’s been true for a while and I never noticed, but either way, now I know.  When .NET first appeared on the scene, the story was that all you had to do was derived from WebService, mark your methods with [WebMethod()], and all would be well. 

This week I’ve consistently been hearing that “code-first” development is out for web services, and that we should all learn to love XSD and WSDL.  So rather than coding in C#, adding some attributes, and letting the framework define our WSDL, we should start with XSD and WSDL definitions of our service, and use wsdl.exe and xsd.exe to create the .NET representations.  Very interesting. 

Further more, we should define our WSDL specifically with versioning and interop in mind.  Some tips and tricks include using WS-Interop as a guideline for defining our WSDL, including version attributes in our SOAP schemas from the get go, and using loosely typed parameters (xsd:string) or loosely typed schemas (xsd:any) to leave “holes” into which we can pour future data structures without breaking existing clients. 

Since I’m about to embark on a fairly major interop project myself, I’m glad to have heard the message, and I say hooray.  I think it makes much more sense to stick to industry standard contracts that we can all come to agreement on and work the code backwards from there, rather than tying ourselves to the framework’s notion of what WSDL should look like.  Ultimately it’s the only way that cross-platform interop is going to work.  The “downside” if it can be called such is that we have to really work to understand WSDL and XSD (or at least the WS-I specified compatible subsets thereof) in order to design web services correctly.  However, anyone who was writing any kind of web service without a firm grounding in WSDL and XSD was heading for trouble anyway.  I’m looking forward to Scott Hansleman’s “Learn to Love WSDL” coming up after lunch today.

 

Wednesday, June 04, 2003 2:55:19 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

Yesterday I saw a couple of presentations here at TechEd on the Enterprise Instrumentation Framework.  Currently I use log4net for all my logging needs, and I've been doing some compare and contrast between the two systems.

 

The advantage to using either of these frameworks is that they are loosely coupled.  There is no design time mapping between event sources and event sinks.  In log4net all the developer need to is categorize the log message as Debug,  Info, Warn, Error or Fatal.  At runtime, log4net is configured using an XML document.  You can define multiple event sinks, such as text files, the Event Log, ADO data sources, OutputDebugString, etc.  It's easy to create plugins to support new sinks as well.  There's even a remoting sink so that you can log to a different machine.  In the configuration file, you can send events to different sinks based on the logging level (debug, info, etc) or on the namespace of the class the logging is done from. 

 

In EIF, you can similarly define multiple sources and sinks, and map them at run time.  One big difference is that in EIF, events are strongly types.  You can create an event schema that is used for logging data with distinct types, rather than just as strings.  In text logging that's not so important, but in the Event log, and especially in WMI ( which EIF supports) you can take advantage of the strong typing when you read and or sort the events.  However, that means that you have to define the schema, which is work.  One drawback is that out of the box, EIF supports many fewer event sinks, in fact only three:  WMI, the Event Log, and Windows Event Tracing (on Win2K and up).  As with log4net, EIF allows you to create your own event sinks.  There's currently no UI for reading Windows Event Tracing logs, but they do provide an API.  Furthermore, the configuration for EIF is rather more complicated.

 

The built in support for WMI in EIF is pretty useful, since it abstracts out all the System.Management stuff.  This support makes it easy to support industry standard management tools like HP OpenView.  And you even get perf counters for free when you define an EIF event source.  On the other hand, this support for WMI makes intalling a bit more high ceremony, since you have to include an installer class in your app to register the WMI schema. 

Possibly the coolest feature in EIF is the fact that they can push correlation data onto the .NET call context, which travels across remoting boundaries.  That means that they can correlate a set of events for a particular operation across process and server boundaries.  They demoed a UI that would then create a tree of operations with nested events arranged in order.  Pretty cool stuff.

 

So, EIF has strongly typed events, WMI support, perf counters for free and cross process event correlation.  Log4net is much simpler to implement, requires less coding overhead, and supports a wider range of event sinks out of the box.  It's a tough choice.  The WMI support might swing things toward EIF in the long run, especially if you operations outfit uses WMI management tools.

 

Wednesday, June 04, 2003 11:25:06 AM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [3]  | 
# Tuesday, June 03, 2003

I went to a get together here at TechEd last night of bloggers and “aggregators” (sounds much better than “lurker”) who are here at the show, organized by Drew Robbins who runs TechEdBloggers.net.  It was really interesting to put some faces with the names.  There were also some interesting discussions on blogs and blogging.  Many seemed comfortable with the notion I put down a while ago (http://erablog.net/filters/12142.post) of communal validation.  Someone dubbed it a “web of trust” which I think is pretty appropriate.  The question also some up, “So who plays the role of VeriSign” in this web of trust.  I think the interesting part about blogging, at least in the technical community, is that that trust seems to be based on personal relationships rather than out outside “authority”.  Unlike in the UseNet world where it’s easy to forgo personal relationships in favor of the collective, blogging seems to foster personal relationships.  That’s a big change from the general anonymity of the Web.  I’ll be interested to see where it goes from here. 

Tuesday, June 03, 2003 10:43:40 AM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

Once upon a time I did the happy dance on stage (in San Francisco: “Anatomy of an eCommerce Web Site”) because I was so excited about the new BizTalk orchestration designer in BTS 2000.  What a great idea, so be able to draw business processes in Visio, then use the drawing to create code that knows how to manage a long running transactional business process.  I had been preaching the gospel of the CommerceServer pipeline as a way of separating business process from code, but BT Orchestrations was even better.

Little did I know…  Yesterday (I’m here at TechEd in Dallas) I saw a demo of BTS 2004.  Wow.  Microsoft has really made great strides in advancing the orchestration interface.  Instead of Visio, it’s now a Visual Studio.NET plugin, and the interface looks really good.  It includes hints to make sure you get everything set up corrects, and full IntelliSense to speed things along.  I was very impressed with the smoothness of the interface.  Not only that, but now you can expose your orchestration as an XML Web Service, and you can call Web Services from inside your schedule. 

I’ve always thought that BTS has gotten short shrift in the developer community.  I think it’s because it tends to be pigeon-holed as something only useful in big B2B projects.  I can think of lots of ways in which orchestration could be very useful outside the realm of B2B.  I guess part of it has to do with the pricing.  While I can think of lots of ways to use BTS in non-B2B scenarios, they aren’t really compelling enough to convince me to spend that much money.  Ah well.   

Tuesday, June 03, 2003 10:31:47 AM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, May 28, 2003

 

The constant point-and-click of the mouse can be a real drag. One company has developed products that sense hand movements to give computer commands, creating input devices that it hopes will replace the mouse. By Katie Dean.
[Wired News]

 

 

This is a great idea, and I’d be all over it if it wasn’t quite so spendy.  I think in the long run this kind of gestural interface could really win out, since you can encode a lot of information in gestures that would be harder or take longer using other input methods.

Wednesday, May 28, 2003 1:10:19 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, May 27, 2003

I’m back home from New Orleans after watching my wife Vikki win a bronze medal at the US Tae Kwon Do Senior Nationals.  Woohoo!

A good time was had by all.  The competition is pretty amazing.   

Tuesday, May 27, 2003 3:11:37 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, May 16, 2003

There's been a great deal of hullabaloo in the last week or so about blogging “ruining the Internet for everyone” and Google segregating hits from blogs into their own section (good or bad?). I realize that since I'm posting this to a blog, this sounds a bit self-serving, but here's my two cents worth:

While it's true that blogging has lowered the bar in terms of access to web publishing, the simple fact is that ever since there was an Internet, anyone who wanted two and had access to a keyboard could post whatever drivel they wanted to the web. All the blogging really adds to the mix is the fact that now you don't even have to have rudimentary knowledge of HTML (or how to save your Word doc as HTML) in order to publish yourself. While that means more volume, it doesn't really change the nature of data on the web.

The real “problem” as far as Google is concerned is that the self-referential nature of blogging upsets their ranking algorithm. This has apparently led people (like Larry Lessig) to conclude that blogging is ruining the nature of content on the web.

I would argue that there's nothing about blogging that changes the need for critical thinking when looking for information on the web. That's always been true, since there's fundamentally no concrete way to verify the validity of anything you read on any site without thinking critically about the nature of the source, how you came across it, and what references it makes to other works. If you apply that kind of filter, then the self-referencial or “incestuous” nature of blogs can be used to advantage.

For example, if I'm looking for interesting information about SOAP, XML Web Services, or how either or both relate to .NET I'd assume that Don Box (for example) is a reliable source, given that I've read his books, articles and speeches in other contexts. If he mentions something in his blog that someone else said about .NET on their blog, I would assume a high degree of certainty that the reference is relevant and useful. Then, when I follow that link, I'll find more links to other blogs that contain relevant and useful information. The tendency is for all those cross links to start repeating themselves, and to establish a COMMUNITY wherein one can assume a high degree of relevant information. All that's needed to validate the COMMUNITY as a whole is a few references from sources that are externally trusted.

In the long run, I think that kind of “incestuousness” can be used to validate, rather than discount large bodies of interesting, useful, and otherwise unattainable information that we wouldn't have access to otherwise.

That's a fairly lengthy rant for me, but I had to get that off my chest. I hate to see pundits discounting a body of information just because it's posted casually and not in academic journals.

Friday, May 16, 2003 11:22:41 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
I'll be giving a presentation on "XML on Large Power Transformers and Substation Batteries" at the Applied XML Developers Conference 2003 West, on July 10th and 11th in Beaverton, OR. Register now at www.sellsbrothers.com/conference.
It looks like there are going to be some really interesting sessions, and tickets reportedly go fast, so sign up now.
I'm really interested in hearing "SOAP, it wasn't Simple, we didn't Access Objects and its not really a Protocol", and "A Steady and Pragmatic Approach to Dynamic XML Security". Cool stuff.
Friday, May 16, 2003 10:59:56 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

Sean Campbell and Scott Swigart have some pretty strong words about Access vs. MSDE. This is a subject I hadn't spent much time thinking about until pretty recently. I had the opportunity to give some presentations at an Access user's group conference (PAUG)

Being pretty much a died in the wool SQL Server enthusiast (bigot?) I hadn't realized how many people out there are writing useful, complex Access applications that are solving real business problems today. I also hadn't realized that most of them don't want to have anything to do with MSDE. As Sean and Scott put forth, it's just too much work. It's too hard to users to install, not easy to get configured properly, etc. Also, the SQL that MSDE/SQL Server supports is different enough from Access SQL to be not just a minor bit of tweaking in many cases but a full fledged porting activity, Upsizing Wizard or no.

So up until fairly recently, I would have been just as dismissive as Don Box was of their Access rant, but now I'm not so sure. I still haven't changed my feelings about the nature of Access (I still would use MSDE myself) but I have a much more profound understanding of the nature of the Access developer community, and how threatening rather than enabling MSDE looks to them.

Friday, May 16, 2003 7:06:06 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, May 14, 2003
Scott has posted a very insightful article into the nature of the CLR as it relates to the underlying Windows platform, and how that's different from the way the Java VM works.
Keep up the good work Scott!
Wednesday, May 14, 2003 1:14:41 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |