問題タブ [delegation]

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.

0 投票する
3 に答える
3459 参照

iphone - Objective-c 非同期通信: ターゲット/アクションまたは委任パターン?

いくつかの非同期通信状況 (イベント駆動型 XML 解析、NSURLConnection 応答処理など) を扱っています。私の問題を簡単に説明しようとします:

私の現在のシナリオでは、サービス プロバイダー (xml パーサーと通信したり、ネットワーク通信を行ったりすることができます) と、サービス プロバイダーにタスクの一部を非同期で実行するように依頼できるクライアントがあります。このシナリオでは、サービス プロバイダーが処理を終了したときに、結果をクライアントに返す必要があります。

この種のものを実装するための一種のパターンまたは経験則を見つけようとしていますが、3つの可能な解決策があります。

1. 委任パターンを使用します。クライアントはサービス プロバイダーの委任であり、タスクの完了時に結果を受け取ります。

2. ターゲット/アクション アプローチを使用します。クライアントはサービス プロバイダーにタスクを実行するように要求し、タスクの完了後にサービス プロバイダーによって呼び出される必要があるセレクターを渡します。

3. 通知を使用します。

(更新) ソリューション #2 (ターゲットとアクション) をしばらく試した後、私の場合は委任アプローチ (#1) を使用する方がよいという結論に達しました。私が見ているように、ここに各オプションの長所と短所があります:

委任アプローチ:

  • 1 (+)オプション 1 の利点は、クライアントがサービス プロバイダーのデリゲート プロトコルを実装する必要があるため、コンパイル時のエラーをチェックできることです。

  • 1 (-)これは、デリゲート プロトコルを実装する必要があるため、クライアントがサービス プロバイダーと密結合になるため、欠点でもあります。

  • 1 (+)これにより、プログラマーはコードを簡単に参照して、サービス プロバイダーが呼び出して結果を渡すクライアントのメソッドを見つけることができます。

  • 1 (-)クライアントの観点からは、サービス プロバイダーが結果を取得した後、どのメソッドが呼び出されるかを見つけるのはそれほど簡単ではありません。デリゲート プロトコル メソッドに移動するだけで簡単ですが、#2 のアプローチはより直接的です。

  • 1 (-)もっとコードを書く必要があります: デリゲート プロトコルを定義して実装します。

  • 1 (-)また、委任パターンを使用して、実際に動作を委任する必要があります。このシナリオは、意味的に言えば、委任の正確なケースではありません。

