住所:HTTPS://aspnetboilerplate.com/Pages/Documents
ASP.NETモデルは何ですか?
ASP.NETボイラープレート(ABP)は、オープンソースと完全に文書アプリケーションフレームワークです。それだけでなく、フレームワークですが、も考慮にベストプラクティスのすべてを取って、ドメイン駆動設計に基づく強力なアーキテクチャモデルを提供します。
ABPは、最新のASP.NETコアおよびEFコアを使用するだけでなく、ASP.NET MVC 5.xとEF6.x.をサポートしています
クイックサンプル
のは、ABPの恩恵を参照するには、単純なクラスを調べてみましょう:
ABPの利点を理解するための単純なクラスで見てみましょう:
パブリック クラスTaskAppService:ApplicationService、ITaskAppService { プライベート 読み取り専用 IRepository <タスク> _taskRepository。 公共 TaskAppService(IRepository <タスク> taskRepository) { _taskRepository = taskRepository。 } [AbpAuthorize(MyPermissions.UpdateTasks)] パブリック 非同期タスクUpdateTask(UpdateTaskInput入力) { Logger.Info(" 入力の更新タスク:" + 入力)。 VaRのタスク= のawait_taskRepository.FirstOrDefaultAsync(input.TaskId)。 場合(タスク== nullが) { スロー 新しい UserFriendlyExceptionを(L(" CouldNotFindTheTaskMessage " )); } ObjectMapper.MapTo(入力、タスク)。 } }
ここでは、サンプル・アプリケーション・サービスのメソッドを参照してください。プレゼンテーション層は、DDDに直接使用したアプリケーションサービスにおけるアプリケーションによって実行されます。UpdateTaskは、AJAXを介して呼び出さJavaScriptのメソッドとみなさ。
のは、ここでABPの利点のいくつかを見てみましょう:
依存性注入:
通常のDIインフラストラクチャを使用して提供するために、ABP。これは、DIコンテナに(要求に応じて作成された)、それはしばしば一過性であるとして登録されているアプリケーションサービスであるため。これは単に、すべての依存関係(例えば、この例ではIRepository <タスク>)注入することができます。
リポジトリ:
ABPは、各エンティティに(例えばこの例ではIRepository <タスク>)デフォルトのストレージを作成することができます。デフォルトリポジトリは、多くの有用な方法は、この例で使用される例えばFirstOrDefaultメソッドを有します。私たちは、私たちのニーズを満たすために、デフォルトのリポジトリを拡張することができます。リポジトリのDBMSとORM抽象、およびデータアクセスロジックを簡素化します。
認証:
ABPは、チェック権限を宣言することができます。現在のユーザーは、「アップデートタスク」権限を持っていないか、またはログオンしていない場合は、それUpdateTaskメソッドへのブロックアクセス。また、ABPだけではなく、宣言の属性が、他の不正な方法があります。
検証:
入力が空であるかどうかABPは自動的にチェックします。また、標準的なデータ注釈属性に基づいて、すべてが検証入力にカスタム検証ルールを属性れます。リクエストが無効である場合、それはクライアントの認証を処理し、適切な例外をスローします。
監査ログ:
ユーザー、ブラウザ、IPアドレス、サービスコール、メソッド、パラメータ、通話時間、期間、および他のいくつかの情報を実行するには、自動的に慣例と設定することにより、各要求のために保存されます。
仕事の単位:
ABPでは、各アプリケーション・サービスのためのデフォルトの方法は、作業単位であると仮定されます。それは自動的に接続を作成し、メソッドの開始時にトランザクションを開始します。プロセスが正常に完了している場合は、例外なく、トランザクションをコミットし、接続を解除します。この方法は、異なるリポジトリ又は原子であろう方法、(トランザクション)を使用します。トランザクションがコミットされた後、それは自動的にエンティティへのすべての変更を保存します。私たちも、_repository.Update(タスク)メソッドの上に示す呼び出すことはありません。
例外処理:
私たちは、ほとんどABP Webアプリケーションで手動でハンドル例外にする必要はありません。デフォルトでは、すべての例外が自動的に処理されます!例外が発生した場合、ABPは、自動的に例外をログに記録し、右の結果がクライアントにバックします。これは、AJAXリクエストである場合、例えば、それがエラーを示す、クライアントにJSONオブジェクトを返します。この例で使用される場合を除き、それ以外の場合は、クライアントへの実際の例外を非表示になり、UserFriendlyException異常です。また、理解し、クライアントのエラーに対処する、適切なメッセージがユーザーに表示されます。
ロギング:
あなたが見ることができるように、我々は、基本クラスで定義されたLoggerオブジェクトを使用してログを書き込むことができます。log4netのは、デフォルトで使用されるが、変更することができ、それは設定可能です。
ローカライズ:
してください、例外がスローされたとき、我々は「L」メソッドを使用することに注意してください?このように、それは自動的に現在のユーザーのカルチャに基づいてローカライズされます。詳細については、ローカライズされたドキュメントを参照してください。
自動マッピング:
最後の行では、我々は、マッピング入力のABP MapTo方法のIObjectMapperを使用しています。エンティティの属性に属性。これは、マッピングを実行するAutoMapperライブラリを使用しています。私たちは簡単に一つのオブジェクトから別の命名規則に従った属性マッピングすることができます。
ダイナミックAPI層:
実際には、TaskAppServiceは、単純なクラスです。一般的に、我々は、JavaScriptのクライアントにメソッドを制御するためのラッパーAPIを記述する必要がありますが、ABPは、実行時に自動的に実行しました。このように、私たちは、クライアントから直接アプリケーションサービスのメソッドを使用することができます。
評価:良い高度なああ..................
動的なJavaScriptのAJAXプロキシー:
ABPプロキシメソッドを作成し、呼び出すアプリケーション・サービス・メソッドは、クライアント上でJavaScriptのメソッドを呼び出すような単純なようです。
私たちは、この単純なクラスでABPの利益を見ることができます。これらのタスクのすべては、多くの場合、多くの時間を費やすが、フレームワークによって自動的に処理されます。
この単純な例に加えて、ABPもモジュラー、マルチテナント、キャッシング、バックグラウンドジョブ、データフィルタ、設定管理、フィールドイベント、ユニットと統合テストは、強力なインフラや開発モデルを提供します。あなたのビジネスのコードに焦点を当て、自分自身を繰り返さないでください!
入門
あなたは、テンプレートから開始するか、その紹介のチュートリアルを開始することができます。
スタートアップテンプレート
直接から現代探してスタートアッププロジェクト作成 スタートアップテンプレートを。
プロジェクト開始テンプレートから直接、現代のブーツの外観を作成します。
スタートテンプレートは、基本的なレイアウトと、アプリケーションにいくつかの一般的な機能を提供します。いくつかの異なるオプションは、テンプレートを開始する必要があります。
ASP.NETコア
ASP.NET MVCの5.x
参照してください ダウンロードページを 他の組み合わせのために。
追加の組み合わせについては、ダウンロードページを参照してください。
はじめにチュートリアル(スタートチュートリアル)
ステップバイステップのチュートリアルは、フレームワークを紹介し、起動時のテンプレートに基づいてアプリケーションを作成する方法について説明します。
ステップのチュートリアルバイステップは、フレームワークを紹介し、アプリケーションベースのスタートアップテンプレートを作成する方法について説明します。
ASP.NETコア
ASP.NET MVCの5.x
- ASP.NET MVC 5.xの、ウェブAPI 2.xでは、EntityFrameworkの6.x&AngularJS 1.1で導入
- ASP.NET MVC 5.xの有するマルチテナント(SaaSの)アプリケーションを開発し、EntityFrameworkの6.x&AngularJS 1.1
サンプル(サンプルの例)
フレームワークで開発された多くのサンプルプロジェクトがあります。参照 サンプルのページを。
フレームワークは、例えば、プロジェクトの数を開発しました。例のページを参照してください。
コミュニティ(コミュニティ)
これは、オープンソースプロジェクトやコミュニティからの貢献に開いています。
これは、コミュニティの貢献を歓迎し、オープンソースプロジェクトです。
- 使用 GitHubのリポジトリを 最新にアクセスするために ソースコードを作成し、 問題 と送信 プル要求を。
- 使用 stackoverflowの上aspnetboilerplateタグを 使用状況に関する質問をします。
- フォロー Twitter上でaspboilerplateを 出来事について通知します。
- 使用GitHubのリポジトリのアクセスの問題を作成し、プルリクエストを送信し、最新のソースコード。
- 使い方に関する質問をすることstackoverflowの上aspnetboilerplateマークを使用してください。
- 状況を理解するために、TwitterでAspboilerplateの注意、。
概要:これは、文書の内容の翻訳、コンテンツ、及び第二の記事の最初のページです。
非常に似ています。文書の最初のページには、ビットの内容を紹介します。
1、ABPの概念は言いました。
図2に示すように、例示的なABPに応じてコードを使用することの利点を含む、サンプルコードを与えます。
ABPは、テンプレートを提供リスト3;
図4は、接続入門チュートリアルを理由に、あなたはステップバイ入門チュートリアルのステップに従ってABP学習を開始することができます。
5、リストの典型的なプロジェクトのURLアドレス。
6、コミュニティ関連の情報を紹介し、ABPの開発に参加することができます。githubの上のプロジェクト。
ABPは、通常のDIインフラストラクチャを使用して提供します。これは、DIコンテナに(要求に応じて作成された)、それはしばしば一過性であるとして登録されているアプリケーションサービスであるため。これは単に(IRepository <タスク>この例では、例えば)の依存関係を注入することができます。
リポジトリ:
ABPは、各エンティティのためのデフォルトのストレージ(例えば、この例ではIRepository <タスク>)を作成することができます。デフォルトのリポジトリは、多くの有用な方法で、この例で使用される例えばFirstOrDefaultメソッドを持っています。私たちは、私たちのニーズを満たすために、デフォルトのリポジトリを拡張することができます。リポジトリのDBMSとORM抽象、およびデータアクセスロジックを簡素化します。
認証:
ABPは、チェック権限を宣言することができます。現在のユーザーは、「アップデートタスク」権限を持っていないか、またはログオンしていない場合は、それUpdateTaskメソッドへのブロックアクセス。また、ABPだけではなく、宣言の属性が、他の不正な方法があります。
検証:
入力が空であるかどうかをABPは、自動的にチェックします。また、標準的なデータ注釈属性に基づいて、すべてが検証入力にカスタム検証ルールを属性れます。リクエストが無効である場合、それはクライアントの認証を処理し、適切な例外をスローします。
監査ログ:
ユーザー、ブラウザ、IPアドレス、サービスコール、メソッド、パラメータ、通話時間、期間、および他のいくつかの情報を実行するには、自動的に慣例と設定することにより、各要求のために保存されます。
仕事の単位:
ABPでは、各アプリケーション・サービスのためのデフォルトの方法は、作業単位であると仮定されます。それは自動的に接続を作成し、メソッドの開始時にトランザクションを開始します。プロセスが正常に完了している場合は、例外なく、トランザクションをコミットし、接続を解除します。この方法は、異なるリポジトリ又は原子であろう方法、(トランザクション)を使用します。トランザクションがコミットされた後、それは自動的にエンティティへのすべての変更を保存します。私たちも、_repository.Update(タスク)メソッドの上に示す呼び出すことはありません。
例外処理:
私たちは、ほとんどABP Webアプリケーションで手動でハンドル例外にする必要はありません。デフォルトでは、すべての例外が自動的に処理されます!例外が発生した場合、ABPは、自動的に例外をログに記録し、右の結果がクライアントにバックします。これは、AJAXリクエストである場合、例えば、それがエラーを示す、クライアントにJSONオブジェクトを返します。この例で使用される場合を除き、それ以外の場合は、クライアントへの実際の例外を非表示になり、UserFriendlyException異常です。また、理解し、クライアントのエラーに対処する、適切なメッセージがユーザーに表示されます。
ログ:
あなたが見ることができるように、我々は、基本クラスで定義されたLoggerオブジェクトを使用してログを書き込むことができます。log4netのは、デフォルトで使用されるが、変更することができ、それは設定可能です。
ローカライズ:
してください、例外がスローされたとき、我々は「L」メソッドを使用することに注意してください?このように、それは自動的に現在のユーザーのカルチャに基づいてローカライズされます。詳細については、ローカライズされたドキュメントを参照してください。
自動マッピング:
最後の行では、我々は、マッピング入力のABP MapTo方法のIObjectMapperを使用しています。エンティティの属性に属性。これは、マッピングを実行するAutoMapperライブラリを使用しています。私たちは簡単に一つのオブジェクトから別の命名規則に従った属性マッピングすることができます。
ダイナミックAPI層は:
実際には、TaskAppServiceは、単純なクラスです。一般的に、我々は、JavaScriptのクライアントにメソッドを制御するためのラッパーAPIを記述する必要がありますが、ABPは、実行時に自動的に実行しました。このように、私たちは、クライアントから直接アプリケーションサービスのメソッドを使用することができます。
評価:良い高度なああ..................
ダイナミックJavaScriptのAJAXプロキシー:
ABPはプロキシメソッドを作成し、呼び出すアプリケーション・サービス・メソッドは、クライアント上でJavaScriptのメソッドを呼び出すような単純なようです。