問題タブ [separation-of-concerns]
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 - Web アプリケーション層の下の層からセッション値にアクセスする方法
アプリケーションには、ビジネス ドメインやデータ アクセス レイヤーで現在ログインしているユーザー ID などにアクセスできるようにしたい多くのインスタンスがあります。ログでは、この情報をセッションにプッシュするため、もちろん、すべてのフロント エンド コードが非常に簡単にアクセスできます。ただし、アプリケーションの下位レイヤーのデータを取得する際に大きな問題が発生しています。ユーザー専用のグローバル スコープを持つビジネス ドメインに値を格納する方法を見つけることができないようです (もちろん、静的クラスとプロパティはアプリケーション ドメインによって共有されます。つまり、セッション内のすべてのユーザーが 1 つだけを共有します)。オブジェクトのコピー)。セッションをビジネス クラスに渡すことを検討しましたが、ドメインは Web アプリケーションに非常に緊密に結合されています。
私たちがこの種の問題を抱えた最初の人であるとは信じがたいです。アプリケーションでこの問題をどのように処理していますか?
unit-testing - 多くのプライベート メソッドを持つ複雑なクラスの単体テスト
私は1つのパブリックメソッドと、パブリックメソッドに渡されるパラメータに応じて実行される多くのプライベートメソッドを持つクラスを持っているので、私のコードは次のようになります:
このクラスをテストする方法をいくつか考えましたが、どれも複雑すぎるか、必要以上にメソッドを公開しているように見えます。これまでのオプションは次のとおりです。
すべてのプライベート メソッドを internal に設定し、[assembly: InternalsVisibleTo()] を使用します。
すべてのプライベート メソッドを別のクラスに分離し、インターフェイスを作成します。
すべてのメソッドを仮想化し、私のテストでは、このクラスから継承してメソッドをオーバーライドする新しいクラスを作成します。
上記のクラスをテストするための、私がリストしたものよりも優れた他のオプションはありますか?
私がリストしたものの中から 1 つを選ぶとしたら、その理由を説明していただけますか?
ありがとう
.net - SoCを念頭に置いてウィザードベースのシステムを設計するにはどうすればよいですか?
私は、アプリケーション自動化サービスを提供するWindowsフォームシステム(誰かにとって重要な場合はC#で)を構築しています。このアプリケーションはコンピューターに精通していないユーザーを対象としているため、ウィザードUIを使用してユーザーの作業を簡素化することにしました。ビューとビューエンジン(ウィザードの作成元)を自動化エンジンに結合することは避けたいと思います。
私が抱えている問題は、処理中に別のスレッドで実行される自動化エンジンが、ステータス情報をユーザーに報告し、ユーザーからのキャンセルまたは一時停止イベントをリッスンする必要があることです。ビューエンジンと自動化エンジンが相互に依存することを望まないため、この情報コンジットを提供する方法を理解するのに苦労しています。
私が抱えているこの問題についての洞察をいただければ幸いです。私はこの時点で数週間頭を悩ませてきました、そして私は本当にあきらめたくなくて、ただすべてを一緒に結合したくありません。
誰かが何らかのアイデアを思い付くのを助けるために追加の詳細が必要な場合は、私に知らせてください、そして私はそれらを喜んで提供します。
c# - ASP.NET でコード (aspx.cs) からコンテンツ (aspx) を分離する
aspx ページ (ASP.NET 3.5) のコンテンツをコード (私は C# を使用しています) から分離するためのベスト プラクティスは何かを知りたいです。ユーザーがデータを入力できるフォームがあります。たとえば、パーセントを入力できます。有効でないデータを入力すると、次のエラー メッセージが表示されます。
したがって、本質的に、エラーメッセージを非表示にして、ユーザー入力に応じてエラーメッセージを表示しています。
これが、コード ビハインドからコンテンツを分離する最良の方法だと思います。ただし、ユーザー入力に応じて、要素を選択して非表示/非表示にするにはどうすればよいですか? 要素で runat="server" を実行できることはわかっていますが、問題は、クラスで選択できず、ID のみに制限されていることです。
どのような回避策をお勧めしますか? コードビハインドに値を入れることは別として、デバッグが難しいことで有名です。
また、これは ASP.NET 4 で「修正」されていますか? また、JavaScript が無効になっている人もいるため、これを C#/ASP.NET 経由でのみ行うことに興味があります。これは、クライアント側とサーバー側の両方でエラーをチェックする必要があることを意味します。
asp.net-mvc - 「CreateMap」ステートメントはどこに置くべきですか?
私は頻繁に AutoMapper を使用して、Model (Domain) オブジェクトを ViewModel オブジェクトにマップします。これらのオブジェクトは、Model/View/View-Model パターンでビューによって使用されます。
これには多くの「Mapper.CreateMap」ステートメントが含まれます。これらはすべて実行する必要がありますが、アプリケーションのライフサイクルで一度だけ実行する必要があります。
技術的には、Application_Start() メソッド (これは ASP.NET MVC アプリケーションです) から呼び出される静的メソッドにすべてを保持する必要があります。
ただし、多くの異なるマッピングの問題を 1 つの中心的な場所にグループ化するのは間違っているようです。
特に、マッピング コードが複雑になり、書式設定やその他のロジックが関係する場合は特にそうです。
関連する ViewModel の近くに保持されるようにマッピング コードを整理するより良い方法はありますか?
(私は 1 つのアイデアを思いつきました。各 ViewModel に 'CreateMappings' メソッドを配置し、BaseViewModel でインスタンス化時にこのメソッドを呼び出すことです。ただし、このメソッドはアプリケーションのライフサイクルで1 回しか呼び出されないため、追加のロジックが必要です。 CreateMappings メソッドが呼び出された ViewModel タイプのリストをキャッシュし、そのリストにない ViewModel に対して必要な場合にのみ呼び出します。)
asp.net - ビジネス ロジックとデータベース呼び出しを WCF Web サービスから分離するにはどうすればよいですか?
この質問は以前に尋ねられたかもしれませんが、私が見たものとは異なる答えを探しています.
私たちの Web サイトは ASP.NET であり、モデル - ビュー - プレゼンター パターンを使用して、マークアップ分離コードからビジネス ロジックを取り出します。
コードビハインドからビジネス ロジックを取得するための Web サービスの受け入れられたパターンはありますか? 呼び出しは実際にはユーザーに何も提示せず、データをクライアントに送り返さない可能性があるため、「プレゼンター」にロジックを配置することは誤解を招くようです。
asp.net-mvc - 関心の分離と認証
私は良い開発者になろうとしており、自分の懸念を分離しようとしています。すべての Web コードを含む ASP.NET MVC プロジェクトと、すべてのモデル コードを含む DAL プロジェクトがあります。
DAL のコードは、現在のユーザーが何らかのアクションを実行する権限を持っているかどうかを確認する必要がある場合がありますCurrentUser.IsAdmin
。
Web サイトの場合、current は Windows ユーザー名 (からHttpContext.Current.User.Identity
) に由来しますが、これは明らかに Web の問題であり、DAL に関連付けるべきではありません。
認証を疎結合するのに最適なパターンは何ですか? DAL が MVC コードにユーザー名を要求する必要がありますか、それとも MVC が DAL に通知する必要がありますか? どちらか一方に利点または欠点はありますか?
ありがとうございました!
c# - MVVMデータグリッドのグループ化を担当するパターンの部分
私はMVVMパターンをいじくり回してきましたが、今はそれに基づいて小さなアプリケーションを実装しようとしています。
このアプリケーションには、驚くべきことに、いくつかのデータが表示されるデータグリッドがあります。今、私はそれにいくつかのグループ化機能を追加しようとしています。これをコード(C#およびXAML)で記述する方法は知っていますが、責任のあるコードをどのレイヤーに配置する必要があるのか疑問に思っています。
私の一部は、それがビューにあるべきだと言っています。なぜなら、それは特にその特定のビューのためのコードだからです。これは一般的ではなく、データをグループ化するという1つの目的を果たします。
一方、コマンドを使用してViewModelで処理する必要があると思います。ただし、ViewModelをView固有のロジックで汚染しているように感じます。
これに当てることができるリグはありますか?
java - 親に属する XML サブツリーの属性
この XML があるとします。
そして、これが解析される方法です(疑似コード):
ObjectsParser
オブジェクトビットの解析を担当しますが、ドキュメントの存在を認識していませんし、認識すべきではありません。ただし、Document
色は を使用してオブジェクトに関連付けられますMap
。
DocumentParser.parse
色設定を元に戻して、ObjectsParser.parse
マップ内のオブジェクトに関連付けることができるようにするには、どのようなパターンをお勧めしますか?
代替案は次のようになります。
醜い!
c# - TDD、抽象化レイヤーの作成
基本的に、私の職場には OCR 機能を提供するシステムがあります。プロセスは、サードパーティのアプリケーションが (OCR プロセス中に) キャプチャされた画面を表示するように構成され、ユーザーが PC の前に座って、キャプチャされたデータが正しいことを確認することです。
このキャプチャ ステージには、各フィールドの検証があります。たとえば、ドキュメントが特定のクライアントの請求書である場合、請求書のサプライヤは参照データに対して検証されます。検証コードは、Visual Studio 2008 ソリューションから自分で生成したコンパイル済みの .net dll の形式です。
キャプチャ フォームと私が書いたコードとの間の通信には、サード パーティのインターフェイスが使用されます。例は次のとおりです。
私がやりたいことは、抽象化のレイヤーを作成し、このコードからサードパーティのインターフェイスを削除して (懸念を分離して)、テスト (TDD) などを容易にすることです。
私はこれらのアプローチに不慣れであり、間違った仮定をした場合はお詫び申し上げます。コードを進める方法についてアドバイスをいただけないかと思っていました。ある時点で、私たち (会社) は、別のサードパーティの OCR アプリケーションを使用することを選択する場合があります。
前もって感謝します