#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 に 汉语/漢語 のような文字が表示される場合はこの設定変更を検討する。 -[[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]]