問題タブ [proxy-classes]

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 投票する
2 に答える
167 参照

design-patterns - 内部クラスでのみ使用されるいくつかのメソッドを世界に隠します

短い質問

C++ドメイン モデルが 1 つあります。内部 API で使用されるいくつかのメソッドと、その他のパブリック メソッドがあります。これらの API メソッドを公開したくありません。これらのメソッドを隠すためにプロキシ パターンを使用することを考えています。これは良い考えだと思いますか?これを達成するための設計パターンはありますか?

長い例

ソフトウェアで制御できるが、一部の技術者が手動で動かすこともできるロボット アームが遠隔地にあるとします。それは、それが保持しているオブジェクトの種類を知ることを可能にするいくつかのセンサーを持っています. 私のプロジェクトでは、これはまったく異なるものですが、これは例として使用しているだけです。したがって、 RoboticHeldObject抽象クラスを含む1 つのRoboticArmクラスが必要です。RoboticArmは、腕を動かすだけでなく、どの RoboticHeldObject を保持しているかを知らせます。ただし、オブジェクトをピックアップしてリリースすることはできません。これは、ロボットを操作する技術者によって決定されます。したがって、次のようになります。

実装は非常に複雑なので、実際に難しい作業を実行する外部クラスRobotServiceを使用します。ただし、実際にRobotServiceを使用するのはRoboticArmであり(したがって機能を備えています)、残りの世界は RobotService について何も知らないため、Anemic Domain Model ではありません。

ここでの問題は、 releaseObject()holdObject()は、ここではRobotServiceのみが使用する API メソッドです。これらは、技術者がアームに保持されているオブジェクトを解放するか、新しいオブジェクトを配置するたびに、RobotServiceによってのみ呼び出されます。したがって、ネットワーク イベントがRobotServiceによって処理されるときに呼び出されます(アームは離れた場所にあるため、イベントはネットワーク経由で受信されることに注意してください)。例えば:

私のアプローチ

これらのメソッドを非表示にするには、RoboticArm の名前RealRoboticArmに変更し、 RoboticArmプロキシ クラスを作成します。

RoboticArmはプロキシであるため、RoboticArm::heldObject() は realArm->heldObject()、RoboticArm::moveUp() realArm->moveUp() などを呼び出します。

RobotServiceはRealRoboticArmインスタンスへのポインタを持つため、 releaseObject () などの API メソッドを呼び出すことができます。ただし、アプリケーションの他の部分は、 RealRoboticArm へのポインタを持たないため、 RoboticArm のメソッドしか使用できませ。したがって、 releaseObject()holdObject()は、効果的に聴衆から隠されます。

質問

これがプロキシ パターンなのかアダプター パターンなのかは 100% わかりません。これは、そのようなシステムをモデル化する適切な方法だと思いますか? より良いパターンはありますか?

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

c# - インターフェイスを実装するためのWebサービスプロキシクラス

Webサービスアクセスとクライアントアプリケーションのビジネスレイヤーへの「直接」アクセスを簡単に切り替えるために、(WCFではなく)Web参照用に生成されたプロキシクラスに共通のインターフェイスを実装させる方法を探しています。

ただし、カスタムタイプ(CustomSerializableType以下の例の例)は、生成されたプロキシクラスでは参照されません。代わりに、新しい同一の型が生成されるため、プロキシクラスがインターフェイスを実装できなくなります。

生成されたプロキシクラスにこれらのタイプを参照させる方法はありますか、それとも私はこれをすべて間違っていますか?代わりに、WebサービスをWCFサービスに変換することを検討する必要がありますか?


詳細

