locked
Silverlightの開発で、初心者の質問です。 RRS feed

  • 質問

  • Silverlightで、C#を用いてプログラミングをしたいと考えている者です。

    Silverlightが使えるのは、送信側ですか?受け手側ですか?

    送信側でプログラミングができるなら、PictureBoxの内容を、配信できないのでしょうか?

    仕様を読んでも、わかりずらかったので、初心者ですが教えてください。

    2008年3月3日 20:49

回答

  • sinsinn さん、

     

    Silverlightでは、サーバへのアクセス(FTPのようにTCP/IPネットワークでファイルを転送する。)のようなことが、できるのでしょうか?

    これは Silverlight 2 でできるようになります。


    オンラインゲームの原理

     

    通常、「グラフィックの描画」はクライアントで考えればよいでしょう。どういうものを想定されているのか、わかりませんが、サーバーで「描画したもの」をクライアント(Silverlight)に送り込むより、描画に必要な情報を送るのが簡単です。サーバー側でデータを集計したグラフをイメージ化して、クライアントで使用する、というようなケースはあるかもしれませんが。

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    2008年3月7日 17:56
  • 大野さん、回答をありがとうございました。

     

    だいぶ、頭の中が整理されてきました。

     

    オンラインゲームを、よくよく冷静に考えると、

    始める前に、なんGバイトものプログラムをクライアント側にダウンロードしていました。

     

    そうですね、このプログラムがデータをもとに、「グラフィックの描画」をしているのですね。

     

    『Silverlight 2をC#のプログラムラミングする本』が出たら、もう少しのんびりと考えます。

     

    C#に、どんどん対応していってください。

    マイクロソフトさんに、期待しています。

    2008年3月8日 13:59

