問題タブ [facade]

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

node.js - MongoDB (および mongoose) を使用して NODEJS プログラムで永続化するために Facade+Mediator を実装するのに助けが必要です

私は NodeJS と MongoDB を使って遊んでいます。本当に大きなアプリケーションになりそうなものを作りたいです。そのため、アプリケーションをできる限り切り離して設計するようにしています。

ビジネスロジックがデータの保存方法を認識しないようにするために、永続化レイヤーを抽象化すると便利だと思います(将来、RDBMS用にMongoDBを切り替える必要があるかどうかはわかりません)。それを知って、データストレージに必要な操作を備えた FACADE を作成し、メディエーターのパトロンを使用して FACADE 操作をサブスクライブし、それらを実装することを考えました。このメディエーターは、イベント リスナーを使用してファサードに接続し、ファサードはイベント エミッターを使用します。次に、メディエーターにサブスクライブするモデルにはすべてのマングース スキーマが含まれ、すべてのデータベース/永続性の問題を担当します。(それは意味がありますか?)

私は、マングースがデータモデルに非常にタイトであることを知っています. すなわち。Player プロトタイプではなく、PlayerSchema と PlayerModel があると予想されます。そう:

  • マングースのデータ モデルを使用する必要がありますか? (これを行う際に制限/問題はありますか?-DBを切り替えるとそれらを書き直す必要があることに加えて-)
  • マングースのデータ モデルをビジネス ロジックのプロトタイプに (この FACADE コンポーネントによって) 変換する必要がありますか? MongoDB データにアクセスするために別の ORM を試す必要がありますか?

私はJavaScript、Node、およびこれらすべてのテクノロジーに非常に慣れていないため、これらの抽象化を本当に行いたいと考えています(したがって、各部分を分離してテストし、より良い解決策がある場合はレイヤーを切り替えられるようにしたいと考えています)。

どんなアドバイスでも大歓迎です!

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

design-patterns - 組み込みシステムのファサードとアダプターのパターン

