問題タブ [business-logic-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.
c# - エンティティフレームワークとビジネスオブジェクト
私はこれまでエンティティフレームワークを使用したことがないので、それを実装するいくつかの個人的なプロジェクトを試して、足を濡らしたいと思います。
エンティティをプレゼンテーション層に公開できることがわかりました。ただし、特定のフィールド、変更された日付や作成された日付などのフィールド、およびその他のさまざまなデータベースフィールドは公開したくありません。
Businessオブジェクトを実装し、必要なプロパティを公開しながら、オブジェクトをシリアル化できるようにするにはどうすればよいですか?
また、これにはLinqToSqlに比べてどのような利点がありますか?
asp.net - ビジネス層のエラーとサービス層の処理 - 最善の方法は?
多数のレイヤーを持つ大規模な Web アプリを構築しています。ビジネス層と通信するために、データが必要なときに Web 層が呼び出すサービス層を使用しています。残念ながら、ビジネス層で例外がスローされた場合、Web 側のサービスが例外をラップして再スローしているようです。WCF が元の例外を新しい例外でラップすることなく、エラーをカプセル化してログに記録する明確な方法を探しています。
ありがとう
linq-to-sql - IQueryable LINQ クエリにバインドされた Gridview が、単一ページではなくクエリ全体を返す
LINQ を使用して IQueryable データをユーザー層の GridView に返すビジネス層クラスがあります。単一ページのデータのみを返すようにします。ただし、クエリ全体を返しています。ページングが機能するはずだと聞いたことがありますが、ページをめくるたびに数百または数千の行が返され、pagesize で設定された行以外はすべて破棄されます。
これがLINQクエリです(少し編集されています)
そして、ここに GridView があります:
Gridview を読み込むコードは次のとおりです。
そして、ページングを行うコード:
c# - ASP.NET 2.0 C# DAL の複数の変数パラメーター
ユーザーの選択した基準に基づいて大規模なデータベース テーブルをクエリするように設計された Web アプリを開発しています。主キーを知っていて入力する場合もあればabc
、過去 7 日間に作成されたステータスのレコードやfred smith
、説明に という単語が含まれる によって作成されたレコードを見たい場合もありproposal
ます。ポイントは、彼らが探しているものに基づいて、指定できる 10 から 20 の異なる変数が簡単に存在する可能性があるということです。
SQL ステートメントを作成し、Web ページの背後にあるコードでパラメーターを動的に適用するのは簡単です ( aspx.cs
)。このアプローチはうまく機能します。
ただし、BLL と DAL (または単なる DAL) の使用について調べてきましたが、これまでに見たすべての例は、パラメーターなしgetCategories()
、または単一パラメーターなどの単純なものでした。getProductByID(int productID)
したがって、アドバイスが欲しいのは、(たとえば) 20 個のパラメーターを持つメソッドを使用せずに、多くのパラメーターの変数リストを BLL/DAL に渡す最善の方法です (これは実行可能ですが、特に新しい選択パラメーターが追加した)。
私が考えた他のアイデアは
- メソッドでデコードできる単一の文字列パラメータを作成します。例:
(実行可能ですが、恐ろしく、間違いを起こしやすい)
- パラメータとして構造体またはクラスを使用します。
この構造体/クラスにアクセスできる DAL に問題はありますか? DAL はそれを呼び出すクラスと参照を共有すべきではないことを読みましたか?
このシナリオをどのように実装するかについての提案に感謝します。
linq-to-sql - Entity Framework/Linq から SQL モデルからビジネス モデルへ
私はストアド プロシージャから来て、データ アクセス レイヤーを手動で作成しています。Linq To SQL またはエンティティ フレームワークを通常の計画のどこに適合させるべきかを理解しようとしています。私は通常、DAL レイヤーからビジネス レイヤーを分離し、その間にリポジトリを使用します。
生成されたクラスを linq から sql に使用するか、部分クラスを使用してそれらを拡張するか、完全な分離を行い、生成された linq クラスを分離されたビジネス エンティティにマップするようです。私は別の事業体に偏っています。しかし、これは直感に反するようです。
私の最後のプロジェクトの 1 つは、DDD とエンティティ フレームワークを使用していました。オブジェクトを更新する必要がある場合、ビジネス エンティティをレピストーリー レイヤーに移動しました。これは、DAL レイヤーに移動するときにコンテキストを作成し、オブジェクトを再クエリします。値を更新して再発行します。
データ コンテキストが保存されておらず、更新する前にオブジェクトを取得するために追加のクエリが必要だったので、大きな点はわかりませんでした。通常、更新を行うだけです(同時実行性が問題にならない場合)
だから私の質問は次のようになります:
- linq to sql で生成されたクラスをビジネス エンティティに分離することは理にかなっていますか?
- データ コンテキストを保存する必要がありますか、それとも非現実的ですか?
お時間をいただきありがとうございます。私が理解していることを確認してください。いくつかの小さなプロジェクトでも理解しやすくなるため、通常は分離するのが好きです。
asp.net-mvc-3 - 既存のデータレイヤーとビジネスレイヤーを使用した MVC
データレイヤー (プライマリ EF4)、ビジネスレイヤー (カスタム コード)、および Windows アプリケーションを含む既存のアプリケーションがあります。ASP.NET MVC を使用して Web アプリケーションを作成したいと考えていますが、特に自分のモデルで何をすべきか正確にはわかりません。
データとビジネス ロジックが既に存在する場合、MVC Music Store v2.0 (http://mvcmusicstore.codeplex.com/) などの参照プロジェクトと比較して、モデルとコントローラーをどのように構築すればよいですか? すべてのエンティティはデータレイヤーに保存され、すべてのメソッドとロジックはビジネスレイヤーに保存されるため、モデルは必要ないと思います (特定の Web モデルが必要でない限り)。コントローラーはビジネスレイヤーのメソッドを次のように呼び出すだけでよいと思います。通常の Web フォーム アプリケーションではどうしますか?
別の質問ですが、2 つの異なるエンティティからのデータを含む 2 つのリストを 1 ページに表示する必要がある場合、2 つのプロパティ (エンティティごとに 1 つ) を持つモデルを作成する必要があると思いますか?
最後の 1 つですが、何らかの理由で、たとえば、ビジネスレイヤーからの Get メソッドが例外を返した場合、これをコントローラー/ビューでどのように処理する必要がありますか?
java - ドメイン オブジェクト/サービスとビジネス ロジック層
ソフトウェア アーキテクチャにおけるドメイン オブジェクトとドメイン サービスとは何ですか? 私はそれらに精通していないか、ビジネスロジックレイヤーとどのように違うのですか?
c# - リアルタイムOPCシステムの設計上の考慮事項
現在、煩雑であることが判明しているばらばらのリアルタイムOPCシステムを再設計中です。私たちのテクノロジースタックは、32ビットのWindows Server 2003でホストされるC#、. NET 4、SQL Server 2008 R2です。物理的なアーキテクチャでは、現在、すべての層を単一のサーバーでホストするように指示されていますが、十分な動機付け(読み取り:ROI)があれば可能です。 2に増やします。
基本的な既存のアーキテクチャは次のとおりです。
- 外部OPCデバイスは、Webサービスを呼び出して、SQLにリアルタイムデータ(1秒あたり約300イベント)を入力します。ここでは、ボリュームまたはバッチ処理を制御できませんが、書き直しでは、1秒あたり300の挿入ステートメントからSQLを節約するために、Webサービスにバッチ処理を実装したいと思います。
- SQLは、アラームからレポートに至るまでのタスクを実行するさまざまなコンポーネント(合計で約9つ、すべて再設計される)の中心的なリソースとして使用されます。これは現在、既存の設計の最大の問題であり、これらすべてのコンポーネントがデータを消費/操作したり、動作を制御したりする単一のBLLやDALさえありません。
- コンポーネントの範囲は、WindowsサービスからWebサービス、Windowsアプリケーションまでです。CPU時間とSQL接続の最大の消費者は、すべてのリアルタイムデータを監視し、必要に応じてアラームを発生させるWindowsフォームアプリケーションです。また、実行にかなりの費用がかかるリアルタイムのトレンドグラフも実行します。
書き直しについては、学習曲線を除けば問題がないWPFへの強い推進力があります。私の質問は、基盤となるアーキテクチャにもっと関係しています。
- 私は現在、単一のDALとBLLを実装する方法についていくつかの調査を行っています。DALの場合、私はEFまたはnHibernateに傾倒しており、Linq-to-SQLも可能です。
- BLLの場合、私はCSLA.NETの経験しかありません。これは、速度とリソースの消費が重要なシステムでは、少しやり過ぎかもしれないと思います。
誰かが同様のシステムの経験があり、いくつかのレッスンや設計ガイドラインを喜んで共有しますか?
c# - 予期しないEntityObjectエラー
私は次のコードを持っています:
しかし、なぜこれらのエラーが発生するのかわかりません。
これらのエラーを修正するにはどうすればよいですか?
architecture - N 層 - 挿入と更新の責任の場所
データ層 (リポジトリ パターンと EF 4.0 を使用)、ビジネス層 (POCO と追加のロジック)、およびサービス層 (WCF を使用してクライアントに公開される) に分割されるアプリケーションを作成しています。
レコードをデータベースに保存するとき、既存のレコードを更新しているのか、新しいレコードを挿入しているのかを確認する必要があります。オブジェクトの有効期間が明示的に管理されるようにサービス層に、またはレコードを保存すると実行するアクションが暗黙的に決定されるようにデータ層に、その責任はどこにあるべきですか。
すべてのコメントを歓迎します - 私は自分自身を決めることができません!