問題タブ [business-logic]
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# - C# コントラクトの実装と例外
コントラクトを満たすために 2 つの操作を実行する必要がある BO メソッドがあります。
- データベースにレコードを挿入する
- レコードのメタデータを含む電子メール通知を送信する
どちらも、アクションの完了を担当する個々の DAO メソッドの呼び出しで処理されます。
DAO で例外をトラップせず、例外を処理して BO で公開します。最初の呼び出しは挿入する DAO に対するもので、NullReferenceException または SQL 例外の 1 つをスローできます。email メソッドは、多数の例外をスローする可能性がある SmtpClient.Send を使用します。
電子メール機能を呼び出す子メソッドが、属性を介して 1 種類の例外 (カスタム 例外) のみを返すように強制することはできますか?
これを説明するには:
各子メソッド呼び出しを独自の try catch でラップして、必要なカスタム例外をスローすることができますが、それは AddSupportTicket の別の try catch によってトラップされ、次に UI の 1 つによってトラップされる別のレベルの try catch であり、インテリジェントなエラーにリダイレクトされます。 、それは私にはよく聞こえません。
正しいカスタム例外を効率的にスローするにはどうすればよいですか?
business-logic - 異なるプログラミング言語間で共通のビジネス ロジックを共有するための戦略
Visual Dataflex で実装された複雑なビジネス ロジックを備えたモノリシック ビジネス アプリケーションを使用して、特定の機能が他のプログラミング言語 (主に .NET) で記述されているため、プログラミング言語間でビジネス ロジックを維持するという課題に直面しています。
そのため、不一致を回避するために、異なるプログラミング言語の実装間でビジネス ロジックを「同期」するための戦略を探しています。重複を避けることはプラスですが、これは自動テストによって補われる可能性があります。
編集: SOA は素晴らしい提案です。しかし、サービスの速度が不十分な場合はどうすればよいでしょうか?
編集 2:メタ言語を使用するための提案はありますか?
silverlight-3.0 - ビジネス ルールを Silverlight MVVM RIA サービス アプリケーションに配置するのに最適な場所はどこですか?
ビジネス ルールを RIA Silverlight アプリケーションに配置するのに最適な場所はどこですか?
クライアント層とのみデータを共有しているように見えることを除けば、ドメイン サービスは適切な場所だと思いました。サーバー層にビジネス ルールを配置する必要があるため、ViewModel は良い考えではないと思います。
共有コードで?*.shared.cs?
ビジネスルールはどこに置く?
wpf - ビュー ロジックをモデルから除外し、ビジネス ロジックを MVVM のビュー モデルから除外するにはどうすればよいですか?
モデルに INotifyProperyChanged や INotifyCollectionChanged などの UI 固有のものを追加したり、さまざまなイベントを大量に作成したり、さまざまなイベントを作成したりせずに、モデルの変更をビュー モデルに通知する方法がわかりません。それらはUI固有のものであり、モデルから離れるべきです。
それ以外の場合は、すべてが最新であることを確認するために、ビュー モデル内のすべてのビジネス ロジックを複製する必要があります。
私のモデルにあるトリッキーなものの 1 つは、"Category" クラスのプロパティです。これはツリー構造と考えることができ、プロパティはすべてリーフノードの子孫です。このモデルでは、すべての子を介してプロパティがその場で再帰的に生成されますが、これはすべて問題ありません。ただし、ビューモデルはそのプロパティにバインドする必要があり、いつ変更されるかを知る必要があります。ビューモデルに対応するようにモデルを変更する必要がありますか? 私がそうすると、ビューモデルはこの時点で実際には何もしません。モデルは必要な変更の通知をすべて発生させ、ビューはモデルに直接バインドできます。また、モデルがソースを持っていないものである場合、どうすればこれを回避できますか?
domain-driven-design - 電子メール通知-ドメインオブジェクトまたはサービス内ですか?
次の設計上の問題に取り組む方法に関する推奨事項を探しています(stackoverflowに基づく架空の例を使用)。私は貧血のドメインモデルを避け、このタイプのケースに対する一般的な「ベストプラクティス」のアドバイスを求めたいと思います。
シナリオ:
質問が10の賛成票を受け取るたびに、質問の所有者に電子メール通知を送信するstackoverflowの新機能が開発されているとします。
ドメインオブジェクトモデルは次のようなものです。
潜在的な実装:
パラメータを取得し、メソッド内でロジックを実行するように変更
/li>AddUpvote()
します。IEmailerService
AddUpvote()
内でこの状態を検出し、(IEmailerServiceをパラメーターとして渡す代わりに)IoCコンテナーからIEmailService
AddUpvote()
を解決します。AddUpvote()
を呼び出す外部サービスオブジェクトでこの状態を検出します
/li>question.AddUpvote()
。ここであなたのより良い解決策!
business-objects - 多言語データベース設計のためのビジネスクラス
多言語データベース設計に関する質問をここに投稿しました。
[]多言語データベース設計のベストプラクティスは何ですか?
私はマーティンの提案が好きですが、ビジネスオブジェクトを作成するための最良の方法は何でしょうか?ProductTranslationオブジェクトを含む製品を作成する場合、UIでのバインドと作業は複雑になります。ローカライズされたオブジェクトのみを作成する必要がある場合は、CMS用に別のオブジェクトを作成する必要があります
。ありがとうございます。
java - ビジネスルール-OOPのどこに行くのですか?
私はクラスを持っています:スケジュール。
これまでのところ、スケジュールクラスが気に入っています。ただし、チェックは完了していません。他のチェックを行う必要があります。
- locationNumは、データベース内の有効なストア番号です。
- changeReasonテキストは、データベース内の6つの異なるchangeReasonコードの1つです。
- などなど...
通常、これらをScheduleクラスに書き込むことはありません。明らかに、このクラスからDAOを呼び出すことはできません。したがって、ビジネスレイヤーとある種のバリデータークラスがあり、Scheduleタイプのオブジェクトを受け入れ、一連のデータベース検証を順番に実行し、表示などのエラーを収集します。
さて、ここに私の質問があります:
- ScheduleをPOJOとして扱い、オブジェクトがそれ自体を検証する責任を負わないと主張する場合、コンストラクター内のすべてのコードをビジネスレイヤーのバリデータークラスに移動する必要があります。しかし、私がこれを行うとしたら、スケジュールは貧血ではありませんか?これは、彼らが単一責任の原則の違反と呼んでいるものですか?
- コンストラクターにあるコードをビジネスレイヤークラスに移動して、あらゆる種類の検証がビジネスレイヤーに含まれるようにしたとしましょう。データストアで誰かがdayOfChangeをNULLに変更し、データベースからオブジェクトを読み込んでいると仮定します。さて、この種のオブジェクトを使用すると、アプリケーションが破損する可能性がありますね。coz検証ルールが満たされていると仮定してコードを記述します。私の質問は混乱していると思いますが、私が言いたいのは、このコンテキストでは、Scheduleクラスによって隠されたデータの整合性を確保するために、コンストラクターでこれらのチェックを実行したいということです。
- それは通常どのように行われますか?ベストプラクティスは何ですか?
この議論へのあなたの関与に感謝します。