none
winformをweb pageに表示したい RRS feed

  • 質問

  • c#で開発(.Net 3.5)したwinformプログラムをウェブに表示したいです。
    可能でしょうか。最大限ソースを変わらなくてそのまま使いたいです。
    2010年2月2日 1:32

回答

  • こんにちは、おのでらです。

    > 最大限ソースを変わらなくてそのまま使いたいです。

    上記の条件からすると結論からいえば残念ながらできません。Windows 上で動くプログラムと Web ブラウザで動くプログラムは根本的に仕組みが異なります。

    たとえば、WinForm 上でのコントロールは Windows 固有のコントロール(おおざっぱにいえばですが)を使用して制御しますが、Web で表示するコントロールは基本的に HTML によって表示されるコントロールになります。また、Web ブラウザからポストバックせずに画面を動的に制御をおこなう場合、Javascript などのプログラミング言語で制御する必要があります。

    もしできる限りソースを共有させたいのであれば、WinForm に依存しない処理を別 DLL か何かで切り離し、画面に依存する処理は別途 Web 用に作成する形になると思います。


    余談ですが、WinForm ではなく WPF や Silverlight であれば多少違いはありますが、画面に依存する処理もある程度は共有することも可能です。(すでに WinForm で作成されているので完全に余談ですね^^;)
    XNA 等の Tips を書いています。(http://sorceryforce.com)
    2010年2月2日 3:45
  • どれくらい使えるものなのか分かりませんが、こんなのがあるようです。

     Converting WinForms => Web Forms using CodeDom - CodeProject
     http://www.codeproject.com/KB/cs/winforms2webforms.aspx

    「Convert Winform to Webform」などと検索してみると、同じ願望を持つ人達がたくさんいることが分かります。

    個人的には、ビジネス ロジックは切り出してそのまま流用できるとして、
    それ以外は結構な作り直しを覚悟しないといけないのではないかと思います。
    入力チェックひとつ取っても、サーバー側とクライアント側の双方に入れる必要が出てきたりしますし。
    (サーバー コントロールを使って楽をするとしても。)
    2010年2月2日 5:00
  • ブラウザーを IE 限定にすれば、出来ない事はありません。ただし、事前準備をしなければ、セキュリティ上の制約に引っかかり、実行できません。また、これよりも、ClickOnce 等を検討する事を勧めます。

    それなりにコードの変更が必要なようです。Windows アプリケーションの「出力の種類」を「クラス ライブラリ」に変更しただけではダメでした。→IEで.NET Windowsフォームコントロールをホストする


    Jitta@わんくま同盟
    2010年2月2日 12:24

すべての返信

  • こんにちは、おのでらです。

    > 最大限ソースを変わらなくてそのまま使いたいです。

    上記の条件からすると結論からいえば残念ながらできません。Windows 上で動くプログラムと Web ブラウザで動くプログラムは根本的に仕組みが異なります。

    たとえば、WinForm 上でのコントロールは Windows 固有のコントロール(おおざっぱにいえばですが)を使用して制御しますが、Web で表示するコントロールは基本的に HTML によって表示されるコントロールになります。また、Web ブラウザからポストバックせずに画面を動的に制御をおこなう場合、Javascript などのプログラミング言語で制御する必要があります。

    もしできる限りソースを共有させたいのであれば、WinForm に依存しない処理を別 DLL か何かで切り離し、画面に依存する処理は別途 Web 用に作成する形になると思います。


    余談ですが、WinForm ではなく WPF や Silverlight であれば多少違いはありますが、画面に依存する処理もある程度は共有することも可能です。(すでに WinForm で作成されているので完全に余談ですね^^;)
    XNA 等の Tips を書いています。(http://sorceryforce.com)
    2010年2月2日 3:45
  • どれくらい使えるものなのか分かりませんが、こんなのがあるようです。

     Converting WinForms => Web Forms using CodeDom - CodeProject
     http://www.codeproject.com/KB/cs/winforms2webforms.aspx

    「Convert Winform to Webform」などと検索してみると、同じ願望を持つ人達がたくさんいることが分かります。

    個人的には、ビジネス ロジックは切り出してそのまま流用できるとして、
    それ以外は結構な作り直しを覚悟しないといけないのではないかと思います。
    入力チェックひとつ取っても、サーバー側とクライアント側の双方に入れる必要が出てきたりしますし。
    (サーバー コントロールを使って楽をするとしても。)
    2010年2月2日 5:00
  • ブラウザーを IE 限定にすれば、出来ない事はありません。ただし、事前準備をしなければ、セキュリティ上の制約に引っかかり、実行できません。また、これよりも、ClickOnce 等を検討する事を勧めます。

    それなりにコードの変更が必要なようです。Windows アプリケーションの「出力の種類」を「クラス ライブラリ」に変更しただけではダメでした。→IEで.NET Windowsフォームコントロールをホストする


    Jitta@わんくま同盟
    2010年2月2日 12:24
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    おのでらさん、totojoさん、Jittaさん
    アドバイス有難うございました。

    Jacobzさん、MSDNフォーラムのご利用有難うございます。
    皆様からアドバイスを頂いたと思うのですが、如何でしょうか?
    作成済みのWindows Forms applicationプログラムをそのままWebアプリケーショーンとして使用したいということで良いでしょうか?
    なぜ、Web上で使用したいか、どのような環境を想定しているか等、もう少し詳しい事情をお伝えして頂くと
    適切なアドバイスを頂けるかもしれません。

    今回、皆様からのアドバイスが有用な情報だと思いましたので、勝手ながら回答マークを付けさせて貰いました。
    Jacobzさんの現在の状況も気になるので、是非、皆様の投稿に返信して頂きたいと思います。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年2月9日 4:14