問題タブ [state]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# / オブジェクト指向設計 - 有効なオブジェクト状態の維持
クラスを設計するとき、有効な状態を維持するためのロジックは、クラス内またはクラス外に組み込む必要がありますか? つまり、プロパティは無効な状態 (範囲外の値など) で例外をスローする必要がありますか、またはクラスのインスタンスが構築/変更されているときにこの検証を実行する必要がありますか?
java - リモート EJB および Web サービスで状態を維持する
ビジネス ロジックにリモート EJB を使用する Web ベースのアプリケーションがあります。これらの EJB の一部は、Web サービスとしても公開されています。後続の呼び出しが正しく機能できるようにするために、これらの呼び出しの一部について小さな状態を維持する必要があります。次のうちどれをお勧めしますか?
- ステートフル EJB (これは Web サービスで動作しますか?)
- 状態をクライアントに返します (クライアントが状態を変更できないようにしたい場合はどうすればよいでしょうか?)
- 各メソッドで DB から状態をリロードします (オーバーヘッドについて心配する必要がありますか?)
asp.net - 適切な状況での ASP.NET 状態管理
ASP.NET 3.5 で状態を管理するための 6 つの手法があります (私の知る限り)。
これらの手法を使用する必要がある状況の適切な例を誰か教えてもらえますか?
例えば:
iphone - iPhone アプリ: SDK 3.0 : ボタンが選択された状態: 動作しません!
シンプルなボタン機能を実行しようとしています。
ボタン A。デフォルト、ハイライト、選択の 3 つの状態があります。もう一度クリックすると、選択を解除する必要があります。私の人生では、単純な 3 状態機能を確立することさえできません。
ハイライト (プレス時) が組み込まれて表示されます (「ストック」ブルーに移動します)。ボタン属性を使用して、選択した状態の画像をロードしました...コントロール/コンテンツで再生して、ハイライトと選択のオンとオフをクリックし、適切なコンボを見つけようとしました...
編集したい状態をドロップダウンで選択するだけだと思っていました....そして、その状態の編集を登録します...画像のロード/色の変更/など....
いいえ!!!!私は何が欠けています..?
web-applications - Web でステートレスよりもステートフルの方が優れているのはどのシナリオですか?
私は常にステートレス Web を支持してきましたが、ステートフル Web の支持者が何を言っているのか知りたいです。
ステートレスよりもステートフルの方が適している状況はありますか?
state - OOP で副作用と状態を回避する方法を学習するための最良のリソースは何ですか?
私は最近、関数型プログラミングで遊んでいますが、副作用、なぜそれらを封じ込めるべきかなどのトピックについてはかなり良い治療法があります.OOPが使用されているプロジェクトでは、いくつかの戦略をレイアウトするリソースを探しています副作用および/または状態を最小限に抑えます。
これの良い例は、Web アプリケーションの状態を最小化するための戦略を提供する本RESTful Web Servicesです。他にどんな存在?
別の OOP アナリスト/デザイン パターンの本を探しているのではないことを思い出してください (ただし、適切なカプセル化と疎結合は副作用を回避するのに役立ちます) むしろ、トピック自体が状態/副作用であるリソースを探しています。
いくつかのコンパイルされた回答
- 主に状態を気にする OOP プログラマーは、並行性のためにそうするので、Java Concurrency in Practice を読んでください。[まさに私が探していたもの]
- TDD を使用して、副作用をより目立たせます[私はそれが好きです。例: セットアップが大きくなればなるほど、テストを実行するために必要な状態が増えます = 良い警告です]
- コマンドとクエリの分離 [良いことです。関数の引数を変更することによる、一般的に混乱を招く副作用を防ぎます]
- メソッドが行うことは 1 つだけです。オブジェクトの状態を変更する場合は、わかりやすい名前を使用して単純明快にします。
- オブジェクトを不変にする [私はこれが本当に好き]
- 値をメンバー変数に格納するのではなく、パラメーターとして渡します。[これはリンクしません。それは関数プロトタイプを乱雑にし、Clean Code や他の本によって積極的に落胆させられていますが、状態の問題に役立つことは認めます]
- 値を保存して更新する代わりに、値を再計算します[これもとても気に入っています。私が取り組んでいるアプリでは、パフォーマンスは小さな問題です]
- 同様に、回避できる場合は状態をコピーしないでください。1 つのオブジェクトにそれを保持する責任を持たせ、他の人がそこにアクセスできるようにします。[基本的な OOP 原則、良いアドバイス]
wpf - WPF ナビゲーション履歴の制御
WPF は、Journal メタデータ フラグを使用して依存関係プロパティの制御状態を自動的に記憶します。
これに加えて、IProvideCustomContentState を実装して、独自のカスタム状態情報を提供できます。
ただし、カスタム状態のみを実行して、依存関係プロパティの自動状態追跡をオフにする方法が見つかりません。これを実行したいのは、ページにどの状態を記憶する必要があるか、およびその状態を再設定する方法を正確に知っているからです。
コントロールのプロパティをジャーナル処理しないように WPF に指示する方法はありますか?
xml - asp.netでステートフルなXML WebServiceを作成するには?
「ステートフル サービスは良くない」という議論には入らずに... どうやって作成するのですか?
有用な検索結果が得られないことから.. 間違った用語を検索しているか、積極的に推奨されていないようです。私が見つけた最良のリンクは、MSDNのこれでした
現在のアプリがどのように見えるかを簡単に説明します。Rails Web App => ASP.Net Xml webservice => Legacy C#/C++ code
ここまでは順調ですね。ここで、WebMethod に最初の要求を行うときに、各呼び出しで作成、使用、破棄するのにコストがかかるプロセス/リソースを起動する必要があることがわかりました。そこで、これらのリソースの再利用を検討していました。
MyWebService
最初に、それらをメンバー変数にしようとしましたが、各リクエストがクラスの新しいインスタンスによって処理され、その時点で別のスレッドで処理されるという電球の瞬間を持つだけでした。
リンクは、これを行う方法が
- 状態がユーザーごとの場合にセッション ハッシュ/プロパティ コレクションを使用します。
- 状態がグローバルの場合にアプリケーション ハッシュ/プロパティ コレクションを使用する
質問:
- これは正しいですか?いくつかの魔法の属性がありませんか?
- 最初のリクエストで特定の既知のキーを入力するアプリケーションハッシュテーブルメソッドを試しました。ただし、2 番目の要求では、ハッシュテーブルはクリーン/アイテムなしの状態です。
- 同期を処理するにはどうすればよいですか? プライベート メンバー オブジェクトをロックする .net の方法は機能しません。
私のWebサービスクラスは次のようになります..
更新: 私はまだ Q#2 に苦労しています。なんか挙動不審だな
「UserName」キーの書き込みが成功しました - それはハッシュに存在します。ただし、Web メソッド内に記述したキーと値のペアは、現在の Web 要求では存続しません。次のリクエストでは、ハッシュテーブルには「UserName」という 1 つの項目しかありません。これは ApplicationState なので、EnableSession プロパティを true に設定する必要はないと思います。
state - Web ユーザー コントロールをステート マシンとしてモデル化するのは悪いことですか?
私たちは、いくつかの異なることを行う Web ユーザー コントロールを設計しています。内部または外部からイベントを取得し、これらのイベントへの応答はこのコントロールの状態に依存します。
私たちはモデリングをステート マシンとして考えていますが、それはマニアックすぎるか、他の誰かが理解するのが難しいかもしれないと考えています。これは本当だと思いますか?