#author("2022-03-04T06:26:11+00:00","default:admin","admin")
#author("2022-03-04T06:30:01+00:00","default:admin","admin")
あまりにも情報不足なのと、Microsoftからの情報提供が悪過ぎるのにムカついたので書きまくる!

----

本サイト内関連ページ

-[[ASP.NET Core/IIS]]
-[[ASP.NET Core/データベース]]

-[[ASP.NET Core MVC]]
-[[ASP.NET Core MVC/Model]]
-[[ASP.NET Core MVC/View]]
-[[ASP.NET Core MVC/Controller]]
-[[ASP.NET Core MVC/ルーティング]]
-[[ASP.NET Core MVC/状態管理]]

----

-[[ASP.NET Core - Binary Intellect Knowledge Base:http://binaryintellect.net/categories/be3270c7-740a-4ce4-aded-95d6d601d651.aspx]]
-[[ASP.NET Core ClockUpTips:http://aspnet-core.clock-up.jp]]
-[[ASP.NET Core チュートリアル:http://www.w3ii.com/ja/asp.net_core/default.html]]
-[[ASP.NET MVCの用語:https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC%E3%81%AE%E7%94%A8%E8%AA%9E]]

-[[「いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?」連載一覧:https://codezine.jp/article/corner/674]]
-[[Hello World, ASP.NET Core 1.0!:https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10/]]
-[[ASP.NET Core 1.0の概要を整理する:http://ryuichi111std.hatenablog.com/entry/2016/05/28/160518]]
-[[ASP.NET Core - マイクロソフト系技術情報 Wiki - OSSコンソーシアム:https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Core]]
-[[.NET Core 1.1 をリリース:https://blogs.msdn.microsoft.com/visualstudio_jpn/2016/11/24/announcing-net-core-1-1/]]

-[[ASP.NETからASP.NET Coreに移行した話:http://qiita.com/taiga_takahari/items/240a4b0453990db4005f]]
-[[ASP.NET MVC アプリケーションを ASP.NET Core MVC にマイグレーションしようとして挫折した話:http://blog.shibayan.jp/entry/20160629/1467209826]]

-[[ASP.NET Core MVC に関する投稿:http://mrgchr.hatenablog.com/archive/category/ASP.NET%20Core%20MVC]]

-[[macOS ではじめる ASP.NET Core x Entity Framework Core x PostgreSQL:http://qiita.com/k--kato/items/134256c4954aa6115502]]
-[[.NET Core on Linux Handson:https://www.gitbook.com/book/tanaka-takayoshi/-net-core-on-linux-handson/details]]
-[[ASP.NET Core アプリを Linux サーバーで公開:https://creativeweb.jp/code/aspdotnetcore-linux]]

-[[ASP.NET Core を始める際に知っておきたい Web フロントエンドツールの種類と最新トレンド:http://tkiryu.hatenablog.com/entry/2017/02/15/084115]]

-[[ASP.NET Coreの雛形コードを見てみよう:https://codezine.jp/article/detail/9778]]
-[[「ASP.NET Core 2.0」の変更点とインストール方法を知ろう:https://codezine.jp/article/detail/10482]]

-[[ASP.NET Core Web APIのための高度なアーキテクチャ:https://www.infoq.com/jp/articles/advanced-architecture-aspnet-core]]

-[[ASP.NET Coreを始める前に知っておきたい19のこと:https://qiita.com/hydrangeas/items/b1f517130309c56eb0ec]]

-[[Reactの人気を超えたASP.NET Coreとは?:https://qiita.com/so99ynoodles/items/3e7ac5ab354c5e644c67]]

*概要 [#n5c08179]
**ASP.NETの歴史 [#x48bf873]
-1996年 : Active Server Pages
-2002年 : ASP.NET
-2009年 : ASP.NET MVC
-2016年 : ASP.NET Core

**ASP.NET Core の特徴 [#ta3256cb]
-オープンソースで開発されている
-動作環境がWindowsに加えMacとLinuxに正式に対応した
-これまで個別の機能であった「ASP.NET MVC」「WebAPI」「WebPages」は、ASP.NET Coreで再設計され、1つに統合された
-Linux/Mac/Windows共通で使用できるコマンドラインインターフェース「.NET CLI」が用意された。このコマンドを使用することで、リポジトリから取得してきたソースコードを、環境を意識することなく依存解決を行い、ビルドし、実行できるようになった。
-IIS 非依存。libuvベースのKestrelという新しいWebサーバーが提供され、IISやNginxとの連携することもできる。

-MVC/Entity Framework Core の知識を必須とするため、ASP.NET Web Forms や型付きデータセットで開発されてきた方々には、非常にハードルが高い開発プラットフォームにもなっている
-高水準 UI 部品が大量に存在していた ASP.NET Web Forms から、いきなりスクラッチ開発に近い ASP.NET MVC/EF 開発ベースに移れと言われても正直キツイ(らしい)

*ハンズオン [#l98b0d85]
-[[ASP.NET Core MVC の概要:https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/start-mvc?view=aspnetcore-6.0&tabs=visual-studio]]

-[[Visual Studio Codeを使用してASP.NET CoreでHello World WEBアプリ作成:https://note.edasaka.jp/display-hello-world-in-visual-studio-code-and-asp-dotnet-core/]]
-[[.NET Core と VS Code によるクロスプラットフォーム Web 開発環境:https://blog.kondoumh.com/entry/2019/08/29/222626]]

*パフォーマンス [#qcb5c43c]
-[[ASP.NET Core のパフォーマンスに関するベスト プラクティス:https://docs.microsoft.com/ja-jp/aspnet/core/performance/performance-best-practices?view=aspnetcore-2.2]]
-[[C# 7.2 with .NET Core 2.1:https://www.slideshare.net/ufcpp/c-72-with-net-core-21]]

-[[Azure App Service 上での ASP.NET Core 2.2 のパフォーマンス:https://blog.shibayan.jp/entry/20181225/1545727432]]

-[[.NET Coreで作成した Web APIアプリを Windows サービスで動かす:http://www.moonmile.net/blog/archives/9186]]

-[[ASP.NET と ASP.NET Core のパフォーマンスを比較する(2018年10月版):https://noxi515.hateblo.jp/entry/2018/10/28/021357]]
-[[ASP.NET と ASP.NET Coreのパフォーマンスを比較する:https://noxi515.hateblo.jp/entry/2018/03/04/014049]]

-[[C#コードの最適化:より良いアセンブリコードを生成させる裏技:https://medium.com/@joni2nja/c-コードの最適化-より良いアセンブリコードを生成させる裏技-74c5163abbe0]]

*アプリケーションの構成 [#x23bab19]
-[[Application Startup in ASP.NET Core - 日本語意訳:https://qiita.com/tkiryu/items/012a0123c9eb317a0624]]
-[[ASP.NET Core 1.0 の Startup クラス定義の基本と Dependency Injection の話:http://blog.shibayan.jp/entry/20160517/1463468762]]

**Startupクラス [#n42b2c3e]
-ASP.NET Core アプリケーションには Startup クラスが必要
-Startup クラスのコンストラクタに、dependency injection によってオブジェクトを注入することができる。例えば、
--IHostingEnvironment を注入して構成ソースを設定
--ILoggerFactory を注入してlogging プロバイダーを設定
-Startup クラスには Configure メソッドが必須で、オプションで ConfigureServices メソッドを含めることができる

***Configureメソッド(必須) [#l0c3571b]
-ASP.NET Core アプリケーションが HTTP リクエストにどのように応答するかを指定するために使用される

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
 {
     loggerFactory.AddConsole(Configuration.GetSection("Logging"));
     loggerFactory.AddDebug();
 
     if (env.IsDevelopment())
     {
         app.UseDeveloperExceptionPage();
         app.UseDatabaseErrorPage();
         app.UseBrowserLink();
     }
     else
     {
         app.UseExceptionHandler("/Home/Error");
     }
 
     app.UseStaticFiles();
 
     app.UseIdentity();
 
     app.UseMvc(routes =>
     {
         routes.MapRoute(
             name: "default",
             template: "{controller=Home}/{action=Index}/{id?}");
     });
 }

***ConfigureServicesメソッド(オプション) [#m7f45414]
-Configure メソッドの前に呼び出される
-構成オプション はこのメソッドで設定される
-実質的なセットアップが必要な機能のために、IServiceCollection には Add[Service] 拡張メソッドが用意される

 public void ConfigureServices(IServiceCollection services)
 {
     // Add framework services.
     services.AddDbContext<ApplicationDbContext>(options =>
         options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
 
     services.AddIdentity<ApplicationUser, IdentityRole>()
         .AddEntityFrameworkStores<ApplicationDbContext>()
         .AddDefaultTokenProviders();
 
     services.AddMvc();
 }

***Dependency Injection [#v8e347fc]
-AddMvc や AddDbContext などフレームワークが提供している拡張メソッドも、実際は内部で必要なクラスをコンテナに追加しているに過ぎない
-デフォルトの DI コンテナでは 3 種類存在している

-AddSingleton
--アプリケーション中で 1 つだけインスタンス化
-AddScoped
--リクエスト中で 1 つだけインスタンス化
-AddTransient
--常に新しくインスタンス化

-使いなれた DI コンテナに切り替えたい場合は、ConfigureServices メソッドで IServiceProvider を返すだけで良い?
--基本的にはコンストラクタへのインジェクションのみ
--IServiceProvider をコンストラクタで受けとれば、任意のインスタンスを作成できそう

*日本語処理 [#m7db45b5]
**文字エンコーダーの設定変更 [#n1332ae7]
View に
 &#x6C49;&#x8BED;/&#x6F22;&#x8A9E;
のような文字が表示される場合はこの設定変更を検討する。

-[[ASP.Net Core + Razorで日本語がエスケープされないようにする:https://qiita.com/rei000/items/67f66fa01b87f720c92f]]
--Startup.cs に以下の記述を加える
 using System.Text.Encodings.Web;
 using System.Text.Unicode;
 
 public void ConfigureServices(IServiceCollection services) {
     services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.BasicLatin,
                                              UnicodeRanges.CjkSymbolsandPunctuation,
                                              UnicodeRanges.Hiragana, 
                                              UnicodeRanges.Katakana,
                                              UnicodeRanges.CjkUnifiedIdeographs));
     // その他 .AddMvc() など...
 }
--デフォルトではHtmlEncoder.Defaultが使われ、これがU+0000..U+007F以外は全てエスケープする設定になっている
--なので、そこでDIにて日本語も許容するように設定

--[[クロスサイト スクリプティングの防止:https://docs.microsoft.com/ja-jp/aspnet/core/security/cross-site-scripting]]

*バージョン [#wc64a245]
**2.1 [#g89f1c5f]
-2018 年 5 月 30 日に、.NET Core 2.1 と ASP.NET Core 2.1 がリリースされた
-.NET Core 2.1は長期サポートリリース(LTS)になるため、古いプラットフォームの開発者はできるだけ早くアップグレードした方がよい
-2018年10月1日を以って「.NET Core 2.0」のサポートが終了した

-[[ASP.NET Core 2.1 の新機能:https://qiita.com/sugasaki/items/b6e6cd579ea205863908]]
-[[.NET Core 2.1.0がリリースされました:https://kledgeb.blogspot.com/2018/06/net-core-22-net-core-210.html]]
-[[.NET Core 2.1の不具合のため.NET Core 2.0が延命:https://www.infoq.com/jp/news/2018/07/net-core-2-eol]]

-[[Migrate from ASP.NET Core 2.0 to 2.1:https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1]]
--[[ASP.NET Core 2.0 から 2.1 への移行:https://docs.microsoft.com/ja-jp/aspnet/core/migration/20_21?view=aspnetcore-2.1]]
-[[ASP.NET Core 2.1 コード ベースへの移行:https://qiita.com/hiromasa-masuda/items/2785232a6dab9a451aeb]]
-[[ASP.NET Core 2.0 から 2.1 へのアップデートを行ったメモ:https://blog.shibayan.jp/entry/20180603/1527958208]]
-[[ASP.NET Core 2.1 への移行:https://qiita.com/hiromasa-masuda/items/91976dca16f05e96410a]]
-[[ASP.NET Core:daruyanagi.jp を ASP.NET Core 2.1 へ移行させた:https://blog.daruyanagi.jp/entry/2018/06/23/204520]]

-[[ASP.NET Core 2.1をhttps://localhostで動かす:https://blog.divakk.co.jp/entry/2018/08/07/195919]]

-[[ASP.NET Core 2.1 を IIS でホストする時にハマったメモ:https://odashinsuke.hatenablog.com/entry/2018/06/20/182129]]

-[[How to Migrate .NET Core Projects From 2.0 to 2.1:https://dzone.com/articles/migrating-net-core-projects-from-20-to-21]]

*2.2 [#a85462c0]
-[[Announcing ASP.NET Core 2.2, available today!:https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/]]

-[[Azure App Service 上での ASP.NET Core 2.2 のパフォーマンス:https://blog.shibayan.jp/entry/20181225/1545727432]]
-[[Azure App Service で ASP.NET Core 2.2 と ANCM v2 が使えるようになった:https://blog.shibayan.jp/entry/20181223/1545573281]]

-[[ASP.NET Core 2.2 で追加された Health Checks API の基本的な使い方とカスタマイズ:https://blog.shibayan.jp/entry/20181219/1545185333]]

-[[ASP.NET Core 2.1 => 2.2 へマイグレーションした。:http://kuxumarin.hatenablog.com/entry/2018/12/16/021729]]

*3.0 [#w9d8bc9d]
-[[既存の WPF アプリケーションを .NET Core 3.0 に移行した:https://blog.shibayan.jp/entry/20190302/1551518606]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS