2009-05-29 5 views
6

誰かがanswer to a stackoverflow questionで、MVVMパターンの "2つの大きな銃"が1)の振る舞いがと2)サービスであることを教えてくれました。「WPFサービス」とは正確には何ですか?

PresentationFoundation.dllは、WPFは サポートを結合の種類、アニメーションや マルチメディアサポート、データをコントロール定義、およびその他:私は彼が「WPFサービス」私は、次のように使用見つかったフレーズを意味仮定しますWPFサービス

(脱結合、イベンティング、豊富なデータバインディング、 スタイリング、リソース、など)これらWPFのサービスの多くは は、単一の、宣言型UI スタックに収束ソフトウェア 開発のベストプラクティスです。

あなたはWPFの背後にある動機を理解し、XAMLの構文を学び、 は、コアプログラミングモデルを検討し、いくつかのWPFサービスを調査。私のようなので、意味、この言葉だけでも言及し、「WPFサービス」をしているWPFの本の

なし「WPFが特徴」など切り離され、イベンティング、豊富なデータバインディング、スタイリング、などか「WPF Services」という用語の後ろに何かがありますか?

+0

はい、機能についてです。その意味では、「サービス」は、音をより良くするための話題にすぎません。ちょうど "ユーザーエクスペリエンス"などのように。 – Botz3000

答えて

3

彼はWPFサービスではなく、アプリケーションサービスについて話しています。つまり、機能の一部を複数のVMが消費できる独立したサービスに抽象化します。

+0

それはどういう意味ですか、Windowsサービス、Webサービスについて話していますか? WPFに関するウィキペディアの記事では、「ユーザーインターフェイス、2Dおよび3D図面、固定および適応文書、高度なタイポグラフィ、ベクターグラフィックス、ラスターグラフィックス、アニメーション、データバインディング、オーディオおよびビデオ」の「WPFアプリケーションサービス」の例を示します。それは、例えばそれが何を意味するでしょうか? "複数のViewModelはデータバインディングを消費できます"。それは常にそうです。この意味で「WPFサービス」と「アプリケーションサービス」という言葉の背後には何がありますか?あるいは、「セキュリティサービス」のような古典的な意味での意味ですか? –

+3

"サービス"とは、単に機能の一部を抽象化することを意味します。基本的な機能は、おそらくCOMコンポーネント、データベースアクセスなどです。重要ではない - VMは、前述の機能とやりとりするために使用できるインタフェースについて知っているだけである。 –

13

Martin Fowlerには、彼のDependency Injectionの記事に記載されているサービスの説明があります。簡単に言えば、サービスは他のオブジェクトによって使用される機能を提供するオブジェクトです。あなたはパターンInversion of ControlService Locatorを議論するときに頻繁に使用される用語を見つけるでしょう。

この具体的なトピックを手近にして、MVVMパターンでメッセージボックスを表示する方法について考えてみましょう。 MessageBox.Show()を呼び出すと悪くなります。これは、ViewModelをUIアーキテクチャにしっかりと結びつけ、ViewModelをテストするのを困難にします。代わりに、1つのソリューションはサービスを使用することです。これはIDisplayMessageと呼ばれます。このサービスは、(上記2つのパターンのいずれかを使用して)何らかの形でViewModelに提供され、このサービスはメッセージを「表示」するために使用されます。通常の操作では、このサービスの具体的なバージョンではMessageBox.Show()が呼び出されますが、テスト中に異なる動作をする別の具体的なバージョン(テストダブル)を提供することができます(しばしばnoopまたはViewModelの表示メッセージ、それが発生したと主張できるようにコールを記録するバージョン)。 Onyx(免責事項:私は著者です)は、このようなサービスと、このサービス(およびその他)をViewModelに提供するために必要なインフラストラクチャを提供します。

更新:このレスポンスが行われて以来、私はブログ記事Services: Your ViewModel Deathstarを作成しました。これはかなりよく話題になります。これは投稿の「シリーズ」の一部であり、読者は最初の投稿Behavior - Your Trusty ViewModel Bazookaに興味があるかもしれません。

+1

あなたの記事を指差してみませんか? 添付の行動:http://wekempf.spaces.live.com/Blog/cns!D18C3EC06EA971CF!940.entry サービス:http://wekempf.spaces.live.com/Blog/cns!D18C3EC06EA971CF!951。エントリー – Trainee4Life

+0

当時、記事は存在せず、私はここに戻って返信を更新するとは思わなかった。 – wekempf

関連する問題