locked
SilverlightとMySQLの連携について RRS feed

  • 質問

  • 初めて質問させていただきます。
    マイクロソフトの関連サイトで色々質問しまくって、流れ流され、そして追い出され、ここまで来ました(ToT)。
    半分冗談です。

    自分は現在、PHPとMySQLで業務システムを開発しています。
    .NET開発は経験ありません。
    根っからのLAMP野郎です。

    それで、「PHPで開発した既存の業務システムのフロント部分にSilverlightを組み込めるか?」っということで調査しています。

    なんか、面倒なので「っんなことできるか、ボケ」と突っぱねたいところですが、
    せっかくExpression Studioも購入したので、いろいろ試しています。
    Blend2は楽しいっすね。
    FLASHみたいだ♪。

    そこで質問ですが、
    データベースに接続して、UIコントロールにデータ表示するコンテンツを作りたいのですが、
    例えば「LINQ to SQL」を用いた時のような、SQL Serverに接続してデータグリッドで表示するのと同様なしくみで、
    SilverlightとMySQLの組み合わせで作りたいと思っていても、方法が分かりません。

    ●MySQLの場合は、どのように構築するのでしょうか?
    →Silverlight2テクノロジ~ナンチャラっていう書籍では、
    PHPでMySQLを接続して、PHPの中でXAMLと一緒に生成するという方法が載ってますが、
    たしかにこれでMySQLとSilverlightは連携できますが、XAMLのソースコードはえらい量なので、
    埋め込みにかなり工数がかかる(これがVisual Studioで簡単にできるなら、やってもいいですが)のと、
    デザイン部分だけの生成のみで、Silverlightの制御まではできません。

    →何がしたいか、もうちょっと補足しますと、
    ・まず、目的として、PHPコンテンツの中で、ObjectタグによりSilverlightのXAPファイルを読み込みたい。
    ・さらに、そのSilverlightはMySQLのデータを必要とする。
    ・しかし、MySQLと接続できるのはPHPだけ。
    ・Silverlightと直接接続できるものならそうしたい。でもそんなことはきっとできない。
    ・さぁ、どうしましょう。


    ●「LINQ to MySQL」っていうのがあれば上記問題は解決しそうですが、そんなものあるのでしょうか?

    以上です。

    どなたか、分かりやすいアドバイスをよろしくお願いします。
    2009年6月23日 5:30

回答

  • 別にXMLベースでなくてもいいですよ、単純なやりとりだったら単なるプレーンテキストでもREST形式のサービスでも全く問題ないです。
    Silverlight側からは、HttpRequest/HttpResponseでそのメッセージを交換します。
    取得後はXMLであればCodeZineのサンプルのように、LINQ to XML で簡単にパースできるし、JSON形式であればデシリアライズすればそのまま利用できます。

    サーバー側もASP.NETを利用していいというなら、ASP.NETでWebServiceを作れば、
    メッセージ通信の部分はVisualStudioががんばってくれるので、Webサービスに不慣れであってもXMLを意識しなくても作れるので楽ですよ。
    というか、ツールの助けなしにWSDLやSOAP組み立てるのはあり得ない気もします。






    #直接の話題とはそれるし、僕は使ったことがないけれど、MySQLに対するLINQ実装は存在しますよ。
    #もちろんSilverlightから直接は使えないよ。
    • 回答としてマーク Piano Tom 2009年7月1日 7:35
    2009年7月1日 5:46

すべての返信

  • 大変そうですね。

    まず、PHP は サーバーサイドの技術であり、Silverlight のような クライアントサイド の技術と同じように考えてはいけません。
    なので、Silverlight から直接データベースに接続するのではなく、Silverlight から WebService 経由でデータベースにアクセスすることになります。
    PHP に慣れているのであれば、PHP で WebServcie を作成して WSDL を公開、Silverlight からWebService を参照という手順で構築できると思います。

    手前味噌ではありますが、CodeZine にて Silverlight と 楽天WebService の連携を取り上げたことがあります。
    http://codezine.jp/article/detail/3596
    2009年6月30日 8:58
  • かるあさん、アドバイスありがとうございます。

    やっぱりそうなんですかー。
    色々と調べている過程で、「WebService」っつうのを経由しないとできないのかもな~と、うすうす気づいていました。
    ただ、確信がないうえに慣れないMS環境で、さらに実際の事例も何もないので、暗中模索な感じでした。
    CodePlexにもドンピシャなサンプルないし。
    ニーズはかなり多いはずなのですけどね。

    Visual Studio 2008は慣れていないので、まだ憶測なのですが、つまり、PHPでWSDL を公開すれば、
    きっと、SilverlightのWebプロジェクトにある「サービス参照の追加」で、
    参照できるPHPのサービス名か、あるいは変数名といったものがペロンっと出てくるという事でしょうかね?
    それをイベントハンドラによって取得すると?

    そのためにはまず、PHPでWeb APIを作る必要があると・・・。
    っていう解釈で良いでしょうか。

    だとしたら、結局はXMLベースのやり取りになるってことですね。

    たしかにFLASHのActionScriptでMySQLとやり取りするのも、
    似たような手続きしてるけど、でもなんか、これって、

    FLASHとPHP+MySQLの連携より面倒じゃね?

    っと思ったり思わなかったり。
    なんで後発なのに簡単にできね~んだよ~、マイクロソフトサンヨ~(-_-#)。
    きっと、セキュリティーとかの理由があるんでしょうけど。

    とりあえず、その辺に転がっているWeb APIを参考に、PHPで試行錯誤してみます。

    かるあさん、ありがとうございました。
    2009年7月1日 5:21
  • 別にXMLベースでなくてもいいですよ、単純なやりとりだったら単なるプレーンテキストでもREST形式のサービスでも全く問題ないです。
    Silverlight側からは、HttpRequest/HttpResponseでそのメッセージを交換します。
    取得後はXMLであればCodeZineのサンプルのように、LINQ to XML で簡単にパースできるし、JSON形式であればデシリアライズすればそのまま利用できます。

    サーバー側もASP.NETを利用していいというなら、ASP.NETでWebServiceを作れば、
    メッセージ通信の部分はVisualStudioががんばってくれるので、Webサービスに不慣れであってもXMLを意識しなくても作れるので楽ですよ。
    というか、ツールの助けなしにWSDLやSOAP組み立てるのはあり得ない気もします。






    #直接の話題とはそれるし、僕は使ったことがないけれど、MySQLに対するLINQ実装は存在しますよ。
    #もちろんSilverlightから直接は使えないよ。
    • 回答としてマーク Piano Tom 2009年7月1日 7:35
    2009年7月1日 5:46
  • かるあさん、ありがとうございます。

    なるほどなるほど、ようやく光が見えてきた感じです。
    だいぶ方向性が見えてきましたので、引き続き調査していきます。
    VisualStudioそのものについても、いろいろ研究しないといけないようですね。

    教えていただいたDB_Linqもダウンロードしてみましたが、いまのところ、使い方が全く分かりません(笑)。
    それに、おかげさまでWebサービスについて試行錯誤することがてんこ盛り状態なので、後でいじってみたいと思います。

    また、この件で壁にぶち当たった時は、よろしくお願いします。

    ありがとうございました。
    2009年7月1日 7:32