私たちのチームはこれに分かれており、サードパーティの意見を聞きたかったのです。
アプリケーションを構築していて、WCFサーバーで.Net WPFデスクトップアプリケーションを使用するか、jQueryを使用してASP.Net Webアプリを使用するかを決定できません。私は、いくつかの仕様を使用して、ここで質問をし、どちらの側を使用する場合の長所/短所がどうなるかを確認すると思いました。私には自分のお気に入りがあり、偏見を感じています。
理想的には、ソフトウェアの最初のリリースをできるだけ早くビルドし、その後、速度を落とし、後で必要な追加の機能/コンポーネントを組み込むのに時間をかけたいと考えています。何よりも、ソフトウェアが高速であることを望んでいます。ユーザーは1日中レコードを調べ、レコードの読み込みや画面の更新が遅れると、生産性が低下します。
アプリケーションの詳細:
考慮すべき項目(最初はそうではないかもしれませんが、将来のリリースでは):
私たちの開発者:
環境:
それに基づいて、あなたは何を選びますか、そしてその理由は?
確かに、私にはWPFアプリのように聞こえます。多くのユーザーとのやり取りがあり、ハードウェアとやり取りする可能性もあります。アプリはClick-Onceを使用して配信できるため、展開はほとんど問題になりません。 WPFアプリはWCFサービスにアクセスし、データをバイナリとして配信できるため、パフォーマンスが優れています。私はWPFについて読み始め、できるだけ早くそれに慣れるようにします。
ルナティックフリンジの答え:両方。サービスレイヤーを正しく取得すると、すべてを実行するシッククライアント(WPF)と、最も一般的なことを実行する迅速なWebクライアント(ASP.NET)を簡単に作成できます。将来、モバイルクライアントなどにドアを開けたままにします。
WPFを習得しているプログラマーが1人だけで、チームにWPFへの移行を検討している場合は、代わりにSilverlightを使用してみませんか? WPFの多くの利点が得られますが、プロジェクトをWebアプリのままにする機能は維持されます。大きなモジュール化されたプロジェクトを検討しているので、MVVMをより単純にするためにWPFまたはSilverlightで [〜#〜] prism [〜#〜] を使用することは理にかなっています。
私のチームは最近、asp.netではなくSilverlightを使用することを選択しました。それは私たちにとって素晴らしい選択でした。最初は、どんなSilverlightも知っている開発者が1人だけでした。その後、ほとんど役に立たなかった1週間のトレーニングクラスに参加しましたが、少なくとも足を濡らしました。最終的に、UIフレームワークの大部分の作成を支援するために、2人の請負業者を雇う必要がありました。私たちのチームの大多数はまだ彼らのシルバーライトスキルに自信がありません。私自身、silverlightの知識を持つ最初のチームメンバー、および2人の請負業者が、SL開発の大部分を行っています。その後、専用のバックエンドメンバーが2人います。 Silverlightへの移行を決定してから、具体的に何をまとめても、約2か月かかりました。しかし、今では、Webブラウザー内で実行されており、どのマシンにもローカルにインストールされていないクライアント側アプリケーションのように感じられる素晴らしい製品があります。開発は合計で1年未満であり、リリースの準備ができているか、最初のリリースの候補に近い状態です。
考慮すべき事項:
WPFまたはSilverlightのどちらを選択しても、開発者が学ぶ必要があるかなりの量になります。
Silverlightは、必要に応じてブラウザーが不足する可能性があります。これを行うと、新しいバージョンをロールアウトした場合に、インストールされているブラウザのSLプログラムが自動的に更新されるように、簡単に設定できます。
Silverlightには、WPFが持つすべてのコントロールが含まれているわけではありません。
最後に、できるだけ早くコードを作成したい場合は、ASP.NETを使用する必要があることは明らかです。 ASPについての私の主な疑問は、チームを統制しない限り、ASP.NETプロジェクトが雑然として乱雑になることは簡単です。もしあなたがテクノロジに慣れると、SilverlightまたはWPFによって多くの素晴らしい可能性が生まれます。
この部分はかなり心配です:
一般ユーザーは、ターミナルサービスを備えたWindows 2003サーバーを使用しています。それらは、RDP接続を介してWYSEシンクライアントを使用して接続します。管理スタッフは、XP以上のPCを持っています。WebブラウザとしてIEを使用することに制限されていますが、ユーザーは自分の解像度を指定できます。
WPFは、リモートデスクトップ/シンクライアント接続には適していません。アニメーションは滑らかではなく、複雑な画像(グラデーションであっても)は、クロールまでのUI応答を遅くします。一般的なレトロXPマシンの管理スタッフも、(RAMのGPUが少ないため)複雑なWPFアプリケーションでパフォーマンスの問題が発生する可能性が高いです。).
リッチなグラフィックスのためにWPFルートを使用する場合は、ターゲットマシンが10年前のものであることがわかったときに、直前のパフォーマンスハックに備えてください。 WPFのパフォーマンスは3.5以降に劇的に向上しているので、静的画面に固執して.NET 4.0を使用してください。
技術的には、WPF/WCFの組み合わせがより良いソリューションであると思います。
ただし、既存のWPFプログラマーがこのプロジェクトの経験を実際に持っているとは思いません。 WPFは、Winformプログラミングからの思考プロセスのプログラミングにおいてかなりの変化です。そのため、このルートを実現するための十分なスキルがチームにあるかどうかについて、じっくりと考える必要があります。
面白い。これは、会社で始めただけのアプリに非常に馴染みのあるように思えます(SIP電話とスキャナーの統合など)。
SOA)に重点を置いてSilverlightを選択したため、必要に応じて後でWPFアプリを作成できます。
最初のリリース後に追加するコンポーネントを追加する余地(これらのコンポーネントはたくさんあります...おそらく最初のアプリケーションよりもここで機能します)
サービスレイヤーでMEFを使用して、拡張ポイント(拡張性や他のシステムとの統合を計画する特定のポイントを記述するプラグインインターフェイス)を構築しています
キーボードナビゲーション
問題ない。
パフォーマンスは必須です
どんなパフォーマンス?知覚されたパフォーマンス(きびきびした)または数値処理パフォーマンス後者は、web/silverlightアプリの問題である可能性があります。前者の場合、私たちのアプリはあなたのような多くのレコードを通過しますが、ユーザーが現在のレコードに取り組んでいる間にそれらを予測し、レコードをプリフェッチすることができます。アプリのそのセクションの「読み込み」時間はゼロです。
初期バージョンへの生産速度
スキルセットによって異なります。しかし現実的には、誰もができるだけ早く市場に出たいと常に思っているので、それは議論の余地はありません。
メンテナンスのオーバーヘッドが少ない
生産速度と同様に、これも議論の余地はなく、設計とコーディングの実践に移ります。ハードウェアのメンテナンスに関して言えば、クラウドアプリを使用することをお勧めします。
今後のサポート
どういう意味かわかりません。
ソフトフォン/スキャナー統合
Silverlight 4では、ウェブカメラ/マイクへのアクセスが可能になりました(アプリケーション間ビデオ会議やSIP統合を行う予定です)。電話サーバーを使用している場合は、自分で作成できます。既存のものは知りませんが、 this が役立つかもしれません。
それ以外の場合は、醜いハッキングを行う必要があるか(記事への参照が不要になり、申し訳ありません)、ファイルシステムとやり取りできるWPFアプリを用意するしかありません。 SL4はブラウザーの外に出ることができますが、ファイルシステムの特定の部分にしかアクセスできません。それらのどれもあなたが一口電話と対話する必要がある部分になることはおそらくありません。
つまり、ドキュメントスキャナーですか?それについてはよくわかりません。ハンド/バーコードスキャナーを使用しており、他の入力デバイスと同じように動作し、問題はありません。
人々が一日中使用するための非常に応答性の高いアプリケーションが必要ですか? WPFを使用します。 WPF over ASP/MVCでもGUIコンポーネントを再利用する方が簡単です(IMHO)
はい、jqueryなどは素晴らしいです。Silverlightはクールですが、デスクトップアプリの方が効率的です
バックエンドの場合、WCFは問題ありません
スケーラビリティとセキュリティのため、サービスレイヤーにはWCFを使用することをお勧めします。プレゼンテーションレイヤーでは、SilverlightまたはASP.NETのいずれかを使用できます。SilverlightはFlashに似ていますが、最初は理解するのが難しく、ほとんどの場合、データを操作するときに学習曲線が高くなります。 ASP.NETの方が使いやすいですが、ASP.NETを効率的に使用するには、多くの調整とJavaScriptが必要です。