問題タブ [service-layer]
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.
architecture - アグリゲート、リポジトリ、およびサービス レイヤー
他のいくつかのクラスと関係があるクラスを取得します。最初のクラスは、集約 (ルート) と見なすことができます。サービス層の観点から見て、どのように呼び出しを分割するのが最善でしょうか?
- オブジェクト グラフ全体の集約のリポジトリを呼び出し、その特定のリポジトリから他のリポジトリを呼び出して、関係の保存を処理します (クラスのタイプごとに 1 つのリポジトリ)。
- オブジェクト グラフ全体の集計のリポジトリを呼び出し、その 1 つのメソッドですべてを処理します (同じメソッドですべての関係を保存します)。
- サービス レイヤー内から集約のリポジトリを呼び出し、その直後にサービス レイヤーから関連するクラスのリポジトリを呼び出します。
- サービスとリポジトリの間に追加のレイヤーを追加し、その追加のレイヤー内からオプション 3 のようにします。
プロダクション コードで考えられる 3 つのソリューションはすべて見てきましたが、最もクリーンなソリューションと、そのアプローチを選択する理由に興味があります。
c# - リポジトリ/サービスレイヤーのデザインパターンに関するアドバイス
ここで本当に単純なリポジトリとサービスレイヤーのパターンを作成しようとしています。(.NET 4、C#、LINQ、ただしこの質問は部分的に言語に依存しません)。注:これは単なる研究開発です。
私の目標は、サービスレイヤーのメソッド定義の量を最小限に抑えることです。
これが私のリポジトリ契約です:
そこには何も新しいことはありません。
さて、これが私のサービス契約にある(しようとしている)ものです:
基本的に、特定の「Foo」には多くのプロパティ(id、nameなど)があり、それらを検索できるようにしたいと思います。
したがって、異なるプロパティごとに1x Findメソッドは必要ありません。必要なのは、1つだけです。そうすれば、追加のプロパティを作成するときに、コントラクトを変更する必要がなくなります。
「FooSearchArgs」は、さまざまな「Foo」プロパティをすべて備えた単純なPOCOです。
だから、それは私がやろうとしていることです、ここに私の質問があります:
- これは貧弱なデザインですか?もしそうなら、選択肢は何ですか?
- このフィルタリングをサービスレイヤーに実装するにはどうすればよいですか?「FooSearchArgs」のどのプロパティが設定されているかを確認してから、フィルタリングを続ける必要がありますか?(この場合、query.where、if this、query.whereなど)これを行うための巧妙なLINQ IEnumerable拡張メソッドのアイデアを持っている人はいますか?(すなわち
repository.WhereMeetsSearchCriteria(fooSearchArgs))
ヘルプに感謝します。
architecture - プレゼンテーション層/公共サービス層。一般用語?
アプリケーション アーキテクチャ (Web UI と外部 Web サービスの両方を含む) を定義しているときに、最上位層の共通名が見つからないことに気づきました。アプリケーションに DAL (データ アクセス層) と BLL (ビジネス ロジック層) があることは明らかです。BLL の上部には、一般にプレゼンテーション層と呼ばれる UI があります (例: http://msdn.microsoft.com/en-us/library/ff647339.aspx )。しかし、BLL の最上位に存在するサービス レイヤーもあります。
しかし、ケーキは同じレベルに 2 つの層を持つことはできません :) ですから、その用語を見つけるのを手伝ってください。
spring - サービス層を使用する理由
http://solitarygeek.com/java/developing-a-simple-java-application-with-spring/comment-page-1#comment-1639の例を見ました
彼が提供する例で、そもそもサービス層が必要な理由を理解しようとしています。それを取り出した場合、クライアントで次のことができます。
サービス層は、DAO の単なるラッパーのようです。サービスレイヤーが削除された場合、事態が混乱する可能性があるケースを教えてもらえますか? そもそもサービスレイヤーを用意する意味がわかりません。
c# - パターンとプラクティス。サービス層?
サービスレイヤーまたはコントローラーで自動マッピングを行う必要がありますか?
リポジトリのアイデアが好きです-完全なドメイン(タイプ)オブジェクトを備えた生データIQueryableタイプのもの。サービス レイヤー - ページング、順序付け、フィルター処理、自動マップされたビュー モデルを返すコントローラー - 正しいモデルでビューをプッシュする
しかし、ActionFilters と属性でいくつかの素晴らしいものを見たので、より良いアプローチが
リポジトリ - 完全なドメイン (タイプ) オブジェクトを含む生データ IQueryable タイプのもの。サービス レイヤー - フィルタリングされ、ページングされたデータ ドメイン オブジェクト コントローラー - サービス レイヤー データの自動マッピングとビューのプッシュ。
これについての考えは大歓迎です
php - Application Service Layer - API メソッド インターフェイスの書き方
人々はサービス層のインターフェースをどのように設計していますか?
私は(PHPで)大規模なWebアプリケーションをプログラミングしており、MVCを使用しており、たとえばシンコントローラーをプログラミングしています(疑似コードが続きます)
サービス内の savePerson は、$input 構造全体またはコンテキスト (PHP では連想配列) の引数を取る必要がありますか?
例えばこれ -
または、すべての入力フィールドを分離して、「ハード」インターフェイスを提供する必要があります。
ありがとう。
ポール
asp.net-mvc-2 - Web アプリケーションの設計におけるサービス層とビジネス層の違い?
ばかげているように聞こえるかもしれませんが、サービス層の必要性とビジネス層との違いを理解するのは難しいと感じています。
そのため、asp.net mvc 2 を使用しており、データベースですべてのクエリを実行するデータ アクセス レイヤーがあり、次に、実行する必要があるビジネス ロジックと検証を含むビジネス レイヤーがあります。最後に、基本的にすべてのビューを持つプレゼンテーション層があります。さらに、ライブラリの一部として、いくつかのヘルパー、DTO、およびビューモデル クラスが異なるフォルダーに含まれています。しかし、私はアーキテクチャについて読み込もうとしましたが、サービス層はアーキテクチャの重要な部分であるようです。
私が理解しているのは、サービス層はすべての機能を呼び出すものだということだけです。しかし、私たちのアプリケーションでサービス層の必要性を本当に見ることができませんか? または、すでに存在している可能性がありますが、表示されません...サービスレイヤーがどのように重要であるかを例を挙げて説明できる人はいますか? 私が読んだことからかなり似ているように見えるので、ビジネス層とどのように違うのですか? 最初に必要な場合は?私たちがやろうとしているのは、可能な限り最善の方法でアプリケーションを設計することだけです.それについてのあなたの考えや経験は何ですか?
java - サービス層は春のアプリケーションでDB技術にバインドされています
私の質問は次のとおりです。サービス層は、使用しているテクノロジーにバインドされていますか?
たとえば、休止状態を使用している場合、休止状態機能のみであるいくつかの hql-query または criteria-queries をサービス層に配置するか、単純に DAO を呼び出します (そして、dao には休止状態の実装があり、おそらく jdbc の実装などがあります..) ?
ソフトウェアの効率的なレイヤード アーキテクチャを構築するのに苦労しています。
編集 これは単純なサービスです...私はそれがサービスだと思います...私が使用している技術に縛られずに(休止状態)
そして、これはDao実装を使用したサービスです
これら2つのアプローチのうち、どちらが正しいですか?
EDIT2
だから、私が理解したことを要約すると:
このテキストの壁で申し訳ありませんが、おそらく他の人に役立つかもしれません。私は正しい方向に進んでいますか?私のサービス層にはインターフェースが必要ですか? すべて正しく階層化されていますか?コントロールレイヤーも必要ですか?
ありがとう。
java - Java swing アプリケーションのサービス層
本当にサービスレイヤーが必要かどうか考えています。
デスクトップスイングアプリケーションに春と休止状態を使用しています。現時点では、gui/swingレイヤー->サービスレイヤー->daoレイヤーがあります。@Transactional サポートと IOC インジェクションにのみ春を使用します
ベストプラクティスは、daos を使用するサービスを作成し、すべてのトランザクション管理をサービスに入れる必要があると言います。
しかし、非常に頻繁に、サービスレイヤーはdaoメソッドのみを複製することに気付きました。たとえば、次のようになります。
これは、サービスレイヤーの私の典型的な使用法です... Hibernateはdbに依存せず、Springは技術に依存しません:だから、本当に必要ですか?
すべてのDAOを管理するための独自のServiceクラスはどうですか?? これは良い妥協案だと思いますか、それとも悪い習慣ですか?
@Transactional を DAO に配置するのは悪い方法であることはわかっていますが、現時点では @Transactional を配置するためだけにサービスを作成する必要があります...
編集
私のアプリに関する詳細情報。
私のアプリケーションは管理ソフトウェアであり、ユーザー登録、製品、注文などを管理します。実際には、エンティティの読み取り -> 編集 -> エンティティの保存または作成 -> 編集 -> 保存の操作が多数含まれており、休止状態のおかげで、これらの操作はほとんどの場合 1 つの dao によって管理されます。 .. collection および cascade.save_update により、同じ永続操作で 2 つ以上のエンティティを保存できます。
したがって、たとえば、アイテム (販売する製品) を挿入、編集、または作成できるアイテム JFrame には、次のようなものがあります。
これは私がほとんどの場合に持っているものなので、貧血ドメインアンチパターンに陥ったと思います...
ありがとう。