Simon Fell > Its just code
Peter has a little "language gumbo" brainteaser for you. I won't spoil it by posting the answer.
"A little more digging reveals that SOAP-RP, DIME, and XLANG (BizTalk's dialect) were all sent as a batch to the W3C by Henrik Frystyk Nielsen, to illustrate "some ideas in the area of SOAP routing, message encapsulation, and process orchestration."
I thought there were IBM fingerprints on this stuff too, but maybe not (yet)?" [Jon's Radio]
IBM have similar offerings with HTTPR & WSFL [no equivilent to DIME as far as I know]. HTTPR takes a different approach to WS-Routing, in that it tunnels a reliable message exchange over HTTP [I wonder what the REST guys make of that]. Whilst WS-Routing takes a more layered approach, WS-Routing on its own doesn't provide reliablity, but provides the bits needs to make a reliable exchange layer. HTTPR doesn't appear to provide any routing information, so is still limited to point 2 point scenarios. Inermediaries seem to be one of the more useful features of SOAP, which is why I wrote some WS-Routing code a while back. I think classic queue based middleware such as MSMQ, MQSeries and JMS are going to rule the reliable delivery situations for quite a while yet.
I disagree with some of Paul Prescod's notions about XML and Web services. In particular, I'm not sure how much of REST applies to the "real" Web. In fairness though, I have to say that I haven't completely made up my mind on this. [KeithBa's Blog]
I've been thinking about this as well [can't seem to get away from it at the minute, everywhere i turn I see either Paul Prescod or Mark Baker posting about REST]. I understand the desire to have SOAP be able to use GET, but mapping a complete SOAP Infoset into HTTP seems kinda pointless, once you throw out the trivial [and broken] stock quote example eveyone uses. One thing I'm strugling with is the whole idempotent GETs vs POST thing, How come the client is the one saying if a request is idempotent or not ?, surely the server is in a much better position to make that assertion ? The one method per URI is an interesting point, I can see an argument for that, but WSDL will need to be changed to cope [or endup with 1 method per portType].
[...] Now here's an interesting connection. MS has a proposal on the table called WS-Routing. It sketches out the framework within which loosely-coupled systems will route SOAP messages that are handled in the doc/literal style, rather than the rpc/encoded style. [Jon's Radio]
Nothing in WS-Routing requries doc/literal bodies, yes the WS-Routing header itself is doc/literal, but the SOAP Body can be anything. A few of us over on SOAPBuilders had some WS-Routing enabled services, that were handling rpc/enc bodies [the SOAPBuilders interop tests]. Details are in the SOAP-RP archives. [WS-Routing was called SOAP-RP before someone decided all the webservices specs should start with WS]
IONA's Press release for the WSDL Interop F2F. I think I'm pretty much ready, I have tests for groups D & E, and for 1/3 of F. Just need to finish getting my laptop setup, and get packed.
Sunday, February 24, 2002
Driven by my desire to build SOAP tools that utilize existing XSD tools rather than re-building them from the ground up, I'm having something of an XSD awakening this week [much like COM, you stuggle for months, then suddenly it just clicks]. It does seem that the rpc/encoded SOAP tools are doing some serious abuse of XSD, I'm not sure yet if this is just an implementation issue [and somehow we've hearded ourselves down the wrong path], or if it comes from the spec.
Dealing with Diversity. In it I attempt to provide concrete examples of where metadata containing type information will help in providing the correct interoperation between diverse languages. [Sam Ruby's Radio Weblog]
Friday, February 22, 2002
[In progress] Group E Interop results
Solved a couple of the MSXML SOM problems I was having, but still having problems getting it to accept multiple related schemas, there seems to be some bizzare load order problem.
Wednesday, February 20, 2002
IDL extensions for WSDL I don't know whether to laugh or cry.
In building the second part of the group D tests [build a client from the server generated WSDL], I ran into a bunch of problems [mainly missing imports]. Bob over at WhiteMesa seemed to get everything right though, thanks Bob !.
Tuesday, February 19, 2002
Some [readable !] Interop Group D test results
Working on a new testing framework for the WSDL interop stuff. I was planning on using one of the .NET unit testing frameworks, but as the tests spend most of their time sitting around waiting on network traffic, you really need to run a bunch in parrallel, so I'm whipping up my own simple framework.
Microsoft still ironing out IM kinks. The software maker says it is working to resolve "issues" with its instant messaging system, including a glitch that disconnects people from the service. [CNET News.com] BTW, on W2K, the latest MSM version is still no better.
Monday, February 18, 2002
Yikes! Bruce Schneier, Cryptogram Newsletter: "Implementation of Microsoft SOAP, a protocol running over HTTP precisely so it could bypass firewalls, should be withdrawn.". You gotta be kidding me. Wonder how the rest of the SOAP community feels about this? [Peter Drayton's Radio Weblog] I've lost count of the number of times I've heard SOAP is evil because it runs over port 80 to avoid firewall / security, etc. I've yet to see any explanation of why this is such a terrible thing for SOAP, yet for CGI / ASP / JSP, etc its perfectly fine.
Hmmm, so it looks like there's going to be a lot of tests to run, I need a decent test framework to handle this. Lets see, for each test area [there's 9] there's an average of 6 tests. For each test, there's a run against each server for the pre-defined WSDL, then a run against each server for each servers re-gen'd WSDL. This gives 9 x 6 x [# servers + 1], there's 6 servers already, and i'm guessing at least another 6 to go up, givin 9 x 6 x 13 = 702 individual tests !
At last, some sucess with the anonymous types :)
DLP : http://mssoapinterop.org/stkv3/wsdl/interopTestDocLitParameters.wsdl
Sunday, February 17, 2002
Fixed a few more problems with the WSDL tools, revised test results posted
Earlier in the week I wrote a subscriber interface for weblogs.com. Weblogs Watcher is a Radio based client for the subscriber service, keep track of changes to all your favorite weblogs, from the comfort of your desktop website !
Saturday, February 16, 2002
I know I've said it before, but Radio rocks !, once I was one the right track, it was ridiculously easy [there can't be more than 40 lines of code tops]. Job for tomorrow is to work out to how distribute it. (its all contained within a tool, so i think this should be easy)
Wow, its really coming together now, I think I'm starting to "get" the Radio programming model. I've got it updating the subscriptions as needed, and recording the callbacks, just need some display code :)
Still having trouble with the macros approach, I'm now venturing into the world of Radio Tools, this looks much more promising.
Gonna have to put this down again for a bit. If anyone want to take up the challenge, here's the Radio macro that will do a subscribe call for all your weblogs.com favorites.
I'm trying to write a .NET remoting listener for the subscriber interface, but all i get so far are "System.Runtime.Serialization.Serialization
Exception - Object type not found for element weblogs weblog" errors, I can't see what's wrong at all. Here's the code . Looking at the WSDL it generates, everything appears to be correct.
Interop Testing : Round 3 Group D Doc/Literal results
Slowly getting closer, inch by inch as Dave would say. These last two doc/literal tests are causing me some headaches. I have it generating code, which generates the correct serializations now, but the generated deserializer code needs fixing.
Interop testing : Round 3 Group D RPC Results
Before i realized i has 2 weeks left to write 4 wsdl tools, I was tinkering with a SOAP based notifications interface for weblogs.com. The basic service is up and running, if you're feeling adventurous, feel free to give it a go.
compound2 working as well, but i knew things were going too well, its blowing big chunks on the anonymous types in InteropTestDocLitParameters
Anyone know a MSXML 4.0 SOM expert ?, I have a problem I posted to the XML newsgroup, no responses yet. Digging around the SOM docs, i can't see anything that covers this at all, which given the prevelance of QNames in XSD seems to be something of a hole. I currently have a hacked up version which pipes the schmea through a SAX chain that expands that particular attribute value at that point, so that later when i get the value from the SOM, it has uri:localname instead of prefix:localname.
Wednesday, February 13, 2002
[...] I switched the GLUE sample service from returning a string to returning a java.util.Hashtable. GLUE itself was perfectly happy to consume that complex return value, but VS.NET had no clue what to do with it. [Jon's Radio] This reminds me, GLUE uses the same serialization for Hashtable as Apache SOAP/Axis and SOAP::Lite [amonst others] but gives it a different type [one with GLUE in the name instead of Apache]. Perhaps its time we gave the map serialization a common name from a vendor agnostic namespace, like soapinterop.org.
Just attended an excellent Web Services presentation by Yasser Shohoud at the Bay.NET meeting, he managed to cover all the important points, without glossing over some of the less savory facts, and without getting bogged down in the details. His demo Java code doing ADO.NET diffgrams looks interesting, I guess that's another book on the to buy list.
Web Services Interoperability Organization (WSIO). Developers now have yet another organization to watch for Web Services information - though the relationship between the new WSIO and the W3C is yet to be determined. [xmlhack]
DIME Interop success with a pre-release version of MSTK 3.0
Monday, February 11, 2002
PocketSOAP 1.3 Beta 1 : Attachments Interop Log
PocketSOAP 1.3 Beta 1 now available : This adds DIME & SwA support to PocketSOAP. My Thanks to David Buksbaum for contributing a substantial chunk of the DIME code.
I've just put up a test DIME server for interop testing.
Kevin Altis: "It is difficult to manually read a WSDL description of a SOAP web service and figure out which parts you need for your programming language and SOAP library of choice." [Scripting News] Sure, I can't imagine anyone is claiming that WSDL is designed to be used manually, its aimed squarely at tool builders.
Revised PocketSOAP interop results & Wiredumps posted, includes the new 2B & 2C Axis endpoint.
Dave is talking about bootstrapping .NET, now as he'd mentioned the presense service, I'd assume he meant MSN Messenger.NET (today) & .NET My Services (future). It seems Sam assumed he meant .NET the development platform. So, now I don't know what Dave was looking to bootstrap exactly, but this adds to my belief that MS tacking .NET onto anything and everything was either a big mistake, or designed to cause confusion.
"Simon Fell wonders how they're going to handle notifications without the DIME/TCP goo. You might find the answer here. Hint: look at section 7." [Sam Ruby's Radio Weblog] Ok, now i'm confused, section 7 defines the DIME/TCP goo. DIME is optional for the HTTP binding, but as we already know, HTTP doesn't allow for unsolicited messages from the server to the client.
Peter saves me from having to find the MSN protocol links, he also has pointers for a VB implementation and the MSDN docs.
The current specs say that DIME is optional. [Sam Ruby's Radio Weblog] Hmmm, i wonder how they're going to handle notifications without the DIME/TCP goo.
Wow!, 4s4c 2.0 gets a clean sweap with the Axis test client ! Not bad for two Alpha code bases.
Sam raises some good points on what its going to take to talk to .NET My Services, it uses SOAP, SOAP Headers, WS-Routing [aka SOAP-RP], doc/literal style requests, kerberos authentication, encryption and signing. It'll probably use DIME and DIME over TCP binding as well. This is so far ahead of getCurrrentTemperature and the average use of SOAP today, and the obvious response is going to be look at all the unneeded complexity, but its seems to me that you can't get away with much less, given the requirements.
Looks like Ingo is a WSDL FM Fan :) Integrating Radio with .NET Remoting
The core question is -- can we communicate, via SOAP 1.1, with the .NET runtime? We need help with this because we don't have the expertise inside UserLand. That's when I ask the community to help. Help! [Scripting News]
This is my understanding of the situation, there's no SOAP enabled way to talk to the MSN Messenger cloud today, If you're on a Windows box with the MSN client installed, then there's a COM API that lets you interact with Messenger, IIRC this includes presense notifications. In addition the protocol used between the MSN client and the cloud is documented [I'll try and dig the link out] so you can build a client from scratch. Alternatively the Jabber folks have an MSN gateway, so you could write a Jabber client to get the notifications [I'd guess that a jabber client is easier to write for the folks with good XML experience], again the Jabber client is not SOAP. This all changes when Hailstorm [aka .NET My Services] ship, things seem pretty quiet on the Hailstorm front, the Passport guys have bitten off a very large problem, and Hailstorm can't ship till the new version of Passport ships.
Seems like my ISP is having some problems with email, IM me if you need to MSN: the_com_guy at hotmail.com Yahoo: simonfell99 ICQ: 2013522
Friday, February 08, 2002
SCNS for SOAP 1.1: "Earlier this week we released Radio 8.0.4 with support for Simple Cross-Network Scripting. At the time we released a driver for XML-RPC, promising a driver for SOAP 1.1 later in the month. It's ready now." [Scripting News]
Temperature in San Francisco : 58.0 (via XMethods)
Trying out Sam's getQuote macro : [Macro error: Can't open stream because TCP/IP error code 10061 - Connection refused.]
On this day last year we got our first non-UserLand SOAP validation. It was Simon Fell's PocketSoap. The beginning of a productive friendship.[Scripting News] Wow, a year in Interop land, its been quite a ride, got to have some fun with Manila, Radio 7 & now Radio 8 on the way. Its worth remembering that Manila was probably the first "real" SOAP Web Service.
Thursday, February 07, 2002
Response's are now streaming out of the HTTP component, I must of done something wrong, I was expecting it to be harder than that :). Last steps are to plug the attachment policy goo into the DIME parser, so that large attachments get switched to streaming to disk, and to fold a chunked stream back into a single item.
Continuing to re-factor the attachments & HTTP code, I have the request side entirely based on streams, allowing you to send attachments larger than the available memory, making the same changes now to the response side. This is all good pre-work for the upcoming HTTP/1.1 support as well.
ws-i debuted today. Simon St. Laurent is looking for more information. I wish I had a crystal ball. Full disclosure time: the quote from company25 came from my boss's boss. [Sam Ruby's Radio Weblog] Unsuprisingly, there's a growing thread on this on XML-Dev.
Wednesday, February 06, 2002
Rock'n'Roll !, more progress on attachments, i now have DIME & MIME generating and parsing working on the PocketSOAP end, and DIME generating & parsing working on our .NET based SOAP framework. Time to start re-factoring the code. From an implementors point of view, DIME seems both simplier and more efficient than MIME.
This lists all the Userland Global Shortcuts
It looks like "Radio" is another one of those keywords that automatically get transformed into - *cough* smart tags *cough* - sponsored links. Changed my Axis/Radio interop to use "xdq" instead. [Sam Ruby's Radio Weblog] I spotted this at the weekend, in Manila (which has the same feature) there's a page that lists them all, and allows you to edit the list (IIRC). I couldn't spot the equivilent page in Radio, is there one ?
Giants forging Web services consortium. Microsoft, IBM, Intel and BEA Systems plan to educate businesses on how to build Web services and how to ensure they do it in a compatible way, according to sources. [CNET News.com] Perhaps the folks on decentralization who've been flaming SOAP every which way recently are on to something after all. It doesn't seem to be a very positive message for web services, if some big consortium is needed to tell everyone how to build services that interop. If I was feeling really synical I might be tempted to point out that the web services tools BEA ship haven't been involved in the soapbuilders interop testing.
Henrik confirmed I was on the right track, just a few endianess issues to fix in the code. Anyone know the .NET equivilant to htonl ?
Any of the DIME folks in the crowd care to double check my resulting header byte sequence ?
Making solid progress on the attachments support, I've got SwA working with Apache SOAP 2.2, Apache Axis and IONA's XMLBus, tried but failed with GLUE, which appears to be a bug on their end [they expect a content-length header, which is optional]. Also got some DIME support put together [My thanks to David Buksbaum for the DIME packaging code]. Anyone got a server with DIME support i can bounce some messages off ?
Back to the UDDI discussion, "For instance: my user inputs customer data for my CRM app, and I use a service to send the data. If the server is down, or unavailable, wouldn't using UDDI to find the nearest store-and-forward or caching service be a good idea? This is just off the top of my head. Transport agnostic roll-over seems like a huge win, IMO.". Hmmmmm, have to think about this one, off the top of my head, I would say if you have a reliable store and forward transport [my particular favourite being MSMQ], why would you even bother with the initial HTTP attempt ?
I just posted some comments on the current draft SOAP 1.2 encoding spec.
DaveNet: DIY Web Services. As Dave points out Radio supports both XML-RPC and SOAP, but unfortuantly fails to tell you enough to actually make a SOAP call, after a few guesses [starting from Sam's captured request], I figured out what a valid request should look like, here's a PocketSOAP generated request [captured with the ever faithful proxyTrace]
POST http://localhost:5335/ HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Accept-Charset: UTF-8, UTF-16
And the VB code to generate it
Keith says : "For instance, I would always use UDDI, even within a LAN, for automatic roll-over. How? Well, that's what I'm describing in my book today :-)" Of the people I've talked to who have used UDDI, this is the by far the most common reason for using it, but i just don't get it. Deploying reliable web services is the same as deploying reliable web sites [after all, its just HTTP], why would would you need start using UDDI, what's wrong with the usual DNS, Local Director / WLBS, Global Director style approaches ?
Ingo correctly points out that Web Services based on .NET Remoting [rather than ASP.NET WebServices] can be used without IIS. The oft cited wisdom is to use remoting for .NET to .NET work, and ASP.NET WebServices for Interop with other platforms. The remoting stuff can at times do things that aren't really supported in other tools [like remote references, and its tendency to type things via unpublished schemas], but you can use it in an interopable way. The sereration of format and transport [aka channel] in Remoting also gives you the flexiblity to add transports, say if you wanted to support a SMTP binding.
The White Mesa Soap toolkit comes with its own HTTP server, if you want to do Windows based Web Services with out IIS.
Speaking of overhead in DotNet web services... you have to run IIS. [Patrick Logan's Radio Weblog] Yes, the Java guys do seem to have more choice in this, but the only [non-Java] web servers I've seen people run on Windows are IIS & Apache. However it doesn't have to be this way, the ASP.NET web services are actually built on top of something called the HTTP pipeline, and there is an ISAPI filter/extension that puts requests into the HTTP pipeline from IIS. Although this is the only thing that ships out of the box, you can write code to host the HTTP pipeline yourself. I've been tinkering with hosting in a simple command line tool, so that i can use the ASP.NET engine for code generation [ala Gen<X>], and someone sooner or later is going to write the bits to host it from Apache. Brad's .NET Web Server project would also be a good candidate.
Saturday, February 02, 2002
I also spotted Ingo Rammer's weblog today as well. This guy seems to know an insane amount about the remoting architecture in .NET, his book is definitely on my to buy list.
Keith says, I think DIME is technically better than MIME for attaching files to SOAP messages. My favorite feature? Chunking :-) DIME appears to suit SOAP attachments better than MIME, I've written MIME parsing and generating code more times than i care to think about, and everytime i always try to find a decent library to do, rather than write it from scratch, but have been foiled at every attempt, and always end up doing it all myself. Generating correct boundaries is always a pain, most code i've seen just generates some random string and blindly hopes that's not in the payload. I prefer to check, but that comes with the cost of having to look for a string a bytes in the entire payload, which for an email message that's a few K is not a problem, but for a 100Mb file attached to a SOAP message it is.
The latest offerings from The Chemical Brothers currently spinning, I like it, they certainly don't appear to be loosing their touch, but topping Exit Planet Dust will take some doing.
Editors' Newswire for 2 February, 2002. Newswire stories, including: Is the WSDL W3C XML Schema invalid?. [xmlhack] There does seem to be a few problems with the supplied schema, IIRC it was enough to drive Don to write a fixed version.
The custom serializer sample is up !
I'm working on a new sample for PocketSOAP, that show's how to write custom serializers that plug-in the PocketSOAP serialization framework. And in an attempt to kill two birds with one stone, its based on the Apache map serialization, so i can test that out as well.
Mark got his Radio/.NET interop going, always good news.
Friday, February 01, 2002