ABP学習(3) - 文書の翻訳

住所: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

サンプル(サンプルの例)

フレームワークで開発された多くのサンプルプロジェクトがあります。参照  サンプルのページを

フレームワークは、例えば、プロジェクトの数を開発しました。例のページを参照してください。

コミュニティ(コミュニティ)

これは、オープンソースプロジェクトやコミュニティからの貢献に開いています。

これは、コミュニティの貢献を歓迎し、オープンソースプロジェクトです。

  • 使用  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を呼び出すことはありません。アップデート(タスク)メソッド。例外処理:私たちはほとんどABP Webアプリケーションで手動でハンドル例外にする必要はありません。デフォルトでは、すべての例外が自動的に処理されます!例外が発生した場合、ABPは、自動的に例外をログに記録し、右の結果がクライアントにバックします。これは、AJAXリクエストである場合、例えば、それがエラーを示す、クライアントにJSONオブジェクトを返します。この例で使用される場合を除き、それ以外の場合は、クライアントへの実際の例外を非表示になり、UserFriendlyException異常です。また、理解し、クライアントのエラーに対処する、適切なメッセージがユーザーに表示されます。ログ:あなたが見ることができるように、我々は、基本クラスで定義されたLoggerオブジェクトを使用してログを書き込むことができます。log4netのは、デフォルトで使用されるが、変更することができ、それは設定可能です。ローカライズ:例外がスローされたとき、我々は「L」メソッドを使用することをしてくださいノート?このように、それは自動的に現在のユーザーのカルチャに基づいてローカライズされます。詳細については、ローカライズされたドキュメントを参照してください。自動マッピング:最後の行では、我々はマッピング入力のABP MapTo方法のIObjectMapperを使用しています。エンティティの属性に属性。これは、マッピングを実行するAutoMapperライブラリを使用しています。私たちは簡単に一つのオブジェクトから別の命名規則に従った属性マッピングすることができます。ダイナミックAPI層は:実際には、TaskAppServiceは単純なクラスです。一般的に、我々は、JavaScriptのクライアントにメソッドを制御するためのラッパーAPIを記述する必要がありますが、ABPは、実行時に自動的に実行しました。このように、私たちは、クライアントから直接アプリケーションサービスのメソッドを使用することができます。評価:良いああ..................高度な動的なJavaScriptのAJAXプロキシー:ABPは、プロキシメソッドを作成し、呼び出し元のアプリケーション・サービス・メソッドは、クライアント上でJavaScriptのメソッドを呼び出すような単純なようです。最後の行では、我々は、マッピング入力のABP MapTo方法のIObjectMapperを使用しています。エンティティの属性に属性。これは、マッピングを実行するAutoMapperライブラリを使用しています。私たちは簡単に一つのオブジェクトから別の命名規則に従った属性マッピングすることができます。ダイナミックAPI層は:実際には、TaskAppServiceは単純なクラスです。一般的に、我々は、JavaScriptのクライアントにメソッドを制御するためのラッパーAPIを記述する必要がありますが、ABPは、実行時に自動的に実行しました。このように、私たちは、クライアントから直接アプリケーションサービスのメソッドを使用することができます。評価:良いああ..................高度な動的なJavaScriptのAJAXプロキシー:ABPは、プロキシメソッドを作成し、呼び出し元のアプリケーション・サービス・メソッドは、クライアント上でJavaScriptのメソッドを呼び出すような単純なようです。最後の行では、我々は、マッピング入力のABP MapTo方法のIObjectMapperを使用しています。エンティティの属性に属性。これは、マッピングを実行するAutoMapperライブラリを使用しています。私たちは簡単に一つのオブジェクトから別の命名規則に従った属性マッピングすることができます。ダイナミックAPI層は:実際には、TaskAppServiceは単純なクラスです。一般的に、我々は、JavaScriptのクライアントにメソッドを制御するためのラッパーAPIを記述する必要がありますが、ABPは、実行時に自動的に実行しました。このように、私たちは、クライアントから直接アプリケーションサービスのメソッドを使用することができます。評価:良いああ..................高度な動的なJavaScriptのAJAXプロキシー:ABPは、プロキシメソッドを作成し、呼び出し元のアプリケーション・サービス・メソッドは、クライアント上でJavaScriptのメソッドを呼び出すような単純なようです。