アクション/ターゲットアプローチ

  • 2 (+)オプション 2 の利点は、サービス プロバイダー メソッドが呼び出されるときに、コールバック アクションを指定する @selector も指定する必要があるため、プログラマーは結果を処理するために呼び出されるメソッドをその場ですぐに知ることができることです。

  • 2 (-)これに対して、サービス プロバイダーのコードを参照しているときに、クライアントでどのメソッドがコールバックされるかを見つけるのは困難です。プログラマーは、サービス呼び出しに移動して、どの @selector が渡されているかを確認する必要があります。

  • 2 (+)より動的なソリューションであり、パーツ間の結合が少なくなります。

  • 2 (-)おそらく最も重要なことの 1 つは、クライアントが存在しないセレクターをサービス プロバイダーに渡すことができるため、実行時エラーや副作用が発生する可能性があることです。

  • 2 (-)シンプルで標準的なアプローチ (#performSelector:withArgument:withArgument:) を使用すると、サービス プロバイダーは最大 2 つの引数しか渡すことができません。

通知:

  • 通知は、複数のオブジェクトを更新する必要がある場合に使用することになっているため、選択しません。また、この状況では、デリゲート/ターゲット オブジェクトに、結果が構築された後に何をすべきかを直接伝えたいと思います。

結論: この時点では、委任メカニズムを選択します。このアプローチにより、安全性が向上し、コードを簡単に参照して、デリゲートにサービス プロバイダー アクションの結果を送信した結果を追跡できます。このソリューションのマイナス面は次のとおりです。より静的なソリ​​ューションであり、より多くのコード (プロトコル関連のもの) を記述する必要があり、意味的に言えば、サービス プロバイダーは何も委任しないため、委任については実際には話していません。 .

何か不足していますか?何をお勧めしますか?その理由は何ですか?

ありがとう!

0 投票する
5 に答える
721 参照

c++ - C++ Class Delegation Constructor Problems

Thank you for reading. The to delegate Class is called Sensor. It need a reference to be set in the Constructor like:

I have a Class testFactory. If i now type

class testFactor{ ...stuff... private: Sensor mySensor;}

I get ALL the Problems. It cannot alloc an abstract Object. Or it cannot declare the variable, or does not know the Type of the variable.

Even taking Sensor out of the header into the cpp with as a static variable does not help.

Only if i change the Sensor Constructor to a void/non Constructor i dont get ANY Problems.

But then i have to use a setRed Function in the Sensor and this could lead to more problems.

Hope you can help me with: declaring a Variable with holds an Class with an non Void Constructor

0 投票する
4 に答える
253 参照

objective-c - 目的の C アプリのネットワーク コードを一元化する

アプリのネットワーク コードを一元化しようとしています。基本的に、サーバーからの情報が必要なさまざまな場所で、ServerRequest クラスのオブジェクト serverRequest を作成して情報を取得します。ServerRequest が完了すると、情報を呼び出し元のオブジェクトに送り返す必要があります。もちろん、非同期で動作する必要があります。待機中にアプリが停止することは望ましくありません。

この情報の戻りは、注意が必要な部分です。私のオプションは委任と通知のようです。私が知る限り、どちらにも問題があります。

委任: serverRequest オブジェクトへの委任として自分自身を渡します。問題は、リクエストが完了する前に割り当てが解除された場合、serverRequest が割り当て解除されたオブジェクトをメッセージで送信し、プログラムがクラッシュすることです。これを防ぐには、すべてのサーバー リクエスト (複数ある場合もあります) を追跡し、dealloc メソッドでそれらすべてを通知して、それ以上メッセージを受信しないようにする必要があります。これはすべて可能ですが、確かに面倒です。

通知: 情報を渡すのは大変な作業のようです。自分自身をオブザーバーとして通知センターに追加し、割り当てを解除するときに自分自身を削除する必要があります。さらに、完了時にどのような通知を投稿するかという情報を ServerRequest に渡す必要があります。そして、ServerRequest は受信したデータを NSDictionary に押し込む必要があり、それが渡された後にそれを元に戻します。

どちらのメソッドも機能するはずですが、ServerRequest を呼び出すコードを起動してオブジェクトを渡すだけでも、非常に手間がかかるように思えます。通知はもう少し柔軟で、痛みが少なく、クラッシュする可能性が少し低いと思いますが、どちらのアプローチにもあまり満足していません. フィードバックをいただければ幸いです。ありがとう。

0 投票する
2 に答える
15417 参照

asp.net - 偽装と委任を使用して SQL Server に接続しようとする ASP.Net Web アプリケーション

認証されたユーザーの資格情報を SQL Server に渡すために、イントラネット ASP.Net Web アプリで偽装と委任を使用しようとしています。

Web サーバーと SQL サーバーは 2 つの別個のマシンですが、同じドメイン内にあるため、委任が必要です。

私は次のことをしました:

  • 私のWebアプリのweb.configに設定<authentication mode="Windows"/>してください。<identity impersonate="true"/>
  • Active Directory で、Web サーバーから SQL Server 上の MSSQLSvc サービスへの制約付き委任を有効にしました。
  • IIS を介して、Web サイトで Windows 認証のみを有効にしました。

どうやらこれはすべて機能するはずですが、機能しません (SQL Server が匿名ユーザーへのアクセスを拒否しています - 「ユーザー 'NT AUTHORITY\ANONYMOUS LOGON' のログインに失敗しました」)。

IIS7 では、アプリケーション プールは統合パイプライン モードを使用するように設定され、NetworkService ID で実行されます。Web サイトでは、Windows 認証のみが有効になっており、拡張保護がオフになっており、カーネルモード認証が有効になっており、プロバイダーは NTLM です。

私が読んだすべての Web ページは、私のセットアップが機能するはずであることを示しているようです。私は何が欠けていますか?

0 投票する
3 に答える
19010 参照

composition - 構成と委任

構成の設計が委任とどのように異なるかなど、実装に関して何か違いはありますか。たとえば、以下のコードは委譲を行っているように見えます。これは、ユーザーが b を使用せずに構成されたオブジェクト (つまり "a") にアクセスできないためです。したがって、ユーザーはクラス b のインターフェースを呼び出してから、「クラス b」が「クラス a」の適切なインターフェースを呼び出して委任する必要があります。これは理にかなっていますか?

0 投票する
1 に答える
198 参照

iphone - デリゲート オブジェクトはどのように呼び出されますか?

私のプロトコル:

rootView コントローラー内のモーダル ビュー コントローラーの破棄を処理するために、このプロトコルを設計しました。私の rootView コントローラーはこのプロトコルを採用し、次のように宣言されています。

私はすぐに使えるものを使用します:

-正常に動作するモーダル コントローラーを表示します。ただし、コントローラーの解任を処理するためにこのプロトコルの実装をさらに進める方法については混乱しています..

明らかに、規定の方法を使用してプロトコルを正しく実装しました。メソッドが呼び出されたときにView Controllerを閉じる必要があります。また、modalViewController の戻るボタンをタップして呼び出されるようにしたいと考えています。

アップルのドキュメントにあるように、「場合によっては、オブジェクトが他のオブジェクトにそのアクションを通知して、必要な付随的措置を講じることができる場合があります。」私の目標は、ElecticalViewController がその親 (RootViewController) に、それを破棄する必要があることを通知することです。その却下は、戻るボタンをタップしてトリガーする必要があります。オブジェクトはこの通知をどのように達成しますか?

0 投票する
3 に答える
9532 参照

openid - OpenIDをGoogleに委任します(Google Appsではありません)

私の個人的なウェブサイト/ブログを使用して、openidを使用するサイトにログインし、私のGoogleアカウントに委任することは可能ですか?


OK、私はSOでこの質問を検索しましたが、良い答えはありません。しばらく過ごした後、私はそれを行う方法を理解しました。私はそれを共有する方法としてこれに自分で答えるつもりです。

0 投票する
2 に答える
2078 参照

iphone - UITableViews デリゲート メソッドを直接呼び出す

edit メソッドを直接呼び出す方法を探していました。

このメソッドには、操作されたセルをアニメーション化したり、モデル配列から削除したりするためのすべてのロジックがあります。ユーザーがスワイプ、追加、または再配置すると呼び出されますが、バックグラウンド スレッドがモデルを変更するため、手動または直接呼び出したいと思います。

私は次のように NSIndexPath を構築しました:

次のようなものを呼び出す方法がわかりません。

このプレーンなスタイルの UITableView のメソッドに別の方法でアクセスする必要がありますか?

ありがとう:)

