タグ付けされた質問 「asp.net-core」

15
単体テストを有効にするために、最初からコードを設計する必要がありますか?
現時点では、ユニットテストを許可するようにコード設計を変更することはコードのにおいであるのか、それともコードのにおいをせずにどの程度できるのかについて、チームで議論が行われています。これは、他のすべてのソフトウェア開発会社に存在するプラクティスを導入し始めたばかりだからです。 具体的には、非常に薄いWeb APIサービスが用意されます。その主な責任は、Web要求/応答をマーシャリングし、ビジネスロジックを含む基盤となるAPIを呼び出すことです。 1つの例は、認証方法の種類を返すファクトリの作成を計画していることです。インターフェースを継承する必要はありません。具体的なタイプ以外のものになるとは思わないからです。ただし、Web APIサービスを単体テストするには、このファクトリをモックする必要があります。 これは本質的に、(コンストラクターまたはセッターを介して)DIを受け入れるようにWeb APIコントローラークラスを設計することを意味します。つまり、DIを許可するためだけにコントローラーの一部を設計し、そうでなければ必要のないインターフェースを実装することを意味しますこの方法でコントローラーを設計する必要を避けるために、Ninjectのようなサードパーティのフレームワークがありますが、インターフェイスを作成する必要があります。 チームの何人かは、テストのためだけにコードを設計することを渋っているようです。単体テストを行うには妥協が必要だと思われますが、彼らの懸念をどのように和らげるかはわかりません。 明確にするために、これはまったく新しいプロジェクトであるため、コードを変更して単体テストを有効にすることではありません。ユニットテスト可能になるように記述するコードを設計することです。

5
データベースに何かが存在するかどうかを確認し、高速で失敗するか、データベース例外を待つ必要がありますか
2つのクラスがある: public class Parent { public int Id { get; set; } public int ChildId { get; set; } } public class Child { ... } 割り当てるときChildIdにParent、それが例外をスローするDB用DBまたは待機中に存在する場合、私が最初に確認する必要がありますか? 例(Entity Framework Coreを使用): 注:これらの種類のチェックは、Microsoftの公式ドキュメントでもインターネット全体で行われます:https : //docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using- mvc / handling-concurrency-with-the-entity-framework-in-an-asp-mvc-application#modify-the-department-controllerしかし、追加の例外処理がありますSaveChanges また、このチェックの主な目的は、APIのユーザーにわかりやすいメッセージと既知のHTTPステータスを返すことであり、データベースの例外を完全に無視することではないことに注意してください。そして、例外がスローされる唯一の場所は、内部にあるSaveChangesかSaveChangesAsyncを呼び出すときに例外がありません...コールFindAsyncまたはAny。そのため、子が存在するが以前に削除されていた場合SaveChangesAsync、同時実行例外がスローされます。 これは、foreign key violation「ID {parent.ChildId}の子が見つかりませんでした」と表示するために、例外の書式設定がはるかに困難になるという事実のために行いました。 public async Task<ActionResult<Parent>> CreateParent(Parent parent) { // is this …

2
ASP.Net Core:ViewComponent vs EditorTemplate / DisplayTemplate vs @inject
そのため、ASP.Net Coreでビューにレンダリングする「コントロール」を作成するための良い方法を探していました。これまでのところ、3つのオプションがあることがわかりました。 ViewComponents:これらはミニコントローラーのようなもので、かみそりのページ(ビュー)からレンダリングするアクションのようなメソッドを使用します。私はそれらが自己完結型ロジックを持つことができるので、どの親ビューモデルにも依存しません。 EditorTemplate / DisplayTemplateフォルダー:これらは「Views / Shared /」の下に存在し、モデルプロパティをそれらに(DisplayFor()またはを使用してEditorFor())渡すことでビューにプルできます。 ASP.Net Coreの@inject:ビューに型を挿入できます(部分的なビューを関連付けることができるかどうかわかりません)。 部分的なビューを直接含める機能は、移植する制御システムの意図ではないため、省略します。 タグヘルパー-現在のビューコンテキストを挿入して、これらからコントロールを構築することもできます。 古いASP.NET MVCアプリでは、テンプレートからレンダリングされるいくつかのコントロールがありました(#2)。ただし、.Net Coreの場合、関連するかみそりビュー(コントロールは基本的にかみそりビューをラップするだけ)をレンダリングするために、代わりにViewComponents(より強力に見える)を使用することを考えています。とりあえず、ViewComponentsへの変換を試すつもりですが、この件についてのアドバイスがありがたいです。ありがとう。

2
どのデータを「クレーム」として保存する必要がありますか?
ASP.Net Coreでは、Claims認証は具体的な方法ではないことがわかりました。我々は、何も追加することができますClaimTypeし、ClaimValueペアを。groups、firstname、lastname、brithdate、canAccessThisURI、isEditorなどです。ただし、この方法(クレームとして保存できるものはすべて保存)では、アプリケーションデータの50%を含む巨大なクレームテーブルが作成されます。 良い方法として、クレームとして保存する必要がある一般的なデータは何ですか?

2
呼び出し元はHTTPリクエストによって呼び出されたコードの実行を中止できますか?
私が作成しているAPIにHTTPリクエストを行うサードパーティは、APIが1秒未満で応答することを要求しています。私の質問は、彼らが道持っているされて(文字通りあらゆるの範囲内で、道をHTTPおよび/またはTCP / IPプロトコル)それは長い1秒以上かかる場合は、私のコードの実行を中止するには?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.