Contextクラスは、オブジェクトがWCFRiaサービスのDatacontextやDomainContextなどの含まれている関数を呼び出すことができるコントロールコンソールであるように思われます。この概念を正しく理解していますか?もしそうなら、どのような状況で自分のクラス階層にコンテキストクラスを作成する必要がありますか?
DataContextの他に、.netフレームワークには他にどのようなよく知られたContextクラスがありますか?
Contextクラスは、オブジェクトがWCFRiaサービスのDatacontextやDomainContextなどの含まれている関数を呼び出すことができるコントロールコンソールであるように思われます。この概念を正しく理解していますか?もしそうなら、どのような状況で自分のクラス階層にコンテキストクラスを作成する必要がありますか?
DataContextの他に、.netフレームワークには他にどのようなよく知られたContextクラスがありますか?
コンテキストは、HttpContext、DbContext、ObjectContextなどの関連する「もの」のラッパーと考えることができます。つまり、HttpContextには、HTTP関連の操作で到達できるすべての情報が含まれています。
DbContextには、データベース通信のメソッドとプロパティが含まれています。同様にObjectContext。
それは何かに関連するもののプレースホルダーまたはコンテナだと思います。
私にとって、コンテキストオブジェクトは、現在の実行パスにバインドされている値や関数のセットを定義します。言い換えれば、就職の面接のコンテキストで技術的なトピックについて話すことは、オタクのディナーで同じトピックについて話すこととは異なるのと同じように、コンテキストは、消費するコードのランタイム環境に影響を与える要因に基づいて変化します。それは抽象的なように思えますが、現時点ではそれを説明するためのより良い方法を考えることはできません!
.NETのもう1つの有名なコンテキストは、HttpContext
オブジェクトです。どのHttp操作が処理されているかに基づいてどの値が変更されますか。たとえば、URLはで変更されHttpContext.Current.Request.Uri
ます。それがあなたのためにそれを文脈に置くことを願っています:)
コンテキストは通常、アクションのグループのストレージメカニズムです。 HttpContext
、たとえば
個々のHTTPリクエストに関するすべてのHTTP固有の情報をカプセル化します。
WCFの例では、「コンテキスト」はサービスです。サービスが異なれば、コンテキストも異なります。コンテキストは、必要に応じて細かくすることができます。のように広いものもあれば、のようにDomainContext
細かいものもありHttpContext
ます。
コンテキストはどこにでもあります。分離できるものにアクセスしたり、気の合うデータや関数を設定したりする必要がある場合に、コンテキストを作成します。
すべてのコンテキストはこのようなものであり、特定のアクションセットのロジックをカプセル化するだけです。
これは、コンテキストデザインパターンを説明する別の投稿です。
Contextクラスは、一部のOOPデザインパターンで使用されます。例:-状態パターン-戦略パターン
コンテキストは、その中に存在するオブジェクトの環境を定義する、順序付けられた一連のプロパティです。コンテキストは、同期、トランザクション、ジャストインタイムアクティベーション、セキュリティなどの特定の自動サービスを必要とするように構成されたオブジェクトのアクティベーションプロセス中に作成されます。複数のオブジェクトがコンテキスト内に存在できます。
新しいオブジェクトのコンテキストは、通常、クラスのメタデータ属性に基づいて選択されます。重要なタイプのコンテキストは次のとおりです。
ExecutionContext:
これは親コンテキストであり、他のすべてのコンテキストはその一部です。これは、タスクなどの.NET機能がコンテキストをキャプチャして伝播するために使用するシステムですが、独自の動作はありません。
SecurityContext:
これは、通常は現在のスレッドに限定されるセキュリティ情報を見つける場所です。コードを特定のユーザーとして実行する必要がある場合は、そのユーザーになりすましている可能性があります。または、ASP.NETが偽装を行っている可能性があります。その場合、偽装はSecurityContextに保存されます
CallContext:
これにより、プログラマーは、論理スレッドの存続期間中利用できるはずのカスタムデータを格納できます。多くの状況で悪い習慣と見なされますが、さまざまなコンテキストがプログラムに渡されるため、メソッドパラメータの数が多すぎるのを防ぐことができます。LogicalCallContextは、AppDomain間で機能する関連システムです。