私たちのソリューションは、次の4つのプロジェクトで構成されています。

  • ビジネスライブラリ(ビジネスロジックを含み、データストアにアクセスします)
  • 共通ライブラリ(を含む共通機能を含むCustomSerializableType
  • Webサービス(リモートクライアントとビジネスレイヤー間のプロキシとして機能します)
  • Windowsアプリケーション

私たちのクライアントは、Windowsアプリケーションが2つの異なるモードで実行できることを望んでいます。

  • ローカルモード。アプリケーションはビジネスライブラリを直接使用してデータにアクセスします。
  • アプリケーションがWebサービスと通信してデータにアクセスするリモートモード

これを行うために、共通ライブラリにあり、すべてのビジネスメソッドを含むインターフェイスIBusinessを作成しました。

インターフェース

ビジネスレイヤー

ウェブサービス

生成されたプロキシクラス(読みやすくするために省略された大量のコード)

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

ruby-on-rails - ActiveRecordモデルを使用したプロキシオブジェクト-method_missingが機能しない場合がある

私は自分のアプリケーションのモデルを、動作を定義する他のオブジェクトへのプロキシとして使用してきました。

そのため、BoxBehaviorオブジェクトにすべてのメソッドを実装し、boxインスタンスでメソッドを呼び出すと、関連付けられたboxbehaviorオブジェクトに呼び出しをリダイレクトします。ボックスオブジェクトから合計を取得して保存する購入モデルにフックを作成しようとした場合を除いて、すべて正常に機能します。

ボックスが関連付けられている購入オブジェクトを保存しようとすると、次のエラーが発生します。

そして、私は次に何をすべきかについての手がかりを持っていません...私がboxクラスに直接totalメソッドを実装するとき、それはうまくいきます...これを解決するために私は何ができますか?プロキシが正しく機能していませんか?

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

visual-studio - Webサービスを再利用しますが、カスタムエンドポイントを使用します

Visual Studioのエンドポイントを持つWebサービスhttp://api.domain_a.com/を使用しており、サービスを簡単かつシンプルに操作するためのプロキシクラスを簡単に生成できます。

代替テキスト

しかし、ユーザーが自分のサービスを使用できる(そして自分のデータではなく自分のデータにアクセスできる)方法を作成したいと思います。また、サービスのベースURLをオンザフライで変更できる方法があるかどうかを知りたいと思いました。 。

例として

プロジェクトにWeb参照を追加してプロキシクラスを生成しますが、リクエストごとに、ユーザー設定を取得するユーザー名があります(魔女にはURLが含まれています)。http://domain_b.com/apiWeb参照を追加するときに使用した元のプロキシの代わりにドメインを使用している生成されたプロキシ?

手動でサービスを呼び出す必要がありますか?XMLデータの送受信?または、新しいURLを指すために使用できる「スイッチ」がありますか?

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

c# - WCF プロキシ クラスの派生インターフェイス

問題:

非常によく似た 2 つ (またはそれ以上) のクラスがあります。あるクラスのプロパティは、他のクラスのプロパティのサブセットです。より具体的には、プロパティ名とセマンティクスは同じですが、それらの型は必ずしも同じではありません。ただし、同じ名前のプロパティの型が異なる場合、これらの型は(同じ意味で)非常に似ています。

同様のクラスのすべてのセットに共通のインターフェイスを派生させて、異なるクラスのインスタンスを同じ方法で使用できるようにしたいと考えています。

私のクラスには 100 を超えるプロパティがあるため、可能であればインターフェイスを手動で作成することは避けたいと考えています。

インターフェイスは、すべての類似クラスのすべてのプロパティ セットの結合を包含する必要があります。(特定のオブジェクトに存在しないプロパティが読み取られると、null返される必要があります。そのような未定義のプロパティが設定されている場合、何も起こらないはずです。)したがって、インターフェイスはもはや適切ではなく、むしろラッパーであると思いますクラスか何か違う...

環境:

WCF を使用して Web サービス ( CreateSalesOrder ) を使用しています。サービスの入力メッセージには、 Request_ItemRequest_ShipToLocationなどの他の XSD タイプの子で構成されるXML スキーマ タイプRequest_SalesOrderの要素が必要です。

出力メッセージには、スキーマ タイプResponse_SalesOrderの要素が含まれます。これには、スキーマ タイプResponse_ItemResponse_ShipToLocationなどの同様の子要素と、タイプResponse_PriceTotal の要素PriceTotalなど、いくつかの追加要素があります。

ASP.Net MVC を使用して、Web サービスを使用するための UI を構築したいと考えています。したがって、販売注文を作成するためのフォームをレンダリングするビューがあります。Web サービス要求を送信した後、フォーム フィールドを Web サービス応答メッセージからの値で更新する必要があります。

フォーム フィールドは、プロキシ クラスのプロパティにアクセスするビュー モデルにバインドされます。フォームが送信されると、ビュー モデルはプロキシ クラス A のインスタンスを更新する必要がありますが、フォームが応答メッセージの値でレンダリングされる場合、ビュー モデルはプロキシ クラス B のインスタンスから読み取ります。

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

java - RMI呼び出しを介してパラメーターとしてプロキシを受信するときに実際のオブジェクトを取得するにはどうすればよいですか?

RMIを使用して通信するサーバーとクライアントがあり、リモートインターフェイスを実装するいくつかのクラスがあります。

クライアントは問題なくプロキシを受信しますが、このプロキシオブジェクトの1つを別のRMIメソッド呼び出しのパラメーターとして送信すると、サーバーのメソッドは、常駐する「実際のオブジェクト」の参照ではなく、プロキシの参照を受信します。同じJVMで。

サーバーでパラメーターとして実オブジェクトインスタンスを受け取ることは可能ですか(つまり、JVMに変換を自動的に処理させることによって)?ローカルオブジェクトへのプロキシを受信することは、私にはあまり意味がありません。

前もって感謝します!

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

groovy - groovyのプライベートコンストラクターを使用してクロージャーマップをオブジェクトにキャストします

私はgroovyを使用して、テストケースのモッククラスをいくつか作成しています。私は基本的に、テストケースを実行できるように、すべてのメソッドがnullを返すダミーオブジェクトを作成しています。

私は次の構文を使用しています:

したがって、ここでは、シングルトンインスタンスを偽のファクトリオブジェクトで上書きしようとしています。問題は、MessageFactoryのコンストラクターがたまたまプライベートメソッドであるということです。上記のコードを実行すると、不正なアクセス例外が発生します。groovyでプロキシを作成し、プライベートコンストラクターの問題を克服できる方法はありますか?

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

java - 動的プロキシから元のオブジェクトをアンラップする方法

動的プロキシをアンラップして元のオブジェクトを取得するための最良の方法は何ですか? 動的プロキシは次を使用して作成されましたjava.lang.reflect.Proxy.newProxyInstance()

ありがとうございました。

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

c# - 「RealProxy.GetTransparentProxy()」が「null」を返すのはどのような場合ですか?

http://msdn.microsoft.com/en-us/library/system.runtime.remoting.proxies.realproxy.gettransparentproxy%28v=VS.100%29.aspxのドキュメントは、GetTransparentProxyが返されるシナリオを示していません。nullしかし、私はnullそれを呼び出すと戻ってきます。

この動作はどのような状況で発生しますか?

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

c# - 最初にEFコードのCTP5のProxyCreationEnabledをオフにすることの欠点は何ですか

私の WCF サービスがコード ファースト モデルからクラスを返すことができる唯一の方法は、以下のコードProxyCreationEnablefalse使用して を に設定することです。

これを行うことのマイナスの結果は何ですか?利点の 1 つは、少なくともこれらの動的な型をシリアル化して、WCF を使用してネットワーク経由で送信できることです。