すべての返信

  • sinsinn さん、こんにちは。

     

     sinsinn さんからの引用

    Silverlightで、C#を用いてプログラミングをしたいと考えている者です。

    Silverlightが使えるのは、送信側ですか?受け手側ですか?

    送信側でプログラミングができるなら、PictureBoxの内容を、配信できないのでしょうか?

    仕様を読んでも、わかりずらかったので、初心者ですが教えてください。

     

    "送信側"、"受け手側" というのはどういうことでしょうか? サーバ側、クライアント側という意味でしょうか?
    "PictureBox の内容を配信" というのはどういうことでしょうか? クライアント側で表示された段階で '配信はなされている' と思いますが、サーバからファイルとしてダウンロード可能ということでしょうか?

     

    うまく説明できませんが、一般的な HTML / JavaScript とほぼ同じ考えで良いと思います。 Silverlight は動作に関する情報はサーバにあり、それがクライアントにダウンロードされることによってクライアント側で動作自体しているという見方で良いと思います。

    2008年3月4日 1:34
  •  

    ありがとうございます。

    サーバ側、クライアント側です。

    「クライアント側で表示された段階で配信はなされている」ということは、

    サーバ側で、Silverlightをプログラミングしてフォームを作ると、

    それがクライアントにダウンロードされることによってクライアント側で動作自体しているということですか?

    サーバ側でC#のPictureBoxを使ってグラフィックを表示するようにすれば、ライブ中継できますか?

    例えば、Webカメラのライブ中継みたいなこととか、

    サーバ側の即興CGを、クライアント側に表示することとか、

    サーバ側のモニタを、クライアント側でながめるとか。

    ダウンロードの意味を、うまく理解できませんでした。

    Silverlightのできることが、HTMLのホームページでできることを考えればいいのでしょうか?

    そうすると、

    サーバ側のコンピュータで描いている・描き続けているグラフィックを、クライアントがながめることは、できない。のかな?

    一般的な HTML / JavaScript の知識も、個人のホームページを作るぐらいしかもってはいないので、

    優しく教えてください。

    2008年3月5日 13:23
  • JavaScriptやFlushはご存知でしょうか。SilverLightはJavaScriptやFlushと似たようなものだと考えて下さい。

    htmlで作られている場合、何かをクリックしたりすると必ずサーバー側までクリックしたよというのが戻ってきて、サーバからクリックした事に対応する処理が行われて新しい表示に切り替わります。

    JavaScriptやSilverLightは、処理によってはWEBブラウザが動いているクライアントPCの中だけで処理できるようになっていて、必要だったらサーバまで戻ってというような事ができます。
    FlushやSilverLightがJavaScriptと異なるのは、JavaScriptよりもよりグラフィカルなものの扱いに長けているという点です。

    さて、サーバー側のコンピュータで描いている件ですが、サーバー側のコンピュータで描いているというイメージをまずは捨てて下さい。
    どこか別のクライアント(クライアントPCかも知れないしクライアントプログラムかもしれない)でグラフィックを描いていて、その描いたものがサーバに送られ、そのサーバから別のクライアントに送られていく、そういった流れになるのだと思います。
    なお、「サーバから別のクライアントに送られていく」がキモになると思いますが、この部分はもう少し正確には「定期的にクライアントからグラフィックを取りに行く」となります。そこだけだったら普通のhtmlでもボタンを配置して定期的にクリックすればできますし、JavaScriptで定期的に画面をリロードする事でもできます。

    難しいのはどちらかといえば、表示する側ではなく、描いている最中のものを定期的にサーバに送る事で、これはFlushとかSilverlightなどを使って実現したり、AJAXなどの技術を使うことになると思います。

    2008年3月6日 6:39
  • sinsinn さん、すでに皆さんから回答されているとおり、Silverlight はクライアント側の技術です。サーバー側から動画や情報を送り出すのは、Silverlight“だけ”ではできません。

     

    もし、ライブ中継をしたいのであれば、Expression Encoder という別の製品によって可能です。"Live Encoding" というモードを使うことで、Web カメラなどの入力からリアルタイムエンコードして、配信できます。(スクリーンキャプチャ機能はありません)

     

    また、目的とは少し違うかもしれませんが、Silverlight を使ったビデオ共有アプリケーションとして Video.Show というサンプルがあります(英語ですが)。
    Tim Sneath の関連エントリ

     

    Video.Show をベースに作られた実サイトの例
    http://filmsforlearning.org/

     

    機会があったら、ぜひ試してみてください。

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年3月6日 12:10
  • みなさん、親切な回答ありがとうございます。

    Silverlight がクライアント側の技術ということが、よくわかっていなかったようです。

     

    初音玲さんの言うとおり、

    >どこか別のクライアント(クライアントPCかも知れないしクライアントプログラムかもしれない)でグラフィック

    >を描いていて、その描いたものがサーバに送られ、そのサーバから別のクライアントに送られていく、そう

    >いった流れになるのだと思います。
    >なお、「サーバから別のクライアントに送られていく」がキモになると思いますが、この部分はもう少し正確

    >には「定期的にクライアントからグラフィックを取りに行く」となります。そこだけだったら普通のhtmlでもボタ

    >ンを配置して定期的にクリックすればできますし、JavaScriptで定期的に画面をリロードする事でもできます。

    >難しいのはどちらかといえば、表示する側ではなく、描いている最中のものを定期的にサーバに送る事で、

    >これはFlushとかSilverlightなどを使って実現したり、AJAXなどの技術を使うことになると思います。

     

    クライアント(C#で、プログラムできればいいな?)⇒サーバ⇒クライアント(Silverlight)を繰り返していく方法が、グラフィックのライブ中継につながりそうです。

     

    恥のカキついでに、質問をします。

    Silverlightでは、サーバへのアクセス(FTPのようにTCP/IPネットワークでファイルを転送する。)のようなことが、できるのでしょうか?

    一区切りのグラフィックの描画が終わったら、サーバのファイルを書き換えることを、繰り返してみたいです。

     

    すいませんが、よろしくお願いします。

     

    P.S.

    書いていて思いついたのですが、

    話が変わってしまうのですが、

    オンラインゲームの原理を知っている方は、ついでで申し訳ありませんが、オンラインゲームのグラフィックの描画を教えてください。

     

    2008年3月7日 14:27
  • sinsinn さん、

     

    Silverlightでは、サーバへのアクセス(FTPのようにTCP/IPネットワークでファイルを転送する。)のようなことが、できるのでしょうか?

    これは Silverlight 2 でできるようになります。


    オンラインゲームの原理

     

    通常、「グラフィックの描画」はクライアントで考えればよいでしょう。どういうものを想定されているのか、わかりませんが、サーバーで「描画したもの」をクライアント(Silverlight)に送り込むより、描画に必要な情報を送るのが簡単です。サーバー側でデータを集計したグラフをイメージ化して、クライアントで使用する、というようなケースはあるかもしれませんが。

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    2008年3月7日 17:56
  • 大野さん、回答をありがとうございました。

     

    だいぶ、頭の中が整理されてきました。

     

    オンラインゲームを、よくよく冷静に考えると、

    始める前に、なんGバイトものプログラムをクライアント側にダウンロードしていました。

     

    そうですね、このプログラムがデータをもとに、「グラフィックの描画」をしているのですね。

     

    『Silverlight 2をC#のプログラムラミングする本』が出たら、もう少しのんびりと考えます。

     

    C#に、どんどん対応していってください。

    マイクロソフトさんに、期待しています。

    2008年3月8日 13:59