Elecias White の著書「Making Embedded Systems」 (O'Reilly から) を読んで、Facade パターンと Adapter パターンという 2 つの用語のために混乱しました。彼女が両方について与える説明は、まったく明確ではありません。

Adapter Pattern (Pag, 19): 「(...ラッパーと呼ばれることもあります)オブジェクトのインターフェースをクライアントにとってより簡単なものに変換します.....多くの場合、アダプターは醜いインターフェースを隠すためにソフトウェア API の上に書かれています. ..」 .

Facade パターン(Pag. 86): 「...コードへの簡素化されたインターフェイスを提供します...」. 次に、「...アダプターパターンはファサードパターンのより一般的なバージョンです」と表示されます。

悲しいことに、どちらの用語も私には似ているように思えます。

このサイト (および他のサイト) の他の定義から、ほとんどの人は「アダプター パターンにより、互換性のない 2 つのインターフェイスが互換性を持つようになる」と言います。この文脈で「相容れない」という言葉はどういう意味ですか?

ほとんどのサイトや書籍では、組み込みシステムの観点 (OOP ではなくプレーン C) 以外のより高いレベルからのパターンに関する定義が示されているため、示されている例は実際には明確ではありません。

この本は、初心者と専門家の両方にとって優れた知識源ですが、それほど多くのコードが含まれていないため、この種の定義を理解する必要があることに注意してください。

私が自分用に書いたいくつかの例を通してそれらを理解しようとしましたが、私の理解が正しいかどうか教えていただけますか?

例 1、ファサード パターン:

例 2、アダプターのパターン:

私が自分で十分に説明したことを願っています。よろしくお願いします!

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

jsf-2 - JSF2.0 State_Saving_Method クライアントの問題

Mojarra 2.1.3、Netbeans 7.0.1、primefaces 3.2 を使用しています。

現在、STATE_SAVING_METHOD クライアントとサーバーのどちらを使用するかで悩んでいます。現在、保存方法をクライアントに設定しています。これには、多くのオブジェクトの直列化可能性を調整することが含まれます。そして、ステートレス ファサード セッション Bean に transient キーワードを設定します。

私のxhtmlページには、ページネーション付きのprimefaces dataTableがあります。ページを初めてロードすると、データテーブルの最初のページが表示されます。ただし、次のページをクリックすると、この行は NullPointerException エラーをスローします。

何故ですか?saProductFacade @EJB プロパティが一時的であると宣言され、同じページへのポストバックで破棄されたためでしょうか。いずれにせよ、ViewScoped マネージド Bean はまだ生きています。この問題を解決する方法を教えてください。それとも私はそれを間違っていますか?

参考までに、STATE_SAVING_METHOD をサーバーに設定すると、これは完全に機能します。しかし、ブラウザーの [戻る] ボタンの危険性から、クライアントの状態を保存するオプションを使用することにしました。また、サーバーのメモリ制限により、クライアントの状態の保存が保証されます。

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

asp.net - フォーム認証CookieとWCF

httpファサードにajax/json呼び出しを行い、wcfサービスレイヤーに呼び出しを渡すasp.net 4.0アプリケーション(クライアント)があります。

ユーザーは、フォーム認証を使用してクライアントで認証する必要があります。その場合、認証Cookieがhttpファサードに渡され、httpファサードでアクセスできるようになるという考えです。[DinoEspositoの本に基づく設計-MicrosoftASP.NETおよびAJAX:Webアプリケーションの設計]

問題は、ファサードでHttpContext.Current.User.Identity.Nameが空の文字列であり、IsAuthenticatedがfalseであるということです。

web.config(httpファサードレベル)のsystem.ServiceModelセクションに以下を追加して、互換性を有効にしました。

私は自分のサービスを次のように飾りました:

ajax / facadeアプリでデバッグしていると、HttpContext.Current.Request.CookiesにCookieが存在することがわかります。認証されたユーザーではなく、匿名が使用されているようです。

両方のアプリケーションが同じIISサーバーで実行されています。

AJAX対応のwcfサービスへの呼び出しは、serviceProxy.jsを介して行われます。おそらく、このメソッドは必要なCookieを渡していないのでしょうか。

WCFトレースは現在'..ASPXANONYMOUS=.....;を表示しています。ASP.NET_SessionId = ....; メッセージログの.ASPXAUTH=.....'。

単純なものが欠けているような気がしますが、問題に近すぎます。

どんな提案も歓迎します。

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

c# - ファサードから別のクラスにイベントをアタッチする方法

2 つのサブシステム クラスを持つ Facade クラスがあるとします。サブシステムごとに異なるイベントがあります。

ファサードクラスは

および SubsystemClass1

次にSubsystemClass2

ファサード クラスを使用する別のクラスがあり、SubsystemClass1 と SubsystemClass2 からイベントをアタッチしたいとします。問題は、ファサード クラスでイベントを再定義せずに、サブシステム クラス (存在する場合) を使用せずにイベントをアタッチする方法です。

ファサードクラスで再定義する例

サブシステム クラスを使用する例、両方をパブリックにする

前もって感謝します、

よろしくブライアン...

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

service - サービス ファサード (Adam Bien による) - EJB 3

Adam Bien Rethinking Business 層を読みました。OrderService などのサービス ファサードの作成について言及しました。ただし、大規模なエンタープライズ アプリケーションに多くのサービス ファサードを使用できますか。顧客モジュール、注文モジュール、輸送モジュールがあります。これらのモジュールをすべて含む 1 つの大きなファサードを作成するのではなく、高レベル モジュールごとにサービス ファサードを作成できますか。したがって、私の JSF 2.0 Web アプリでは、次のような呼び出しを行うことができます: transportServiceFacade.findDetails() orderServiceFacade.findDetails()

このようにする代わりに

genericServiceFacade.findDetails()

私の例ではむしろ多くのファサードを使用しています。これはパフォーマンスに影響しますか?

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

c# - ファサードデザインパターンの使用法

私たちのアプリケーション(C#)では、ファサードはコアのAPIとして使用されます。ファサードは、アプリ自体がコアで処理を行うために使用されます。それを知って、ここに私の質問があります:

  1. ファサードがラップするコアオブジェクトの1つに、再帰ビットが含まれていると仮定しますか?たとえば、ファサードはツリーから「GetX」を提供し、各ノードはそのサブツリーからGetXを取得する必要があります。このノードはファサードの「GetX」を使用する必要がありますか?
  2. ファサードはコアオブジェクトをアプリケーションに公開する必要がありますか?たとえば、ユーザーはツリーの構築、ノードの追加、ツリーの印刷、ツリーの計算などを行います。アプリケーションはツリーオブジェクトを使用する必要がありますか、それともファサードにツリーの作成、保存、プリンティングなどを依頼する必要がありますか?

ありがとう。

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

php - クラスファサードは私のディレクトリMVCのどこにありますか?

デザインパターンに関する質問があります。PHPでMVCアプリを開発していますが、クラスのファサードがどこにあるかわかりません。MVCパターンを使用している場合、ファサードはモデル内にある必要があると思いますが、わからない??、クラスのファサードをどこに置くか?

または、ファサードを別のフォルダに配置しましたか?MVCを使用してdessingパターンのファサードをどのように整理しますか?

回答ありがとうございます

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

c# - アプリケーション ファサード パターンのベスト プラクティス

多層 SOA アプリケーションと 100 を超えるテーブルを持つデータベースがあります。すべての CRUD 操作を処理するデータ層にエンティティ フレームワークを使用しています。

サービスでホストされている 1 つのファサード クラスがあり、クライアント アプリ全体で呼び出すことができます。

このファサード クラスには、次のようなメソッドが含まれています。

また、ファサード クラスは基本的に、DoSomething() に似た他のメソッドの負荷でいっぱいです。

したがって、クライアントは基本的にファサード クラスのインスタンスを作成し、これらすべてのメソッドにアクセスできます。

私の質問は、これがファサード パターンのベスト プラクティスであるかということです。ファサード クラスが「重すぎる」と感じており、アプリケーションの規模が大きくなった場合にパフォーマンスに影響するかどうかはわかりません。

大量のメソッドが含まれている場合、ファサード クラスのインスタンスの作成は非常にコストのかかる操作になりますか?

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

c# - C# でファサード パターンを実装し、サブシステムを物理的に非表示にする方法

Java でファサード パターンを実装する場合、package-private 修飾子を使用して、ファサードのサブシステムを簡単に非表示にできます。その結果、ファサード/パッケージの外部からアクセスできる小さなインターフェイスしかなく、サブシステムの他のクラスは表示されません。

ご存じのとおり、C# には package-private 修飾子はありませんが、internal と呼ばれる同様の修飾子があります。ドキュメントによると、内部として定義されたクラスは、同じアセンブリ内でのみアクセスできます

私が理解していることから、ファサードのサブシステムを物理的に隠すために、少なくとも 2 つのアセンブリ (実際には 2 つの .exe/.dll ファイルを意味します) を作成する必要があります。物理的には、クラスは a) 外部からインスタンス化できず、b) ファサードの外部のインテリセンスによって表示されないことを意味します。

  1. internal キーワードが効果を発揮するように、小さなプロジェクトを 1 つの .exe と 1 つの .dll (ファサード用) に分割する必要がありますか? 私のファサードのサブシステムは 2 つのクラスのみで構成されており、独自の .dll はやり過ぎのようです。
  2. はいの場合、Visual Studio でファサードを独自のアセンブリにアウトソーシングするベスト プラクティスの方法は何ですか?

誤解しないでください。プログラムをいくつかのアセンブリに分割する必要はありません。ファサードの背後にあるいくつかのクラスを IntelliSense から隠し、外部からのインスタンス化を防ぎたいだけです。しかし、私が間違っていなければ、これほど簡単な方法はありません。