Simon Fell > Its just code
Simon Fell
Based on the test Jake & I did, it looks like you should be able to call .NET webservices from Radio.
Hint to Mark and everyone: if interoperability is what you want, first look here. Pick a server from the first table, pick a client from the second table, and look at the results before you proceed. It will save you a lot of headaches. [Sam Ruby's Radio Weblog] I'm with Sam 100% on this one. So, how do we get the 50 odd implementations listed here but not here to join in ?
Sjoerd's example doesn't specify the namespace URI, come on guys post some thing that's (a) equivilent to the other examples, (b) is callable by the sample client code. Some of those lines of overhead are nothing to do with web services but just the fact that C# is a OO language.
Come on Dave, I'm preparred to see the error of my ways, post an example without the 7 line of overhead.
James responds to my earlier question : Because even I learn something new every day ;-) . I can relate to that !, the SoapRpcMethod attribute switches the service from the default doc/literal style to using section 5 encoding.
Dave Winer asks: Look at all the overhead. Sam says : In that sample code, there are three lines of overhead. Yeah, I skipped the top line earlier because most ASP.NET based pages will have a declration of some form up there, typically saying its a Page, or WebService, what language its in etc.
ROTFL, The Fellowship of the SDK : In the race to play Saruman to Bill Gates' Sauron, Scott McNealy has just pulled ahead of Larry Ellison by a hair.
Sun has just made available Early Access Release 1 of the Java (TM) Web Services Developer Pack. The slogan chosen to inspire the Java faithful: "One Pack to Build Them All". Complete with nifty LoTRish graphic. Clearly, someone in marketing hasn't quite thought through all the ramifications of this claim. Is McNealy the Dark Lord? Is this code destined to be thrown by Frodo into the Crack of Doom and Obsolescence? Will the lesser Java developer kits lose their power once this happens, and fade away? Is Ellison relegated to the role of one of the Ringwraiths? Or will he instead choose to play Gollum?
We'll have to wait for Release 2 to hit the theaters to find out... [Curt Hagenlocher - WinTech OT Mailing List]
Web Service Interop I can't work out why James didn't setup the .NET endpoint to be the same at the other endpoints, that way a single peice of client code could of called all 3 without changes. All it should take is adding the SoapRpcMethod attribute to the sayHello method.
Read this article on Web Services interop. It's an eye-opener because they include sample code for a web service in .NET. Look at all the overhead. Did they really design an environment for web services? If so what are all those magic incantations about?
[Scripting News] Huh ?, I don't follow this at all, the .NET code is
<%@ WebService Language="C#" Class="Hello" %>
using System.Web.Services;
[WebService(Namespace="urn:Hello")]
public class Hello {
[ WebMethod ]
public string sayHello(string name) {
return "Hello " + name;
}
}
Now there's a grand total of 2 things in the above code that you need for a web service, that's not normally needed, the [WebMethod] attribute which says expose this method as a webservice, and the [WebService(Namespace="urn:Hello")] attribute which says this class is a webservice, and its methods should be in the urn:Hello namespace. Hardly "all those magic incantations", So come on Dave, what's the equivilent in Radio ?, a valid request should look something like
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope">
<s:Body>
<m:sayHello xmlns:m="urn:Hello">
<name>Fred</name>
</m:sayHello>
</s:Body></s:Envelope>
Wednesday, January 30, 2002
BTW, you should check out the contents for the March 2002 issue of MSDN Magazine :)
It certainly helps to have content that people will come back to see daily, such as the blogs run by Dane, Garth, and Simon. [Bill Simoni's Radio Weblog] Wow, I guess the pressure's on now to write something every day, thanks Bill !
Alan Ewald's talk on XML Spaces looks particularly interesting.
See you at the Web Services DevCon
Discussion of the recent update to the Apache Jakarta site can be found here. [Sam Ruby's Radio Weblog] You should check out the discussions, there are some great sound bites, "in truth EJB and particularly Entity beans is a less that elegant kludge" and "In truth J2EE is kind of a scam."
Tuesday, January 29, 2002
TAG: Managing the Complex Web [xml.com]
Monday, January 28, 2002
Not much SOAP work done today, I'm currently trying to get my [now aching] head around XmlAttributesOverride
Sunday, January 27, 2002
ok, just bounced a few requests off the apache interop test server, thats running Apache Tomcat/4.1-dev (HTTP/1.1 Connector) and does handle the Expect header properly. Hmmm, i wonder how widely deployed Tomcat < 4.0 is in the SOAP world.
I'm tinkering with the HTTP stack in pocketSOAP, starting in on the re-factoring to support HTTP/1.1 and the various bits and peices need to make the whole thing streaming based. I notice though that Tomcat [v3.3] completely ignores the Expect: 100-continue header I send, despite claiming HTTP/1.1 in its response. Before i go to far, anyone know if this is fixed in the newer versions of Tomcat ?
Interesting discussion going on over at HTP about async programming models.
Few tweaks later, and i have my XML coffee cup back, playing taglines, and links the right way up !
BTW, i got the new theme from Garret's Radio Weblog.
Switched themes, not sure i like the upside down links.
Hmmm, it appears that uninstalling the trial version of Homesite 5.0, has compeltely trashed my 4.5 install [even though they were in different directories]. grrrhhh. And how is it Homesite gets worse with every release ?
I see Sam is playing with themes, doesn't look bad.
Saturday, January 26, 2002
I notice that the Radio Status Center, now has a cloud status, with a "75% of 10.0MB is free". Could come in handy, but I'm upstreaming to my own space, not the standard Radio cloud, so its not actually right. Perhaps it should get turned off if you change the upstreaming options ?
Steve Waring posted some revised interop results for Spray, it looks like the 2.0 of 4s4c is getting close, 22 out of 23 for the base round of tests :)
Success with SOAP::Lite as well.
Some progress, the 150Mb test now runs to completion, although its still a memory hog. Success with Axis and partial success with Apache SOAP 2.2 which appears to change the content transfer encoding based on the content, and for some reason drops to base64 at times. I'll need to pipe the base64 decoder into there as well.
The transient memory load for the attachments is pretty evil, the HTTP code is going to need a serious going over, I'll proably end up having to move to HTTP/1.1 so that I can do expect 100 to get the request started properly [including any authentication stuff etc], and then start streaming the request. That way it won't need to buffer copies of it for re-sends. Then it needs to expose the response as a stream as well, so that the attachments can be written straight to disk if needed. Lots to do !
Well, i can bounce a 15Mb test file around ok, few issues though with the 150Mb test.
Making progress on the SwA support, its now parsing the response back from Axis.
Friday, January 25, 2002
Pop Quiz, given a HTTP/MIME request like this one here, how do you ensure that the Mime boundary string isn't used in the attachment payload, without buffering the whole thing in memory first ?
POST /axis/servlet/AxisServlet HTTP/1.0
Content-Type: Multipart/Related;
boundary="MIMEBoundary012345";
type="text/xml";
start="<38CCC118-AEB9-48F0-AE83-C56E405044B9@swa.pocketsoap.com>"
Accept-Charset: UTF-8, UTF-16
User-Agent: pocketSOAP/1.2.4
Host: utahsaints.simonathome.com:8081
Content-Length: 20102
SOAPAction: test
--MIMEBoundary012345
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <38CCC118-AEB9-48F0-AE83-C56E405044B9@swa.pocketsoap.com>
<S:Envelope
S:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:a='urn:EchoAttachmentsService'>
<S:Body><a:echo>
<source href='cid:B05EC49A-365F-4382-83E8-7580F34E6C28@swa.pocketsoap.com'></source>
</a:echo>
</S:Body></S:Envelope>
--MIMEBoundary012345
Content-Type: application/x-zip
Content-Transfer-Encoding: binary
Content-ID: <B05EC49A-365F-4382-83E8-7580F34E6C28@swa.pocketsoap.com>
PK....
--MIMEBoundary012345--
Started looking at SwA again. The sending part is pretty straightforward [if not massively efficient without a HTTP stack with chunked transfer encoding support]. I can package up random binary attachments and have the Axis EchoAttachment sample send it back. Just the *ahem* minor task of parsing the response left todo. BTW, anyone know of a good portable C++ based MIME parser ?
I just released PocketSOAP v1.2.3
W3C announces Web Services Activity This includes a web services description working group !, looks like Gudge & Tim got their christmas wish after all !
http://www.pocketsoap.com/ gets a coffee mug.
What Object Does SOAP Access?. [Sam Ruby's Radio Weblog]
Thursday, January 24, 2002
I just posted details on a new endpoint for the soapbuilders doc/literal interop testing.
System.Web.Services.Description.ServiceDescription mmmmmm tasty !
ideas about autogenerating WSDL or other IDLs from UserTalk scripts. Steve Ivy has ideas about autogenerating WSDL or other IDLs from UserTalk scripts, but I think the very concept of generating IDL from code is flawed; it leads to interfaces that expose unnecessary implementation details. Supposedly the way to go is to write the IDL first, then write your app. [Hack the Planet] Wooo Hooo, the voice of reason !
This sounds interesting : [Sam Ruby's Radio Weblog] I can't resist: in the bootstrapping of the open discussion of WSDL, it looks like the thin cable has reached the other side. Now let me annouce my intentions. That plan is to produce a busy developers guide to WSDL.
ALIDL : Dave is asking for comments on this, I think i still stand by most of my last set of comments
- EncodingStyle
- path / SOAPAction
- Method Namespace
- I also made a comment about the lack of types, which i can't find right now.
Hype Alert : InfoWorld : W3C's chairman talks about the momentum of the Web services standards effort. What a glowing picture that paints. Pity its absolute bollocks !. SOAP 1.2 is running way late, SOAP 1.1 was submitted in May 2000, over 18 months ago. WSDL 1.1 was submitted in March 2001, 10 months ago, and the W3C appear to have done preciesly nothing with it.
Hey it worked :). So Dave, when can we buy a real Userland coffee mug ?
Big news if you like coffee mugs..
[Scripting News]
Bob Cunnings has posted a detailed agenda for the WSDL Interop F2F.
Wednesday, January 23, 2002
Cool, Bob Cunnings has an IE based sample client for the SOAP digest auth demo.
In theory at least, the demo implementation of the SOAP digest authentication spec running at http://soap.4s4c.com/test_doclit/sf.soap now supports mutual authentication as well.
Simon Horrell kicked off another interesting WSDL thread, over on the WSDL mailing list.
James got my point, but we disagree on the fix, I'd rather WSDL was fixed, than we work around it with tool support.
Patrick Logan Writes : Fortunately the tools I use write the WSDL for me. I have to write the interface in Java first, which is significantly less of a pain than writing WSDL. That certainly works, and I've been known to do something similar myself, but either your tools have to have a really good set of defaults, or you have to understand what its generated, and tweak as necessary.
I'm trying to get Radio to subscribe to the ThinkGeek what's new file, but it won't take it. Not sure why, its RSS 0.91, so it should work, right ?
James, I think you might be missing my point, I agree that the correct approach is to write the WSDL first, the write the server and/or client code from that. But for any non-trivial service, writing the entire WSDL by hand [even with a good xml editor] is painful and error prone. For one of the projects I'm working on, we manually write the XSD schemas for the messages [the Schema editor in XmlSpy is great for this], and then we have a simple XML file that details the rest of the info, this makes it easy to author the interface before the implementation. Finally we have a little tool that glues it all together and spits out a WSDL version.
Grrrhhhhhghhghghgh, it appears that in fixing the empty array bug, I introduced another bug. If you're using arrays, then i'd skip the 1.2.2 release and wait for the next one.
Tuesday, January 22, 2002
There's a demo implementation of the SOAP digest authentication spec running at http://soap.4s4c.com/test_doclit/sf.soap
I just finished a first cut of a server implementation of the SOAP digest authentication spec. I'll probably tidy it up, and put it up for some interop testing later tonight.
I installed the current version of Axis earlier, pretty painless, grab the source from CVS, build and run. The Attachments support seems to be working, which is what I'm interested in looking at. Next step is to see if my pocketSOAP attachment code works with it.
Monday, January 21, 2002
I just set-up a poll for required features for the pocketSOAP set of tools on the pocketSOAP mailing list. Join the list and vote.
Having more problems with .NET webservices. Perhaps the MS guys should get organized and ship one complete SOAP/WSDL toolkit, rather than 5 half baked ones [theres 2 in .NET, MSTK2.0, ATL and Biztalk]
I'm just having no luck at all with ASP.NET web services.
Cool, just found the RSS feed for Brad's weblog.
As I suspected WS-License and WS-Security allow for the passing of credentials, but doesn't define an authentication scheme, rather they assume you'll be using some existing authentication scheme, like kerberos or x509 certificates.
I found The Rules for Open-Source Programming to be both insightful and a joy to read. I especially like Ralph's more rules, and Sunir's corrolaries has given me much to think about. [Sam Ruby's Radio Weblog]
Grrrhhhh, I see the folks at msdn have had done their monthly random shuffling of pages, lots of 404s. Come on guys, its a joke how often you mess it up, get a grip !.
I'm looking at SOAP based authentication today, how to do authentication with no reliance on the transport used. So far i've looked at SOAP Extensions: Basic and Digest Authentication from Bob Cunnings and Rich Salz. Pretty easy to implement [I knocked up a pocketsoap / c# client for this in a couple of hours], and I like the fact that its safe from replay attacks.
I'll probably take another look at the MS GXA specs later, but i suspect for authentication they're going to be using Kerberos tickets packaged in WS-License headers, which will be fine, when Passport 3.0 ships with Kerberos support.
Know of any I've missed, then let me know.
Sam, thanks for the kind words
Sunday, January 20, 2002
I keep seeing Lucas Marshall appear in weblogs.com, i go look at page, but its the same, what's going on ?, then i realize its probably from the changes to the "now playing" part, doh !
Doing more work on 4s4c 2.0.
You should now see under my navigation links at right what is now playing in iTunes on my computer. This is my first try at making a Radio Tool, and it's not complete yet, but once it is I'll make it availble to all. [Lucas Marshall's Weblog] Cool, another Music Radio Integration
You just can't beat Dave for flow.
More talk about WSDL. I have no issues with WSDL the concept, its just a machine readable description of a SOAP endpoint. But I have lots of issues with WSDL the reality.
- Its not praticle to author by hand, this is a problem if WSDL is going to be the IDL of WebServices [ more about this in Gudge & Tims article on xml.com ]
- Writing WSDL tools is a complex problem, there are issues with the spec, its deliberatly loose about some things, it [in reality] relies on XSD, tools for working with XSD are just starting to become available for the popular platform, but XSD is also very complex, there are issues with the XSD tools as well.
- Because of (2), most of today's WSDL tools suck big time, sure if all you want to do is call add(int a,int b), then i'm sure you'll see few issues. If you want to do something more realistic [use doc/literal SOAP with validating endpoints, make use of SOAP Header], then you're in for a tough time. For example, try running your favourite WSDL tool against the Whitemesa SOAP Digest Authentication server. I spent a day and half trying to get .NET's wsdl tool [wsdl.exe] to read this, and finally gave up, and started coding by hand. the Wsdl2java tool in GLUE also had similar problems. [I'm not picking on these 2 specifically, but they seem to be 2 of the more advanced wsdl tools]
Saturday, January 19, 2002
Jake says the WinAmp API is pretty easy to use, I'll check it out, its got to be better than trawling the window titles
Radio Rocks !, As you can see, i succesfully completed my project to hook WinAmp and Radio today, I wrote up the details if you want to see just how extensible Radio is.
yes ! it worked <vbg>
ok, so now we have (this is just inline inside the item template)
<%
local (adrblog = radio.weblog.init ());
local (adrposts = @adrblog^.posts);
local (postNum = "<%paddedItemNum%>" ) ;
local (adrpost = @adrposts^.[postNum]) ;
local (tunz = "[no music !]" ) ;
if defined ( adrpost^.tunz )
{
tunz = adrpost^.tunz ;
};
return tunz ;
%>
Just need to hook the post/edit stuff now and create the extra field
that was painful, but here's the script to pull out an additional item from the webLogData posts table
<%
local (adrblog = radio.weblog.init ());
local (adrposts = @adrblog^.posts);
local (postNum = "<%paddedItemNum%>" ) ;
local (adrpost = @adrposts^.[postNum]) ;
return adrpost^.tunz ;
%>
Todo
(i) Hook the edit/creation of posts to record the results of calling the DLL
(ii) Gracefully handle all the previous posts with no .tunz field
BTW, I wrote a little external DLL for Radio that gets you the current song from WinAmp. Its a pretty painless exercise, and makes the expansion possibilities for Radio almost limitless :). Here's the docs for writing external DLL's
Ahhh, i was sooo close. Hmmm, the item template gets applied to each item at render time, not at creation time. back to the docs.
PocketSOAP 1.2.2 hits the streets.
Starting the process of getting 4s4c 2.0 to do the right things, its starting to come together
Friday, January 18, 2002
Just added support for xsd:hexBinary, and the echoHexBinary interop test. Updated results posted
Just released a WinInet based transport sample following an earlier discussion on the pocketSOAP mailing list
I see Dave and Sam are talking about WSDL again. Which is good timing, I've spent most of the week banging my head on bugs in various WSDL tools. I'm finding that Bob's SOAP Digest Authentication demo to be a really good torture test !. Please Please Please can we have a WSDL working group.
Most of the 4s4c services are back up and running, see soap.4s4c.com
Thursday, January 17, 2002
Just posted a patch to Apache SOAP to fix the problem.
I'm looking into a rather strange looking Apache SOAP 2.2 / pocketSOAP problem
Wednesday, January 16, 2002
Tim and Gudge have a great new column out on WSDL interop, all good points. I just hope that santa brings them their christmas wish !
4s4c 2.0 is a major new version, that has the pocketSOAP engine at its core, I've wanted to work on this for a while now.
Arrrghhhh, it feels like YATT is just nickel and dime'ing me to death with the details, I'm going switch to working on 4s4c 2.0 for a while.
Revised Interop results posted against the 1.0 .NET endpoints.
Tuesday, January 15, 2002
Just checked/updated the .NET related samples for released version of .NET
The urban legend that you can't use a MSTK2.0 high level client with an Apache SOAP 2.2 server continues to circulate. Its just not true ! read more
.NET Framework SDK goes RTM
Monday, January 14, 2002
Back on the YATT train ....
Sunday, January 13, 2002
Fixed the empty array problem, also there are some fixes for the propertyBag serializer, now that serializers are being pooled.
Articles migrated over from simonfell.manilasites.com
Hey, soma fm has some new channels, check it out.
Ok, I love Radio 8 so much, I'm moving my weblog from simonfell.manilasites.com to here [www.pocketsoap.com/weblog/]
So, see the little timestamp under here ?, how do i futz with that, what i want is an equivilent of MSNMangler for when I create new posts. Guess I'll need to start reading the docs.
Upstreaming now to www.pocketsoap.com
Got the permalinks re-generated.
Hmmm, still having permalink problems, only the friday one is working :(
For a while now, many people have stated the doing document/literal soap will interop better than doing section 5 encoded soap. I generally agree, there's a good definition of what's expected on the wire, and you get the added benifit of being able to use a validating parser to check the messages [something that's not possible with the section 5 encoding]. But in practice the XSD spec is approx. an order of magnitude larger than the section 5 spec, and you only get the interop if everyone agrees on the intereptation of the XSD spec, and if everyone implements the whole of the XSD spec. Current implementations aren't there yet, doc/literal toolkits have as many [and more scope] for interop issues as section5 based tools.
Saturday, January 12, 2002
Job for today : find out how to migrate content from simonfell.manilasites.com
Friday, January 11, 2002
Some Radio'ized wire dumps from the SOAPBuilders interop testing
Hmmm, slight problem with empty arrays in pocketSOAP
Web Services DevCon! See you there [The Sells Spout]
I write a little about how I got started with this stuff over here on my Radio Weblog. [Jake's Brainpan]
Ahh well, back to work
Wow, Dave fixed the CSS upstreaming already !, thanks Dave
http://simonfell.manilasites.com/
It appears that i can't upstream css files
Hmmm, so i wonder what the Radio Userland\DLLs\WinAmp.dll does ?
ok, fixed my open manila site problem.
Wow, that's a lot of Radio blogs over at weblogs.com
Hmmm, the Groove Salad logo is too big to fit on the left....
Hmmm, so the perma-links seem to be broken ...
ok, so i did "open manila site" and managed to type in the wrong password, whilst having the save password box chceked. How do i put in the right password ?
Congrats to Jake and the rest of the Userland crew for shipping Radio 8.0 !

