2011-12-16 5 views
1

WPFでは、依存関係プロパティを使用しますが、Webアプリケーションでそれらを使用できるかどうかは疑問です。
など。私はテキストボックスの値 "ジャック"を持っているとしましょう。その名前はデータベースから来るので、データベーステーブルのフィールドが更新され、その名前が "john"に変更されると、これはテキストボックスの値にどのように影響しますか?データベースへの依存関係プロパティの使用

答えて

1

Webアプリケーションでは、WPFアプリケーションでは動作が少し異なります。

ウェブアプリケーションでは、リクエストが入力され、サーバーはリクエストを処理してから、結果をクライアントのブラウザに返します。サーバー上で何かが変更された場合、サーバーは新しい要求が来てサーバーが新しい応答を返すまで、クライアントにこれを知らせることはできません。

ASP.NETには、データバインディングとデータソースという概念があります。たとえば、クエリを実行し、結果をグリッドまたはリストコントロールにバインドするようにSqlDataSourceを構成できます。これは、ユーザーがページを読み込んだときに実行されます。

サーバー上の何かが変更されたときに自動的にデータを更新するには、変更があるかどうかを確認してブラウザでHTMLを更新するためにクライアントが変更をサーバーに常にポーリングする必要があります。これは、TwitterやLinkedInのようなアプリで起こっていることですが、WFPアプリでよく慣れていた概念とは全く異なります。

+0

あなたの美しい答えに感謝しますが、MBenは私がwpfでそれを正しく行うことができると言いますか? Webアプリケーションではありません –

+1

WPFでも可能です。 SqlDependencyのようなものは、データベースの変更を追跡し、それらの変更をWPFフォームにプッシュするのに役立ちます。 Webアプリケーションでは、コードとクライアントの間に直接接触がないため、デフォルトではこのシナリオはWebでは不可能です。ただし、AJAXやWebSocketのようなものを使用してこの動作を作成することはできますが、WPFほど簡単ではありません。 –

0

短い答えはいそうですが、データがどこから来ているかは関係ありません。 基本的にViewModelと呼ばれるINotifyPropertyChangedを実装するクラスを作成します。このクラスは、DBから来るデータをラップし、値が変更されたときにビューに通知します。

+0

どのようにWebアプリケーションでこれを行うだろうか? –

+0

私は質問を誤解していました。私はWebAAppから来ていると思います – MBen

1

良いアイデア - しかし、あなたはいくつかの主要な問題を見逃しています。

依存プロパティは、本質的には、変更のためにさまざまなものが購読するメモリオブジェクトです。

dbに対して同じ処理を行うには、その変更をアプリケーションに伝える方法が必要です。これらは処理されていないので、クロスプロセスまたはクロスサーバ/ネットワークコールでなければなりません。これらのすべてを手動で定義して構築する必要があります。

1

wpfのデータバインディングのようなものはWeb上にありません。 DBはデータ変更のためのインタフェースを実装していません。 あなたができることは、DBのストアドプロシージャ(コンパイル済み)を使用し、トリガーのデータ変更をWebインスタンスに通知することです。そこから、Ajax経由でビュー/ Webページを更新できます。

これはもちろん、より良い解決策ではあるが実装するのが難しい「プッシュ」方法です。

また、時間のかかる間隔でデータプールを実行し、それに応じて更新することもできますが、実装は簡単ですが、実際にはリソースが悪いです。

敬具、 P.

関連する問題