[Yīlàizhùrù:ABPshǐyòngビングtígōngchángguīAjīchǔjiégòu。このYóuyúCIレイ市忠yìngyòngchéngxùfúwù、yīncǐtōngcháng江チーzuòwéi俊泰(源獣qǐngqiúchuàngjiàn)zhùcèダオDIróngqì。どれそのjiǎndānzhùrù仁和yīlài翔(ベンshìlì忠IRepository <タスク>lìrú)。Cúnchú:ABPどのよう魏メイカットshítǐchuàngjiànmòrèncúnchú(ベンshìlì忠IRepository <タスク>lìrú)。Mòrèncúnchújùyǒuxǔduōyǒuyòngfāngfǎ、lìrúベンshìlì忠shǐyòngFirstOrDefaultfāngfǎ。どのようkuòzhǎnmòrèncúnchúこのmǎnzú女性xūqiúの女性。ORMとCúnchúchōuxiàngleDBMS、ビングjiǎnhuàleshùjùfǎngwènluójí。Shòuquán:ABPどのようshēngmíng興jiǎncháquánxiàn。Rúguǒdāngqiányònghùméiyǒu "gēngxīnrènwù" quánxiànhuǒ魏dēnglù、重zǔzhǐfǎngwènUpdateTaskfāngfǎ.ABPbùjǐnshǐyòngshēngmíng興shǔxìng、erqie選ぶjuyǒuqita FANGSHI shouquan。Yanzheng:ABP Zidongjiǎnchashurushifǒu魏コング。Zhushi Shuju私は2游biaozhǔnshǔxingはZI Dingyi yanzheng guize yanzheng shuruデsuǒyǒushǔxingドライブを明らかにしました。Ruguǒqǐngqiuwuxiao、我々yǐnfashidangデyanzheng宜昌江ビングザイ金星chǔlǐkehuドゥアン。瀋河rizhi Jilu:Yonghu、liulǎnチー、IPdizhǐ、Hujiao fuwu、fangfǎ、canshu、Hujiao Shijianは、Zhixing chixu Shijianはqita yixieホイXinxi源獣Yueding魏メイのGeを明らかにしたがPeizhi Zidongbǎocunqǐngqiuを明らかにしました。Gongzuoのdanyuan:ザイ忠ABP、moren qingkuang夏、メイzhǒngYingyongjiǎdingドウ・ウェイchengxu fuwufangfǎdanyuan gongzuo。TAホイZhidongはchuangjian Yige Lianjie、ビングザイ市kaishǐYigeシウfangfǎkaishǐ。Ruguǒfangfǎガイ呉Wancheng呈貢liwai叔母、Zé江ビング什ホウ市Lianjie tijiaoシウ。Jishǐcǐfangfǎshǐyongフオfangfǎbutongデcunchu定期刊行物、tamen DOUキョンシーyuanzǐド(シウ興デ)。Tijiaoシウ侯、江Zidongbǎocunshitǐデsuǒyǒugenggǎi太もも。shenzhiはdiaoyong xuyao shangmiansuǒde_repository.Update市(タスク)fangfǎオフセットWǒmen。宜昌chǔlǐ:WǒmenjihuはYingyong chengxu xuyaoウェブザイシャン忠・デ・宜昌shǒudongchǔlǐABPを相殺しました。Moren qingkuang夏Zhidongはchǔlǐsuǒyǒuduhui宜昌!RuguǒFasheng宜昌、宜昌ABPガイホイビンビン江Zidong Jilu zhengqueデjieguǒfǎnhuikehuドゥアンGEI。Liru、市浙江ruguǒYigeqǐngqiuAJAX、我々江ドゥアン翔kehufǎnhuiYige duixiang JSON、zhǐshiFasheng cuowu。Chufei Shiliガイ忠市UserFriendlyExceptionshǐyongデ宜昌、TA翔江ドゥアンyǐncangkehu史記・デ・宜昌をfǒuze。ビングchǔlǐliǎojie私kehu duandi cuowu 2、ビング翔yonghuxiǎnshishidangデXiaoxi。Rizhi Jilu:suǒは、Ru建を保持し、レイ忠智keyǐshǐyongwǒmenDingyi・デ・ロガーduixiang rizhi bianxie。log4netのmoren qingkuangshǐyong夏、わたしの民市KE KE Peizhiデgenggǎi溶接。Bendiの約束:Qǐngzhuyi、ザイ市wǒmenyǐnfa宜昌shǐyongle "L" fangfǎ?Zheyang、謝ホイZhidongは源獣dangqian金星Bendi yonghuデWenhua約束。庚デュオYǒuguanXinxi、qǐngcanjian Bendi wendang約束。Zidong yingshe:ザイzuihou宜興、wǒmenshǐyongABPデIObjectMapperデMapTofangfǎyingshe shuru。ShǔxingDAOshǔxingshitǐ。TAshǐyongAutoMapper Zhixing yingshe定期刊行。Wǒmenkeyǐ源獣Yueding Mingming江Qingsongshǔxing凍結Yige duixiang yingshe DAO Yige duixiang玲デ。東台CENG API:史記シャン、市Yige TaskAppServicejiǎndan・デ・レイ。Tongchang、wǒmenbixu bianxie baozhuang API、能力チー江fangfǎgongkaiyǐJavaScriptのGEI kehuドゥアン市ホイ男子ABP Yunxing Zidong Zhixingザイ。広大なzhíjiēコンゴKehuaデュアンshǐyòngyìngyòng城西fúwùfāngfǎwǒmenZhèyàng、。Píngjià:Hǎoは..................東台JavaScriptのAJAXxiānjìndàilǐ:diàoyòngyìngyòng城西fúwùfāngfǎ柔術西安ザイKehuaデュアン・シェーンdiàoyòngJavaScriptにABP ChuangJiedàilǐfāngfǎリンクは益陽ジャンプをfāngfǎ]。
依存性注入:

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のメソッドを呼び出すような単純なようです。

おすすめ

転載: www.cnblogs.com/Tpf386/p/11840475.html