問題タブ [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 - データベースを処理しないメソッドをサービスレイヤーに含めるのは悪い習慣ですか?
ユーザーサービスには次の方法があります
データベースを扱わない方法がいくつかあることに気付くでしょうが、これはそれらを使用するのに良い場所だと感じました。
これは悪い習慣と見なされますか?
注:私のリポジトリレイヤーはデータベースを厳密に扱います。私の流れは行きます。
データベース>LINQ(DBML)>リポジトリレイヤー>サービスレイヤー>コントローラー(またはその他)。
datamapper - Doctrine2 のベスト プラクティス、エンティティはサービスを使用する必要がありますか?
しばらく前に同様の質問をしました:データ マッパー パターンを使用して、エンティティ (ドメイン オブジェクト) はマッパーについて知っている必要がありますか? しかし、それは一般的なものであり、具体的に Doctrine2 でいくつかのことを達成する方法に本当に興味があります。
以下は単純なモデルの例です: それぞれThing
がVote
from aUser
を持つことができ、 aUser
は複数のキャストを行うことができますが、最後のカウントVote
のみをキャストすることができます。Vote
他のデータ (Msssage
など) は に関連しているためVote
、2 番目Vote
が配置されると、元のデータVote
を更新するだけでなく、置き換える必要があります。
現在Thing
、この機能があります:
そしてVote
、関係の設定を処理します:
aUser
が最後にVote
カウントされたものだけであることを保証することは、Thing
保証すべきものであり、一部のサービスレイヤーではないように思えます。
したがって、それをモデルに保持するために、新しいThing
関数:
Vote
では、ドメイン モデル内からを削除するにはどうすればよいでしょうか。リラックスVote::setThing()
して受け入れる必要がありNULL
ますか?Thing
投票を削除するために使用できるある種のサービスレイヤーを含める必要がありますか? 投票が蓄積し始めると、それforeach
は遅くなるでしょう - サービス層を使用して、コレクション全体をロードすることなくThing
検索できるようにする必要がありますか?Vote
私は間違いなくライト サービス レイヤーの使用に傾いています。しかし、Doctrine2 でこの種のことを処理するより良い方法はありますか、それとも正しい方向に向かっていますか?
architecture - 同じコードベースを共有する複数のアプリケーション
いくつかのアプリケーションで使用されるコードベースがあります。
この要件を容易にする技術は何ですか (サービス層?)。
ありがとう
c# - ビジネスレイヤー(またはサービスレイヤー、ドメインモデルなど)からBindingListを返す必要がありますか?
コレクションとDataGridViewの間に双方向のデータバインディングを提供するには、UIにBindingListが必要です。ただし、ビジネスレイヤー(またはドメインレイヤー、サービスレイヤー、データレイヤーなど)からBindingListを返すのは正しくないようです。つまり、UI要件のためにBindingListのみを使用していましたが、このUIの必要性はドメインレイヤーと結合されます。
これを行うための「適切な」分離された方法は何ですか?IListを返し、プレゼンテーションのためにBindingListにコピーする必要がありますか?現実の世界の観点から、このオーバーヘッドは何か価値がありますか?
asp.net-mvc-2 - サービスレイヤーから何を返す必要がありますか?DotNetOpenAuth
この場合、何を返せばいいのでしょうか。私のUiとサービスレイヤーは異なるプロジェクトにあります。
これが起こることです
->ユーザーがサイトにアクセス->ユーザーがopenIdプロバイダーを選択し、ログインを押します->コントローラーにポストバック
そこで、ドメインクラスを含むViewModelを取り込みます。
これまでのところ、SendOpenIdRequestで
今、これは私が迷子になる場所です。なぜなら、彼らは私が返すことができるものがたくさんあるからです。
戻ることができた
ただし、現在はasp.net mvc ActionResultに依存しているため、これは悪いことだと思います。このサービスレイヤーを他のプロジェクトに使用するとします(モバイルアプリケーションに接続するWebサービスがあるかもしれません)。それはうまくいきません。
できreturn OutgoingWebResponse
ましたが、取り戻したらどうしたらいいのかよくわかりません。
CreateRequest()から生成されたIAuthenticationRequestを返すこともできます
最後に、上記のいずれかを含むドメインオブジェクト(OpenId)を返すことができます。
.net - n 層 Web アプリ全体で .NET メンバーシップ プロバイダーを使用する
私は現在、主に新しいテクノロジーとパターン (リポジトリ、uow、サービス、ioc、ef4、mvc3) を実践するために、n 層の Web アプリケーションを構築しています。
たくさんの髪の毛を引っ張った後、リポジトリを使用してサービスレイヤーを介してエンティティを保存するef4ができました。
私は現在、サービス層で必要なメソッドを定義し始めており、認証の実装を開始するには今が良い時期だと考えています。通常、私は自分の認証コードをロールバックしますが、友人からメンバーシップ プロバイダーを試すように言われました。
明らかに、これを mvc3 Web アプリ内で使用するつもりですが、これをサービス層内でも使用できるかどうか疑問に思っていますか? 記事やブログの投稿を教えてもらえますか?
注意。明白なことを述べている場合は申し訳ありませんが、サービスレイヤーについて言及している場合、WCF を意味するものではないことを明確にしたかっただけです。これらは、サービス層パターンを尊重する私自身のクラスです - http://martinfowler.com/eaaCatalog/serviceLayer.html。そうは言っても、後日、WCF サービスを介してこのサービス層を公開したいと思うかもしれません。
数時間グーグルで検索しましたが、何も思いつきませんでした!
どんな助けでも本当に感謝しています。
c# - これらのクラス/メソッドはどこに行くべきですか?
私はこのような構造を持っています
WebUIプロジェクト-コントローラー、ビューフレームワークプロジェクト-リポジトリ、サービスレイヤーおよびドメイン
だから今私は3つのメソッド/クラスを持っています
- Open Id / Open auth
最初は、すべてのロジックをフレームワークプロジェクトのサービスレイヤーに配置すると思いました(リクエストの準備、応答の確認などはこのレイヤーにあります)。
だから今私はdotnetopenauthライブラリを使用していて、コントローラーでAsActionResultメソッドを使用する必要があるためです(サービスレイヤーにMVCが必要ないため、サービスレイヤーから "OutgoingWebResponse"を返します)
サービスレイヤーにMVCを何も持たないことにしたとき、私は考えさせられました。私が読んだように、ビジネスロジックを含むサービスレイヤーにはMVC参照のような依存関係があってはなりません。これは、Windows Phoneアプリケーションにアクセスする場合、MVCのものを使用するべきではないためです。
ビジネスレイヤーは、あらゆるアプリケーションへのプラグアンドプレイのようなものでなければなりません。
したがって、上記の理由だけで、openId用に作成したものをmvcプロジェクトのmodelsフォルダーに移動する必要があるかどうかがわかりません。Windows Phoneアプリケーションまたはフォームアプリケーションにアクセスした場合、これらのタイプのアプリケーションではサポートされていないと思われるため、dotnetopenauthを使用しません。
2つ目は、フォーム認証です。繰り返しますが、上記とほぼ同じ理由です。これは、ローカルサービス/リポジトリレイヤー(つまり、同じプロジェクトファイル内)と同じようにモデルフォルダーに配置する必要があります。
私はnhibernate、fluent nhiberate、ninjectを使用しています。私のリポジトリはすべて私のフレームワークプロジェクトにあります。だから私はもちろんそこにすべての参照を持っています。しかし、私はiocにninjectを使用しているので、webuiプロジェクトにもすべての参照があります。
私のwebuiからこれらの参照を取り除くためにこれを変更できるかどうかはわかりません。彼らは私が行くべきだと思う私のwebuiに私のiocを置くことができないので、私はノーと考えています。
asp.net-mvc - サービスレイヤーでトランザクションを管理する方法は?
次のアーキテクチャで.Netアプリケーションを開発しています:プレゼンテーション層(ASP.Net MVC 2でMVCパターンを使用)、サービス層、データアクセス層(Entity Frameworkでリポジトリパターンを使用)。
トランザクション管理をサービスレイヤーに配置することにしましたが、それを実装する方法がわかりません。トランザクションをサービスレイヤーレベルで完全に制御したいと考えています。つまり、コントローラーがサービスレイヤーのメソッドを呼び出すたびに、データベースの更新に関する不可分操作である必要があります。
サービスレイヤーで提供される異なるサービス間に関係がない場合、それは単純です。各メソッドは、実行の最後に変更をコミットする必要があります(つまり、使用するコンテキストでsaveメソッドを呼び出します)。ただし、サービス層のサービスが連携する場合もあります。
例:次のパラメータを受け取る確認メソッドを備えた出荷サービスを提供します:出荷ID、新規顧客または既存顧客に対応するかどうかを示すフラグ、顧客ID(出荷確認が既存の顧客の場合)顧客)および顧客名(新規顧客の場合)。フラグが「新規顧客」に設定されている場合、サービスレイヤーは(a)顧客を作成し、(b)出荷を確認する必要があります。(a)の場合、出荷サービスはカスタマーサービスを呼び出します(新しいカスタマーを作成してデータベースに保存するために必要な検証とロジックをすでに実装しています)。
このシナリオで誰が変更をコミットする必要がありますか?
- カスタマーサービスはそれを行うべきですか?新しい顧客の作成後に変更をコミットすることはできません。これは、出荷確認メソッドの後半で問題が発生する可能性があるためですが、直接呼び出された場合(他のユースケースでは、クライアントを作成するために提供されます)に変更をコミットする必要があります。
- サービスメソッドを呼び出すコントローラーはそれを行う必要がありますか?ただし、コントローラーはトランザクションについて何も知らないはずです。すべてのトランザクションの知識をサービスレイヤーに配置することにしました。
- サービス層のトランザクションマネージャー?それをどのように設計するのですか?、誰がいつそれを呼ぶのですか?
従うべきこのためのデザインパターンはありますか?
asp.net-mvc - リポジトリとサービス層の違いは?
OOP デザイン パターンで、リポジトリ パターンとサービス層の違いは何ですか?
私はASP.NET MVC 3アプリに取り組んでおり、これらのデザインパターンを理解しようとしていますが、私の脳はまだそれを理解していません.!!