問題タブ [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.
.net - Linq2Sql - ネストされたリストをどのように遅延読み込みしますか?
実際にクエリを実行せずに、ネストされたリストをどのように遅延ロードしますか? 非常に基本的な例を使用すると、次のようになります。
そして、私のリポジトリレイヤーには、次のメソッドがあります。
次に、Service レイヤーに GetCityBlocksByOwner を配置します。ここで拡張メソッドを使用して、特定の人物が所有する都市ブロックを取得します。たとえば、Guido のブロックが必要だとします。
リポジトリで .ToList() を実行すると、クエリが実行されます。そのレベルで取得しているブロックが誰なのかわからないため、これはばかげています。問題は、これを効率的に行うにはどうすればよいかということです。
50000 のブロック所有者と 1000000 の都市ブロックがあり、それらすべてをロードすることはオプションではないと仮定しましょう。入れ子のため、IQueryables の使用は機能しません (少なくとも私が認識している極端なハッキングがなければ)。また、Rob Conery の LazyList のようなものを使用しようとすると、基本的に DAL からドメイン モデルへのリークが発生し、将来的には非常に悪い結果になる可能性があります。
では、これを正しく行うにはどうすればよいでしょうか。
- それは正しい文脈を決定することの問題ですか?もしそうなら、これをリポジトリ層で行うか、それともサービス層で行うか?
- 非常に具体的なサービス メソッドを取得するために、サービス レイヤーとリポジトリ レイヤーを半分融合させますか?
- それとも、何かが完全に欠けていますか?(とにかく段階的に廃止されているLinq2Sqlのことにはまだ比較的新しいので...)
編集: リポジトリ パターンでは、現在ドメイン オブジェクトにマッピングしているため、次のようになります。
これが機能するには、CityBlock オブジェクトの実際のフィールドを IQueryable にしない限り、建物に .ToList() を取得させる必要があります。 CityBlock.BuildingsOnBlock フィールドにアクセスするすべての人に付与されます。ドメイン オブジェクトへのマッピングは、サービス レイヤーで行う必要があるのでしょうか。
c# - サービスを介して、または直接リポジトリにアクセスしますか?
ASP.NET MVC コントローラ アクションがリポジトリに直接アクセスできるようにすることは (LoginService.Authorize() などの重い作業のためにサービス層が存在する場合でも)、データを取得、追加、または更新できるようにするのは適切なコーディング標準ですか? それとも、すべてがサービスを通過し、そこからリポジトリに移動する必要がありますか?
asp.net-mvc - 私のリポジトリ/サービスにはどのくらいの責任が必要ですか?
私は次のオブジェクトを持っています:
人<-連絡先->クライアント人<-クライアント
サービスレイヤーでリポジトリパターンを使用しています。しかし、すでにここにいて、完璧主義者である私は迷子になっています!
私はPersonService、ClientServiceも持っており、personService.Add(person)とclientsPersonService.Add(client)を呼び出す必要があるContactServiceが必要だと確信しています-または?
仕事は連絡先を追加することです。連絡先には、Personオブジェクトが関連付けられ、ClientsPersonオブジェクトが含まれます。そして、そのClientsPersonはしばしばそうするでしょう。クライアントがいます。
さまざまな仕事はどこに行くべきですか?サービス/リポジトリを別の場所に呼び出すのは悪いことだと聞きました。
service-layer - サービス層の目的
サービスレイヤーの目的には以下が含まれると思いますか?
- ドメインモデルを間引く(つまり、キャッシング、インスタンス化などの特定の機能の移動)
- ドメインモデルからの依存関係の削減
- APIの最小化
java - サービス層はSpring Beanであるべきですか?
サービス層は Spring Bean にできますか、またはする必要がありますか?
もしそうなら、サービスの消費者である呼び出し元のアプリケーションからどのように取得する必要がありますか?
消費者はそのような Bean が存在することを認識している必要があるため、いずれにしても Spring を使用する必要があります
サービスメソッドを利用する。
java - Spring-MVCを使用してJavaWebアプリケーションでのデプロイメントの頻度を減らします
「サービスレイヤー」をWebレイヤーとは別にデプロイして、WARファイル全体をパッケージ化、ビルド、およびデプロイする必要がある1週間あたりの回数を減らす簡単な方法はありますか?
私は主にTomcatを使用していますが、JavaWebサーバーにもっと一般的なものを望んでいます。
asp.net - サービス層と ASP.NET MVC 2 の目的
MVC 2 を理解し、将来の開発のための実行可能なプラットフォームとして会社に採用してもらうために、私は最近多くの本を読んでいます。過去数年間、ASP.NET だけを扱ってきたので、追いつく必要がありました。
現在、リポジトリのパターン、モデル、コントローラー、データ注釈などを理解しています。しかし、リファレンス アプリケーションの作業を開始するのに十分な理解を妨げていることが 1 つあります。
1 つ目はサービス層パターンです。Stack Overflow に関する多くのブログ投稿や質問を読みましたが、このパターンの目的をまだ完全には理解していません。MVCCentral で Golf Tracker Application のビデオ シリーズ全体を見て、彼が投稿したデモ コードも見ましたが、サービス レイヤーはリポジトリ パターンの別のラッパーであり、まったく機能しないように見えます。
この投稿も読みました: http://www.asp.net/Learn/mvc/tutorial-38-cs.aspxそして、私の質問にいくらか答えているように見えましたが、データ注釈を使用して検証を実行している場合、これは必要ないようです。
デモンストレーションや投稿などを探しましたが、パターンを単純に説明し、それを使用する説得力のある証拠を提供してくれるものは見つからないようです。
誰かがこのパターンを使用する 2 年生 (OK、おそらく 5 年生) の理由、使用しないと失うもの、使用すると得られるものを教えてもらえますか?
php - MVC、サービス レイヤー、およびファイルのアップロード/ストレージ
私は Zend Framework でレイヤード アーキテクチャを使用しています。
私はMVCを持っています:
コントローラ > (DTO) サービス (サービス層) > (DO) リポジトリ > 永続性
今、私は画像ギャラリーを処理する必要があります。アップロードの処理はフロントが担当しているが、親指の生成はどこが担当しているのだろうか?
サイズ変更を処理し、ファイルをストレージサーバーフォルダーに移動するサービスに一時パスを渡して、写真を前から一時フォルダーに保存する必要がありますか?
または、写真のサイズ変更/保存プロセスを前面から処理し、写真の URL のみをサービスに渡す必要がありますか?
サービス レイヤーの目的は、アプリケーション ロジックを移動し、コントローラーをスリムに保つことです。しかし、そのような場合、誰が何の責任を負っているのか本当にわかりません:)
何かアドバイスはありますか?
asp.net-mvc - サービスレイヤーはMVCアプリケーションのビューモデルを返す必要がありますか?
ASP.NET MVCプロジェクトがあり、asp.netサイトの次の連絡先マネージャーチュートリアルのように、サービスレイヤーを使用しているとし ます。http ://www.asp.net/mvc/tutorials/iteration-4-make- the-application-loosely-coupled-cs
ビューのビューモデルがある場合、サービスレイヤーは各ビューモデルを提供するのに適切な場所ですか?たとえば、サービスレイヤーのコードサンプルにはメソッドがあります
代わりにIEnumerableが必要な場合は、サービスレイヤーに配置する必要がありますか、それとも「正しい」場所である他の場所にありますか?
おそらくもっと適切なのは、ContactControllerに関連付けられたビューごとに個別のビューモデルがある場合、ContactManagerServiceに各ビューモデルを返すための個別のメソッドが必要ですか?サービスレイヤーが適切な場所でない場合、コントローラーで使用するためにviewmodelオブジェクトをどこで初期化する必要がありますか?
asp.net-mvc - サービス層とリポジトリ層の責任
オブジェクトを永続ストアに保存するときのサービス層とリポジトリ層の責任について頭を悩ませようとしています。
私の現在の理解はこれです:
私のコントローラーでは、ユーザーが(フォームから)送信したデータから「メモ」オブジェクトを作成しました。次に、ユーザーは「NoteService」で「保存」を呼び出します(依存性注入によってそこにあります)。
「NoteService」の「Save」メソッド内でビジネス ロジックの検証を実行し、「Note」オブジェクトを「NoteRepository」の「Save」メソッドに渡します。
次に、「NoteRepository」の「Save」メソッドは、このオブジェクトに既存の主キーがあるかどうかを確認し、存在する場合はデータベースからそのオブジェクトを取得し、渡された「Note」オブジェクトを使用してそのプロパティを更新し、保存しますデシベルに戻ります。主キーがない場合、オブジェクトは単純にデータベースに保存され、新しく作成された主キーとともにサービスに返されます。