C#Windows GUIからC#のWebアプリへの移植:Win、Mac&Linuxのためのボックスを取り除く方法は?
質問
現在Windows GUIとしてC#で機能しているアプリケーションを書き換えたいと思います。問題は、Windowsではうまく機能しますが、MONOに関するGUIの問題があるため、MacとLinuxには適応しません。
だから私の考えは、C#を続けることでした(C#を実行し、移植することができない重要なサブプログラムのために必要なもの)とWindows上のユーザーまたはLinuxにアクセスできるWebアプリケーションとして書き直すことを試みることでした。簡単にそしてそれを働かせる。
私のアプリケーションが高いアクセシビリティを目指しているため、「箱外」の作業のままであることも重要です。
私は解決策を探しました:
- Kayakhttp ですが、POSTデータはサポートされていません。 (Web GUIに必要)
- MONOからXSP2とASP.NET MVC Webアプリを作成しますが、それは私のWebアプリで本当に機能していますか?
あるいは、あなたは私にC#Webアプリをエンドユーザーのために箱から出していますか?必要な唯一のものはMONとLinuxにモノラルをインストールすることです。
あなたの助けをありがとうございました。
編集1 :私はあらゆる面を正しく説明していないことを認識しています。実際、私のプロジェクトには2つのアプリケーションがあります:
- C#で書かれており、ポートまたは書き換えに大きすぎ、したがってMONOとLinux で実行する必要があるコアアプリケーション
- C#で書かれているWindowsフォームを使用したMy GUIアプリケーション
私の目標は、GUIアプリケーションをWebアプリケーションアプリケーションに変換することです。
解決
あなたのコアアプリケーションがクライアント上で実行されるのは必要ですか?
そうでない場合、最良のアプローチは、Windowsサーバー上で実行されるWeb(ASP.NET)アプリケーションとしてすべてを書き換えることです。すべてのターゲットプラットフォーム上のユーザーは、Webブラウザを介してこのアプリにアクセスします。
はいの場合、Webアプリは良い考えではありません。クライアントにWebサーバーを必要としたくないです。 2つの可能性があります。
- GUI Toolkits を調べてモノラルで利用可能なものを選択してください。ターゲットプラットフォームは、各プラットフォームに対して異なるフロントエンドを持つことを避けるためのターゲットプラットフォームです。
- すべてのプラットフォームで最高のユーザーエクスペリエンスを確保するために、プラットフォームごとにネイティブGUIツールキットを選択し、それらのための別のフロントエンドを選択してください。コアアプリケーションのインターフェイスがある限り、モノラルを使用するかネイティブ開発環境を使用するそれはそれからアクセスすることができます(例えば、コマンドラインなど)。
他のヒント
これは重複した質問ですが、私は重複を見つける時間がありません。
簡単に言うと、答えは次のとおりです。これをしないでください。デスクトップアプリケーションを1対1でWebアプリケーションに翻訳することはできません.2つのパラダイムは異なります。
現在のアプリケーションをリファクタリングして、GUIのすべての依存関係を削除することをお勧めします。その後、要件を満たすために完全に新しいWebアプリケーションを書き、Webアプリケーションがデスクトップアプリケーションからリファクタリングしたコードを呼び出すことができます。
2つのプラットフォーム間の大きくて隠された違いを認識している:Webアプリケーションはサーバー上で実行されます。複数のユーザーが同時に、および複数のスレッドによって同時に使用されます。リファクタリング中ですが、違いに敏感なコードに注意してください。たとえば、static
メンバフィールドを使用するコードは、一度に1つだけのユーザーしかないため、デスクトップアプリケーションで機能する可能性があります。 Webアプリケーションでは、static
はすべてのユーザーとすべてのスレッドにわたって共有されます。
これはあなたが念頭に置いていたものではないかもしれません。