問題タブ [n-tier-architecture]
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.
asp.net-mvc - モデルはどこに住むべきですか? Web層またはデータ層? (MVC + NHibernate)
MVC、Ninject、NHibernate (これらのテクノロジを初めて使用) を使用して n 層アプリケーションをセットアップしています。わかりやすくするために、層は「データ」層、「サービス」層、および「Web」層です (すべて別のプロジェクトです)。
MVC では、"Models" フォルダーにモデルがあります。強く型付けされたビューを作成し、一般的に MVC の哲学を維持するには、ここにモデルを配置する必要があるようです。
ただし、NHibernate では、マッピングを実行し、NHibernate が実際のオブジェクトをインスタンス化してサービス層に返すことができるように、「データ」層にもモデルが必要です。
プロジェクト間でクラスを複製することはあまりDRYではなく、それらを独自のライブラリに抽象化することはMVCではうまくいかないようです(実際にも哲学にもありません)。
何かご意見は?O/RM オブジェクトと MVC モデルをどのように構築しますか?
delphi - Datasnap : 接続損失をグローバルに検出する方法はありますか?
ローカル接続の切断を検出しようとしています。Corelabs コンポーネントのイベントと同様に、それを行う手段はありますか?
ありがとう
編集: 申し訳ありませんが、より具体的にしようと思います: 現在、datasnap 2009 を使用してプロトタイプを設計しています。つまり、シン クライアント、ステートレス サーバー アプリ、およびデータベース サーバーがあります。
私ができることは、クライアントとサーバーアプリ間の接続損失(インターネット接続)を検出して処理し、適切に処理することです。つまり、ユーザーに有益なエラーメッセージを表示するか、サーバーのシャットダウンを検出して静かにリダイレクトします別のアプリ サーバー。
ODAC コンポーネントで管理していた 2 層では、TOraSession にこの問題を処理するためのイベントがいくつかあります。
asp.net - n 層設計、ルックアップ テーブル、カスタム エンティティ
カスタム エンティティを使用している n 層アプリケーションでは、ルックアップ テーブルから必要なデータをどのように処理していますか? これらのルックアップ テーブルごとにエンティティを作成しますか、それとも他の戦略を採用しますか?
例えば。ドロップダウンリストに入力するために使用される「評価」ルックアップテーブルがあります。ratingid と rating プロパティを使用して評価オブジェクトを作成し、それを UI に渡しますか、それとももっと効率的な方法がありますか?
あなたの考えに感謝します。
architecture - プロジェクトを構成する最良の方法は何ですか?
私は自分のプロジェクトをどのように構成すべきか疑問に思っていました。
他のプロジェクトで (再) 使用されているプロジェクトがいくつかあります。
つまり、私たちのデータ プロジェクトとモデル プロジェクトは、1 対多の他のプロジェクトで使用されます。
私が実際に知っておくべきことは、このタイプのプロジェクトをどのように構築するか、どのように名前を付けるのが最善かということです。
標準の 3 層アプリケーションでは、次のようになります。
- DAL、DataAccessLayer、データ...
- モデル、ビジネス オブジェクト、BOL ...
- UI、ビュー、...
他のアイデアはありますか?
私が働いている各会社では、組織化の方法が異なります。他より優れているものはありますか? どちらを使用し、どちらを好みますか?その理由は?
どうも!
winforms - Winform アプリの MVP/MVC と従来の n 層アプローチ
大規模なアプリ スイートがあり、ほとんどが C# 1.1 ですが、少なくとも 10 個の主要なアプリが VB6 に含まれています。VB6 アプリを .NET 3.5 に対応させるプロジェクトを進めています。
すべての c# 1.1 アプリは、従来の n 層アプローチを使用して記述されています。UIレイヤーへのアーキテクチャ/分離は実際にはありません。ほとんどのコードは、イベントに応答してそこから移動します。保守性の点から言えば、非常に優れており、コードをたどり、新しいアプリの速度を上げるのは簡単です.
VB6 アプリを移植しているため、当初の考えでは、既存のパターン (n-Tier など) に固執する必要がありました。
パターンを壊し、MVP/MVC パターンを使用して VB6 アプリを実行する価値があるかどうか疑問に思っています。MVC/MVP winform アプリは保守が本当に簡単ですか? 私は MVC ベースのプロジェクトに取り組んでいましたが、保守が簡単だとはまったく感じませんでしたが、それは 1 つのプロジェクトにすぎません。
そこにある経験とアドバイスは何ですか?
.net - データベースから大量のデータを取り込む
3 層アプリケーションを開発しましたが、データベースからのデータの取り込みに関して問題があります。私のアプリケーションには、データベースから大量のデータをクエリするウィンドウがあり、このプロセスには非常に時間がかかります。(私のクライアントはサーバーから遠く離れており、その間の接続は 128 KB/秒です)。
次に、この問題を解決するための解決策を考えました。解決策は、y 秒ごとに x レコードのデータを入力することです。(例: 最初に 10 レコードを入力して UI に表示し、次に 5 秒ごとにさらに 10 行を表示します)。
これはこの問題を解決するための良い解決策ですか? これを解決するより良い方法はありますか?
c# - n 層アーキテクチャのフィードバックが必要
私は、stackoverflow のような自分の Web サイトを始めましたが、少しの技術的負債を返済しようとしています。契約開発者として、私は多くの場所に行き、この結果を達成するためのさまざまな方法を見てきましたが、私が行っている方法は..
プレゼンテーション (ウェブ)
ビジネス層 (昔ながらのエンティティ クラスと BL 層)
データ層 (DA クラスから SQL Server への Stored Proc 経由)
私の質問は、主にビジネス層に関するものです。現在、Entity 名前空間と BusinessLogic 名前空間があります。
BL には DA とエンティティへの参照があります。エンティティには DA への参照があります (DA は BL またはエンティティを「認識していません」)
私は本当に、データをエンティティに変換するすべての作業が BL 内、つまりビジネス ロジック内で発生することを望んでいます。ただし、エンティティが必要に応じて BL にアクセスできるようにしたいので、エンティティの DL への参照を削除します。
そう...
BL と Entity オブジェクトを同じ名前空間内に配置して、それらが連携できるようにするのは「間違っている」のでしょうか?
基本的に、私は Employee のようなエンティティ オブジェクト (典型的な例ですよね?) を持ち、Employee に
この従業員にレポートする他の Employee オブジェクトの Hashtable を返すプロパティ。しかし、必要になるまでロードしたくありません。そのため、ほとんどの従業員はプロパティにアクセスすることはありませんが、アクセスされると、DA を呼び出す BL への呼び出しでセルフロードされます。
質問は理にかなっていますか?
もしそうなら、私の解決策はありますか?
よろしくお願いします!
c# - 正しい方法で WCF サービスを階層化する
私の質問は、実際の実装にはあまり関与せず、よりアーキテクチャ上の性質のものです。
私は WCF に基づいて API を構築しましたが、PL を BL から分離する方法を実際に決定することはできません。次のような最小限の実装のみを保持するように、サービスを薄くしました。
もちろん、最初の疑問は、RequestProcessors がどの層に属しているかということです。それらをファサードと呼ぶのは間違っていると思いますが、同時にプレゼンテーションとは何の関係もありません。今のところ、それでも PL に属していると判断しました。プロセッサ メソッドは、私の DTO (DataContracts) を入力として受け取り、要求メッセージを検証し (基本クラス)、認証し (基本クラス)、最終的に次のように単一の DTO 応答を返します。
ここで、自分のビジネス オブジェクトに 1 対 1 で関連付けられたファサード クラスが必要な理由を自問します。たとえば、hostDAO とプロセッサの間のレイヤーとして機能する HostFacade があります。ただし、保持するロジックはほとんどなく、DAO 呼び出しを処理するだけです。
質問: プロセッサとファサードをマージすることもできますよね?
この件に関する多くの記事や本を読んだことがありますが、それでも「正しい」方法に落ち着くことができず、問題に直面するたびに別のアプローチを選択する傾向があります。正しいアプローチが存在するのだろうか。
f.exを見つけました。doFactory の例では、サービス実装内から直接 DAO クラスと通信しました。ほとんどの ServiceContract メソッドはいくつかのロジックを共有しているため、共有基本クラスでの使用に適しているため、私はそれがあまり好きではありません。
サービス内からファサードのみが呼び出される他の例も見つけましたが、これは非常にきめ細かいメッセージに対してのみうまく機能するようです。サービスへの呼び出し回数をできるだけ減らすために、私のメッセージは「ファット」で複合的です。私の余分な処理レイヤーが私の本当の問題のようです。
おそらく、WCF サービスを正しく階層化する方法について 1 つの答えはありませんが、私の本能に合致するか、この問題に新しい光を当ててくれる意見を持っている人がいるといいのですが。
ありがとう!
ジェフリー