問題タブ [application-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# - アプリケーション層はどのようにして DAL 層の DB を動的にクエリできますか?
C#、LINQ to SQL
私の問題の解決策がないため、そのトピックではなく新しいトピックを開くようにアドバイスする人もいます。レイヤーを再設計するには、あなたの助けが必要です。Linq To Sql - DAL レイヤーを DLL として公開せずにアプリケーション レイヤーを動的に検索する
私のプロジェクトは、DAL、BL、アプリケーションの 3 つのレイヤーで構成されています。Linq2Sql は DAL レイヤーに存在し、データベース内の各テーブルに対するクラスと、データベースを管理するための ContextObject を自動生成します。DB を変更すると、これらのクラスが再自動生成されるため、このクラスでは何も変更できません。
これらのクラスは BL レイヤーに公開されます。アプリケーション層は LinqClientDBDataContext (ContextObject) に公開する必要がないため、アプリケーション層を Linq2Sql の自動生成コード (この場合は Client クラス) に公開することはできません。そのため、DAL.Client オブジェクトによって BL レイヤーで生成される Client の「複製」クラスを作成しました。
アプリケーション層に IQueryable を与えようとすると、問題が発生します。これにより、アプリケーション層は動的にクエリを作成し、必要に応じて結果をフィルター処理できます。
例外: メソッド 'BusinessLogic.Client Convert(ClientDataAccessLayer.Client)' には、サポートされている SQL への変換がありません。
このコードはこの例外を発生させます。その理由はわかっていますが、この問題に対するより良い解決策を見つけることができません。
アプリケーションが動的に DB を照会できるように、プロジェクトを再設計するのを手伝ってください。
どうもありがとう、スタヴ・アルフィ。
c# - コンテキスト ドメイン駆動モデルの検証
このアプリケーションでは、ビジネス ルールと現在のユーザーのコンテキストに基づいてプロパティの更新を検証する必要があるシナリオがあります。ドメインモデルは現在のユーザーを認識すべきではないと思うので、検証を行う最善の方法を決定しようとしています。通常の承認はドメインとは別のものであり、このシナリオとは異なります。
この検証はどこで行われるべきですか?それを処理するより良い方法はありますか? ドメイン モデルはユーザーについて認識している必要がありますか? 任意のヘルプまたは入力をいただければ幸いです。
簡単な例: 承認された数量の注文があります。特定のユーザー タイプのみが、特定の方向でのみ数量を更新できます。これは、ドメイン集約で検証する正しい方法ですか?
c# - C# ベースの軽量アプリケーション層プロトコル - HTTP の代替
私は C# の初心者で、クライアント/サーバー アーキテクチャを使用して C#(WPF) アプリケーションを開発しています。2 台のマシン間で通信する必要があります (短い JSON のみですが、多くの場合)、HTTP も "アプリケーション層でHTTPに代わるものはありますか?
sql-server-2008 - プライマリ サーバーとホット スタンバイ サーバーのアーキテクチャ
現在、1 つのプライマリ サーバーと、ホット スタンバイとして動作させたいセカンダリ サーバーを備えたイントラネットネットワークの適切なアーキテクチャの構築を検討し始めています。これに関する私の知識は非常に最小限であり、私が始めるためのガイドラインと記事を探しています.
レプリケートする必要があるサーバーは、次のものを実行します。
- Windows Server 2008 R2 OS
- MS SQL 2008 R2 Std
- asp.net に組み込まれた Web アプリケーションを実行する IIS 7.0
- いくつかのバックグラウンド サービス。データベース。これは社内で作成された .net アプリケーションですが、レプリケーション方法はありません。
私の目標は、障害が発生した場合にセカンダリ サーバーができるだけ早くメイン サーバーとして機能し始めることができるように、プライマリ サーバーのデータを常にセカンダリ サーバーにレプリケートすることです。
私の質問は次のとおり
です。 1. この場合、推奨されるハードウェア トポロジは何ですか? 2 台のサーバー マシン以外に、DNSサーバーとして機能して正しいサーバーへのルーティングを解決する追加のハードウェアが必要ですか?
そうでない場合、これをソフトウェアでどのように行うことができますか? 2. データベースのレプリケーション -データベース間で同期するために、
ある種のログ シッピングを使用する必要があることを理解しています。制限とガイドラインは何ですか? 優れたパフォーマンスと、データベースの最新のレプリケーションを保持することのトレードオフがあるかどうかを知る必要があります。良い記事は役に立ちます。
3. ある種の「パッシブ」モードでの実行とサーバー間での状態データの送信をサポートするようにサービス アプリケーションを書き直すことはおそらく不可能であることを考慮すると、セカンダリ マシンでこれらのサービスをどう処理する必要がありますか?
c++ - 終了時にクリーンアップするかどうか
クリーンアップは良いことだと理解しています。また、OS の内部構造も理解しているため、プロセスが終了することがわかっている場合は、そのメモリが解放されます。しかし、私は別の視点を提案するのが好きです。私は、終了時にメモリを解放するのはかなり悪い考えだと考えています。
たとえば、現在スワップアウトされている大きなメモリを割り当てた可能性があります。終了時に解放すると、RAM に移動してから解放する必要があります。そうしないと、終了時に1つのテーブルで空きとしてマークされます。
全体として、OS は大幅に変更されています (基本は同じままです)。 COMとして生の技術に取り組んでおり、大きく依存しています。私はVERY_CONTROLLED_ENVIRONMENTと呼びます。
For TL;DR
: 最新の OS では、終了時にクリーンアップを実行するべきではないと思います。私が間違っていると思うなら、なぜですか?
PS: 私は RTOS について話しているのではなく、制御された環境が Windows、Linux を意味することを意味し、デバイス ドライバーの開発や、さらに言えば OS の開発を意味するものではありませんでした。
model-view-controller - レイヤード アーキテクチャ mvc
MVC フレームワークを使用して Web アプリを作成しています。コントローラーとドメイン モデルの間にレイヤーを追加することを考えました。ドメイン モデルに特定のユース ケースに固有のロジックを配置することを避けるために、DDD ではアプリケーション レイヤーと呼ばれていると思います。コントローラーはこのレイヤーとのみ対話し、このレイヤーはドメイン モデルを使用して操作を調整します。このレイヤーは、ドメイン モデルに固有のユース ケースではないすべてのロジックをプッシュする、可能な限り薄く維持されます。このレイヤーに属するクラスを DomainCtrl と呼びます。
ログイン シナリオの例: モデル: LoginForm DomainCtrl: AuthCtrl UI: ui コントローラー
1.ui コントローラーがリクエストを受け取る 2.AuthCtrl のインスタンスを作成する 3.AuthCtrl が LoginForm のインスタンスを作成し、authCtrl に渡されたリクエスト データを入力する 4.LoginForm がログインを実行する 5.authCtrl が、この特定のログイン方法に固有の他のことを行う-> ui コントローラーにエラーを返します
これはアプリを整理する良い方法ですか?
sql-server - あまりにも多くのビジネス ロジックを含む (T)Sql ビュー
私はTSQLビューを持っています。いくつかの列を除いて、いくつかの結合を行い、すべてを接着して本来あるべき見栄えを提供するという点で、かなり基本的なものです。ただし、複雑な列のビジネス ロジックを無効にする新しい要件が発生したため、それほど単純ではない列がいくつかあるため、ビュー コードの拡張が非常に難しくなっています。
詳しくは説明しませんが、私のデータベースには次のテーブルがあります。
これは、「雇用」の行で構成されます。行の列のいずれかが特定の雇用の変更 (変更としましょう) に対して変更されるたびemploymentTitle
に、現在の行が別の table にプッシュされtblEmploymentHistory
、行tblEmployment
が変更されて最新の が含まれるようになりますemploymentTitle
。
基本的に、ビューが行うことは、tblEmployment
ontblEmploymentHistory
を uniqueに結合しようとEmploymentIdentifier
することです。これは理にかなっています。
elapsedTime
ビュー内のより複雑な列は、結合された行から (つまり から) さまざまな計算を行うことにより、(行ごとに)数値を計算しようとしますtblEmployment and tblEmploymentHistory
。経過時間を取得するために、指示されたビジネス ロジックに基づいて計算を実行します。たとえば、履歴テーブルの特定の日時列のみが合計経過時間にカウントされ、その行の他の列が特定の値に設定されている場合にのみカウントされます。
新しい要件が発生したため、ビジネス ロジックは以前よりもはるかに複雑になっています。これを含めるようにビューを拡張するのは非常に面倒なので、これを含めるのは難しいと思います。ビジネス ロジックの残りの部分も存在するアプリケーション層で、これをより構造化することができると思います。
ビューをスクラップして、代わりにアプリケーションのアプリケーション層に移動するのは「正しい」ですか? 明らかに、ビューを持つことの利点は高速であることです。コードで約 100.000 行の計算を行うには、ある程度の時間がかかります。ただし、行をフィルター処理して約 10.000 にすることで最適化できます。
この問題に取り組む「標準」で最もクリーンな方法は何ですか?