ここ数年、私が取り組んだすべての深刻なプロジェクトは、Webベースであるか、非グラフィカルユーザーインターフェイス(サービス、コマンドラインスクリプトなど)でした。 WinFormsアプリを一緒に投入したり、必要に応じて簡単なWPFを実行したりできますが、MFCやQTのような下位レベルのAPIを実際に掘り下げたことはありません。
これは状況に依存することを理解していますが、一般に、時間をかけてデスクトップ開発をよく学ぶ価値がありますか、それとも、この知識の関連性が低くなるペースでアプリケーションがWebおよびモバイルデバイスに移行していますか?また、あなたが協力している開発者がデスクトップGUIの専門知識を持っていることを期待していますか?
はい、そうです。プログラム開発には一種の振り子効果があります。まず、すべてがコンピュータ上で直接実行されました。その後、コンピュータが複数のプログラムを実行するのに十分強力になったとき、彼らはダム端末を備えたメインフレームを得ました。しかし、ばかばかしい端末は使いやすさの面で本当に大変です。そのため、コンピュータが端末サイズのシステム内に適切な量のハードウェアを置くのに十分な強力になるとすぐに、パーソナルコンピュータを手に入れ、すべてがコンピュータ上で直接実行されました。
次に、World Wide Webを発明し、メインフレーム(サーバー)とダム端末(ブラウザ)に戻ります。しかし、ダム端末stillは本当に使いやすさの点で苦手であり、人々は30年前の教訓を再学習し始めており、私たちは再びそれから遠ざかっています。最近の非常にホットな開発の多くは、ローカルで実行されるデスクトップ(またはモバイル)アプリ向けですが、機能を強化するために特定の目的でインターネットに接続できます。
デスクトップ開発を行うつもりがない場合でも、十分な経験を積んで、Webクライアントではなくデスクトップソリューションを使用する方がよい場合について十分な情報を得てください。
はい、しかしあなたの考えている方法ではありません。
GUIプログラミングは、もはや難しくはなく、GUIプログラミングインターフェースに精通していることを除いて、特別なスキルを必要としません。ボタンやウィンドウ、コントロールを接続することはそれほど難しくはなく、MFCなどの初期のものと比較して、現代のプログラミング環境ではかなり簡単です。 GUIプログラミングは、要求があったときに簡単に習得できるものです。
ただし、ボタンとテキストボックスを接続するのはかなり簡単ですが、ボタンを配置する場所と場所、およびdesigningを人間が使用するためのguiを知ることは非常に困難です。それは非常に貴重で重要なスキルです。ただし、ネイティブインターフェイスとWebに適用される設計原則は非常に似ています。
ですから、効果的でユーザーを混乱させない優れたユーザーインターフェイスを設計する方法を学んでください。そうすれば、彼らのためのプログラミングに無料で慣れます。
それは本当にあなたの状況に依存するでしょう。私は最近、Webアプリケーションをデスクトップアプリケーション(SmartClient/Click-Once)に変換するプロジェクトをいくつか持っているFortune 500企業で働いていました。彼らの特定の状況では、それは非常に理にかなっており、既存のアプリが抱えていたいくつかのユーザビリティの問題を排除しました。
あなたがフルタイムの従業員であり、会社が一般的にデスクトップアプリを設計していない場合、WinformsまたはWPFを完全に活用することはおそらく意味がありません。ただし、コンサルタントであり、クライアントに別のサービスを提供できるようにしたい場合は、害を及ぼすことはありません。
うーん、GMail、Stack-Exchange、および私の銀行のホームバンキングに加えて、私は終日Web以外のソフトウェアを使用しています。スマートフォンやタブレットの登場により、Webアプリケーションの魅力はさらに低下しました(スマートフォンのFacebookクライアントを使用しています)。それはユーザー側です。
開発者側:過去10年間、私はほとんど非Webソフトウェアのみに取り組み(ソフトウェアコンサルタントとして働いていたため、私のキャリアは多くの非常に異なるドメインに及びました)、私の仕事には将来のWeb傾向は見られません。
したがって、はい、それでも必須学習デスクトップGUI環境です。
もちろん、「状況次第」ですが、あなたの経験は典型的なものだと思います。私が書いたアプリケーションのためにシッククライアントを作成する必要はほとんどありませんでした。クライアントをデスクトップで実行する必要がある特定の理由(接続性の問題や3Dゲームなど)がない限り-開発者と管理者がアプリケーションの1つの「インスタンス」を維持する方が簡単だと思います。ウェブアプリケーションを設計するスキルがあれば、一般的にデスクトップアプリケーションの領域に移動しても問題ありません。
実際、私はシッククライアントの開発者がWebアプリケーションプログラミングを学ぶことがより重要だと考えています。HTTPのステートレス性を継承することで、アプリケーション開発のパラダイムで頭を一周することが難しくなります(または、少なくとも平手打ちよりも少し考えなければなりません)パネル上のコントロール)。
忘れないでください。SilverlightやAdobe Flex/AIRなど、デスクトップ/ Webアプリケーション間の境界を越えることができるテクノロジーがあります。
IE9チームによると:
ネイティブアプリとウェブアプリの間にギャップがあってはなりません。ハードウェアアクセラレーション、高速JS、サイトのピン留めで開始します
これらのテクノロジーが一緒に成長することは安全な賭けだと思います。あなたがJava=開発者である場合、デスクトップアプリケーションとWebアプリケーションの開発(GWTを使用)の違いはほとんどありません。ますます多くの「デスクトップ」開発プラットフォームができることを期待することは不合理ではありません。ブラウザーエンジンをターゲットにします。また、ますます多くのデスクトップアプリがWebのような配布モデル(バックグラウンドで自動更新され、Chromeのようにサンドボックス化された実行)を持つことを期待することも不合理ではありません。