ものがたり(旧)

atsushieno.hatenablog.com に続く

on reduced CLR

昨日のmono meetingでちょっと話に上がったCLRの削られた奴について、ちょっとだけフォローアップ。

昨日ほとんど話をしなかったHosting APIのコアとなるSystem.Silverlight.dllには、SoapHttpClientProtocolっていうクラスがあって、これはSystem.Web.Services.Protocols.SoapHttpClientProtocolと似たような使われ方をしている(つまり派生クラスを定義してWebサービスのラッパーにすることが出来る)。で、これがSOAPをしゃべるのかというと、実はそんなことはないらしい。実のところXML Schemaはサポートされていない*1し、WSDLSOAPも当然サポートされていないわけで、SOAPをまともな意味でしゃべるのは無理だ。このクラスは、実際にはASP.NET AjaxでサポートされるJSON + System.Web.Servicesなサービスとのやり取りをするのに使われるらしい。

Windows専用のSilverlight SDKにはslwsdl.exeというツールが入っているのだけど、これは(full) CLRの機能を使っている*2ので、余所のWSDLからproxyクラスを生成してくれる。ただしSL SoapHttpClientProtocolでサポートされている範囲は限られているので、たとえばAmazon Web ServicesWSDLを食わせても、何も出力してくれない(wsdl.exeではでかいコードが生成される)。

もうひとつ。ASP.NETはサポートされないのだけど、これはサーバ技術なので、Silverlightアプリケーションみたいなもので使う意義はもともと無い(はず)。ADO.NETについては使い道があるといえばあるけど(DataSet)、まあ必須とはとても言えない機能だろう。

そんなわけで、SilverlightではCLRの機能はたくさん削られていて、不便に感じる人は多いかもしれないけど、僕はポジティブに評価できるのではないかと思う。*3

*1:この点について参加者の皆さんから非常に「ポジティブな」声が多々聞かれたことには驚いているw

*2:と思われる。逆に言えば、だからこそSL SDKWindows専用なのだろう。

*3:まあ、もともとmscorlib/System/System.Xmlくらいでしか生きてないからね、僕はw