CentOSでLAMP、そしてNuSOAP+Silverlightは可能か?

クライアントが Silverlight な場合、バックエンド(サーバー側)はIIS 7.0を使うので、自然サーバーとの通信は WCF を使うことになります。。。っていうか、Microsoft の一番押しらしいんですが、MCF を使う場合には IIS 7.0 が必須なんですかね?

予算がある場合は、SQL Server 2008を買って、SQL Server 2005/2008を買って、IIS 7.0をインストールし、その上で、Silverlight を Visual Studio 2008 で開発して、デザインは Blend 3 を使って、ということが可能なのですが。
あまり予算が無い時はそうはいきません。つーか、そんなに予算をつぎ込めません!

なので、自然とLAMPの組み合わせを使うのが普通なのですが、ブラウザベースでリッチクライアント(俗にいうRIA)を作る場合は、Flash が第一の選択肢になります。あいにく Flex は触ったことがないので、どこまで作りやすいのか/無料なのかが不明なのですが、言語として Java を使う必要があるのが難点。

まぁ、そういうわけで、

・クライアントに Silverlight
・サーバーに PHP + MySQL

というのはどうでしょう?

あいにく Flash で本格的なアプリを作ったことがないので(使ったことはありますが)、想像でしかないのですが、開発時の再利用は結構大変なのではないかと。そういう場合は、Flex を使う訳ですが。

さて、Flex を使うとサーバーに Java が必要ですが、Silverlight を使っても ASP.NET を必要としません。DLL だけを置いてダウンロードできるようにすればOKです。そういう点では、Flash と同等の配置の手軽さが取れます。
Silverlight では開発言語は .NET を使えるので、クラスライブラリ等を使い再利用が可能です。NUnitやSilverlightのUnitTestも使えるので、かなり頑健なものができそうです。

で、問題は、サーバーからデータを持ってくるときは何を使うのか?ですね。

まぁ、サーバーがPHPなので、XMLサービスでも良いし、独自のWEBサービスを使ってもよい。が、基本はWSDLを公開しておけば、それを参照してクライアントのクラスを自動作成できる。

連載 Webサービスのキホン(4)
WSDL:Webサービスのインターフェイス情報
http://www.atmarkit.co.jp/fxml/tanpatsu/21websvc/websvc04.html
Windows Communication Foundation概説
WCFの基本的な概念
http://www.atmarkit.co.jp/fdotnet/wcf/wcf02/wcf02_02.html

なので、基本的なプロトコル?をサポートしてとけば、相手がPHPでも良い訳です。
PHP の場合、SOAP を扱うための NuSOAP が老舗なのでこれを使います。
詳しい実験は後日やるとして、方針をざっと書き出すと。

1.クライアントアプリを Silverlight で作る。
2.サーバーを CentOS の LAMP 環境で作る。
3.PHP の NuSOAP を使ってサービスを WSDL で公開する。
4.永続化等は MySQL を使う。
5.公開済みの WSDL を Silverlight 側でサービス参照する。
6.通信は WCF に準じる?
ただし、いくつか問題があります。

・Silvelight はクロスサイトドメインアクセスの問題があって、他のドメインにサービスを繋げないようになっている。
・NuSOAPを使って WCF 準拠ができるのか不明
・PHPのパフォーマンスの問題

基本は巷のレンタルサーバーのPHPを使って公開、クライアントはSilvelightで。
という一見不思議な(?)環境を整えたいので、ここらはクリアにしておきたいところです。
クロスサイトの問題は特定のhtmlを公開時に置けばよいので、まあ個人運用にはなんとかなりそうですが、既存のサービスを silverlight 側で使えないのはちょっと痛いです。
fs
Silverlightでのクロスドメインアクセス
http://d.hatena.ne.jp/coma2n/20080430/1209516432

まぁ、最初はプロキシを作る。そして、Microsoft が Siverlight + WCF を広めるのを待つ(各サービスが WCF に対応しようとする)のがベターかなと。

カテゴリー: 開発 パーマリンク