Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9547

.NET6でできることをサンプルを交えて

$
0
0
このページは、祝 .NET 6 GAアドベントカレンダー6日目の記事です。 祝.NET 6 GA ようやっと出ました。 previewが出てはインストールし、Xamarinの後継というMAUIの状態を確認する日々…。(誇大) それもこれもMAUIのため…。 MAUI MAUIは、デスクトップ/モバイル含めた複数のプラットフォームに対応したフレームワークです。 共通のソースから各プラットフォーム用のアプリを作ることができるようになっています。 自分はMAUIに注目してますが、.NET6では他の形式のアプリケーションも作ることができます。 その自由度の高さが.NETの好きなところでもあります。 また、NuGetで公開されているライブラリの多さも好きなところです。 コンソールアプリ コマンドラインから使用するコンソールアプリも作ることができます。 Windowsなら.exeのファイル、LinuxやmacOSなら拡張子無しで実行できるアプリケーションですね。 .NET6からnamespaceで中カッコが不要になったり、Main関数の形にしなくてよくなったりで、なんだかスクリプト言語のような雰囲気にしつつ、バイナリにできるので高速に実行できる、ということになってます。 Webサーバーアプリ 単一の実行ファイルで、Webサーバーとして動かせるアプリを作成することができます。 MVCだったり.cshtmlだったり.razorだったりできます。 よくわかりませんね。 WebAssemblyアプリ Blazorという仕組み?でC#からWebAssemblyを作ることができます。 ページは.razorで作ります。 という風に、いろんなものが出来上がるんですが。 ええい、もうお前のよくわからん話はもういい、サンプル見せろサンプル。 ということで、サンプル作ってみました。 サンプルコード コードはGitHubに置きました。 何をするアプリかというと、某電子書籍サイトの無料マンガの一覧を表示する、というものになっています。 (勢いだけで作ってるのでいろいろやらかしてます。触れないところは見なかったことということでお願いします) 各々のプロジェクトの説明では、どのようにプロジェクトを作ったか、も載せておきます。 まずはVisual Studioで開けるようにソリューションファイル作成 $ mkdir -p ScrapingTest/src ; cd ScrapingTest/src $ dotnet new sln 各プロジェクト共通ライブラリ(ScrapingTestCommon) 以下のものが入っています。 本のタイトルや書誌URLをパッキングしたクラス サイトからWebページを読み込んで個別の作品に分ける 読んでくるために、AngleSharpというライブラリを使っています。 FreeBookScraping.csの63行目で読み込んで65~75行で各タイトルに分けています。 LINQ万歳! $ mkdir ScrapingTestCommon ; cd ScrapingTestCommon $ dotnet new console $ dotnet add package AngleSharp --version 0.16.1 $ cd .. $ dotnet sln add ScrapingCommon コンソールアプリ(ScrapingTestConsole) 上記共通ライブラリで読み込んだタイトル一覧を出力するコンソールアプリです。 コマンドラインの解析にSystem.CommandLineというライブラリを使っており、コマンドラインオプション解析が超超楽にできました。 $ mkdir ScrapingTestConsole ; cd ScrapingTestConsole $ dotnet new console $ dotnet add package System.CommandLine --prerelease $ dotnet add reference ../ScrapingTestCommon $ cd .. $ dotnet sln add ScrapingTestConsole Windowsアプリ(WPF)(ScrapingTestWpf) WinUIだWindows App SDKだと新しく出ていますが、まだまだWPFで作りますよ。 という方にも答えてくれる.Net6。 こういうアプリではやはりReactivePropertyは外せません。 (といっても、これくらいのアプリなら使う必要もないのですが…) $ mkdir ScrapingTestWpf ; cd ScrapingTestWpf $ dotnet new wpf $ dotnet add package ReactiveProperty $ dotnet add reference ../ScrapingTestCommon $ cd .. $ dotnet sln add ScrapingTestWpf Webサーアバーアプリ(ScrapingTestWebSerer) 共通ライブラリで読み込んだタイトル一覧を表示するWebサーバーのアプリです。 確か以前はControllerとViewで出来上がってたと思ったのですが、これらがパッキングされるようになった(Pages/Index.cshtmlとPages/Index.cshtml.cs)んですね。 $ mkdir ScrapingTestWebSerer ; cd ScrapingTestWebServer $ dotnet new webapp $ dotnet add reference ../ScrapingTestCommon $ cd .. $ dotnet sln add ScrapingTestWebSerer WebAssemblyアプリ(ScrapingTestPwa) サーバークライアント形式です。 PWAにしてしまうと、別サイトからデータを取ってこようとしても取ってこれないのですね。 なので、共通ライブラリはサーバー側が使用し、クライアントはAPIで取ってくる、という風になっています。 クライアントはまたもやReactivePropertyを使っています。 $ mkdir ScrapingTestPwa ; cd ScrapingTestPwa $ dotnet new blazorwasm -p -ho $ cd Server $ dotnet add reference ../../ScrapingTestCommon $ cd ../Client $ dotnet add package ReactiveProperty $ cd ../.. $ dotnet sln add ScrapingTestPwa/Server ScrapingTestPwa/Client モバイルアプリ(ScrapingTestMaui) きました。MAUIです! でもでも時間切れでした! 本当はShell使ってTabで切り替え、スクロールしていくと下にタイトル追加、とかやりたかったんですが…。 眠さに負けました…。(ちゃんと計画立てとけよ、という話) $ mkdir ScrapingTestMaui ; cd ScrapingTestMaui $ dotnet new maui $ dotnet add package ReactiveProperty $ dotnet add reference ../ScrapingTestCommon $ cd .. $ dotnet sln add ScrapingTestMaui MAUIのインストールなどは以前の記事見てくださいね。 おわりに と、こんな風に.NET6ならいろいろなアプリを作れます。 あとはあなた次第、ということで。

Viewing all articles
Browse latest Browse all 9547

Trending Articles