0 投票する
1 に答える
994 参照

internet-explorer-8 - Mootools 1.2.4 委任が IE8 で機能しない...?

だから私はフォームの横にリストボックスを持っています。ユーザーが選択ボックスのオプションをクリックすると、フォーム要素に配置される JSON オブジェクトで返される関連データを要求します。フォームが保存されると、リクエストが通過し、リストボックスが更新されたデータで再構築されます。再構築中なので、onchange コードのリストボックスの親 div で委任を使用しようとしています。私が抱えている問題は、IE8 (大きなショック) が委任されたイベントを発生させないことです。

私は次のHTMLを持っています:

それに付随する次のスクリプト:

(関係のないものを少し取り出しました)。したがって、これはすべてFirefoxで期待どおりに機能しますが、IE8は選択要素で委任された変更イベントを発生させることを拒否します. 変更機能を選択に直接アタッチすると、問題なく動作します。

何か不足していますか?IE8 は :relay が好きではないのですか?

補足: 私は mootools や javascripting などに非常に慣れていないので、コードに関して改善できることがあれば、私にも知らせてください.. ありがとう!

0 投票する
1 に答える
1882 参照

wcf - 2 台のマシン境界 (3 台のマシン) で偽装を使用すると WCF が失敗する

これらのシナリオは、個別に機能します。私がそれをすべてまとめると、それは壊れます。

偽装を使用して発信者 ID を取得する netTCP を使用する WCF サービスがあります (このレベルではロール ベースのセキュリティが使用されます)。

これに加えて、偽装も使用する TransportCredientialOnly で basicHTTP を使用する WCF サービスです。

次に、basicHttp に接続するクライアント フロント エンドを作成します。

このゲームの目的は、下部にある netTCP サービスからクライアントのユーザー名を返すことです。そのため、究極的には、ここでロール ベースのセキュリティを使用できます。

各サービスは異なるマシン上にあり、ローカルとリモートの両方でクライアントを実行するときに、他のサービスへの呼び出しを削除すると、各サービスが機能します。つまり、この問題は、複数のマシン境界をまたぐ場合にのみ発生します。

つまり、各パーツを接続するとセットアップが壊れますが、単独では正常に動作します。

私も指定します

[OperationBehavior(Impersonation = ImpersonationOption.Required)] メソッドと

Windows認証のみを許可するようにIISを設定しています(実際には匿名を有効にしていますが、無効にしても違いはありません)

この偽装は、マシン A に netTCP サービスがあり、マシン B に basicHttp サービスを持つクライアントがあり、マシン B にも basicHttp サービスのクリネットがあるシナリオでは正常に機能します...ただし、そのクライアントを任意のマシン C に移動すると次のエラーが表示されます。

例外は、「ソケット接続が中止されました。これは、メッセージの処理中にエラーが発生したか、リモート ホストが受信タイムアウトを超過したか、基になるネットワーク リソースの問題が原因である可能性があります。ローカル ソケットのタイムアウトは '00:10:00' でした 内部メッセージは '既存の接続がリモート ホストによって強制的に閉じられました' です

これは構成よりもネットワークの問題だと思い始めています...しかし、ストローをつかんでいます...

構成ファイルは次のとおりです (クライアントから netTCP レイヤーに向かう)

クライアント用のサービス (basicHttp サービスと netTCP サービス用のクライアント)

最後に netTCP 層のサービス