【本命】Blazor スレ1【真打】
■ このスレッドは過去ログ倉庫に格納されています
混沌を極めるWebアプリケーション界隈に現れた一筋の光明 型無し言語 JavaScript の悪夢を打ち払い 林立するエコシステムの亡霊を退散 アプリケーション開発者の希望となるMVVMを引っ提げて登場した真のSPA開発環境 Blazorを語る者よ、集え! ASP.NET Core Blazor の概要 https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-3.1 JavaScript は改良が続くんだろうし いつかTypeScriptとの違いもなくなっちゃうのかもしれんね そうなったらクライアントサイドがJavascriptでもいいのかもしれない >>602 JSは互換性重視だから大幅には変わらない。 wasm普及したらJSの役割はおしまいだろ PCとSPで動くnative appを開発できるツールが でてきてweb appが下火になる未来も来ると思うわ AppleもMAC向けARM系独自プロセッサ開発する。 最後はcross platform対応のnative appに向かう 中途半端Bootstrapより、なんかまともなもんを一つ移植して欲しいな WebAppは、下火になるとしても、独特の面白さがある。 ビビッドアーミーなんかも、Webからすぐに始められるから、インストール型 のゲームよりも罪悪感が少ないため、ヒットした可能性がある。 >>596 最近までasync/awaitもなかったんやで・・推して知るべし 自分は最近仕事で使ったからReactはギリ推せる なぜかというとhooksが導入されたり関数コンポーネントが主流になったりで React周りの記述量が大幅に減ったから Reduxなんか挫折する人が出るくらい記述量が無駄に多かったらしい それもRedux-Toolkitでずいぶん楽になったようだ 調べているうちに新旧のコードを見かけるけど 旧Reduxで組んでた人はよく発狂しなかったと感嘆した まだまだ記述量が減る余地はあると思うから期待したい BlazorはRedux-Toolkit以上の使いやすい状態管理が提供されれば 仕事でも使ってみたい ReactとVueは選定するとき迷ったが、サポートしているのが FaceBookとコミュニティでは巨人の肩に乗るほうがよいと判断した Augularは構文デザインになぜか吐き気を覚えたので選定から外した みなさん貴重なご意見ありがとう。 Web系のひとたち、俺たちは最先端のことやってるぜ感出してるけど、 昔のVBAみたいな、あとで誰も手をつけれてないようなシロモノを職人技で苦労しながら作ってるような気がしてて… そういうのは仕事では使いたくない… あとBlazorに望むこととしては、 WinFormsやWebFormsみたいに標準のコントロールを充実させてほしい。 DataGridViewやTreeViewが海外のサードパーティ製にしかないのはこれまたお仕事では困る… ぼちぼちGrapeCityあたりが出してくれそうだが… YouTube で有名な雑食系エンジニア・KENTA は、 初心者が進む道を、サーバー側言語のRuby → Go を王道としてる この2つ以外は、出てこない GUI 系は、画面の手直しなどで、工数がかさむ。 C#, dot.net などのWindows 系は、いらない。 Java などの土方系も、いらない。 C/C++ などのポインタ系や、ハードウェアの仕組みなども、いらない。 Elixir, Rust は、普及へのchasm・溝を超えられなかった 言語よりも、Docker, Kubernetes, AWS などの、サーバー構築・新規案件を重視する。 上流工程・新規案件の方が、価格交渉力が強いから。 一方、下流工程・保守案件は低価格しかない >>585 で書いた、AWS Elastic Beanstalk の中で、 Puma for Ruby, Docker, Go を抑えておけばよい サーバー版Blazorのシステム納品間近 サーバーサイドとクライアントサイドをC#同一ソースコードで記述できるから開発効率高いね >>609 Blazor ServerのApplication Serverは何台構成? 同時使用ユーザー数の規模はどれくらい? 良い言語C#でclient-server両方かけるっていうメリットは大きい >>607 web系はアホが多い 過去に失敗した経験に学ばず同じことを繰り返してるし ウェブ系は雇用の安定感が無いから新しい事やってます感をアピールしないと次がないのよ だから同じようなことを言い方や見せ方を変えながら繰り返してる >>607 サードパーティ製コントロールって JS & CSSのラッパーコントロールですよ。C#の。 なので、コントロール欲しければ、普通の配置して、 JSをC#から interopすればよろし。 俺的にはまず、Blazor Serverside + Blazor Webassemblyの組み合わせで使えるようにして欲しいな これができないことには、いつまで経ってもJavaScriptから逃げられん Blazor Serversideでログイン関連等の基本的な部分を作り、Blazor Webassemblyでウィジェットのようなものを作るような、そういう組み合わせができるように改良して欲しい WebAssemblyとJavaScriptの処理速度を比較してみる https://qiita.com/mink0212/items/c7fc8d1e7c036b706544 やはりhtml domを突いて画面だしてる現状では意味ないかも... 業務アプリならsilverlightを温めとけばよかったのよ ria service も廃止してAzure売り出す始末でタチ悪すぎるわ どうせまた3年でオワコンになり、再開発させられる羽目になるんだよな wcfとかどうなるんだよ WCFはまだ現役じゃろ Remotingは終わったけど >>619 Remotingは「レガシーとされている」状態ね。 Silverlight はFlashと一緒で消える運命でしょ Blazorは Server版は既存の記述組み合わせたものだし WebAssembly もマイクロソフトが単独でやってるわけでもないし すぐには消えなさそうだけど それも世の中の技術の進歩とトレンド次第かな 全く性質が違うからねー Blazorがいつまで続くかはわからないがクライアントサイドC#はずっと残ると思う Webasm自体が続く限りは >>619 WCFからgRPCへ乗り換えを勧めているらしいぞ ASP.NET CoreのRazor Pagesと ASP.NET CoreのMVCと Blazor WebAssemblyの使い分けがよくわからない。 ページ単位でURLを持たせたい場合は Blazor WebAssemblyは使えない? ポストバックを多用する昔ながらの単純なウェブアプリならPages ビューを開いた後にクライアントサイドでゴリ押しする少し複雑なウェブアプリならMVC MVCでクライアントサイドが管理しきれない規模の高難易度ウェブアプリならBlazor MVCが一番バランスいい Blazor、というかSPAにするほど複雑なウェブアプリが滅多にない SPAはPgadmin、CodeServerみたいなガチめのアプリのための技術 MVCはどっちかというとWeb API向け。UIがあるんならRazor Pagesが無難。 そうかな テンプレートは1回表示して終わりだからMVCのほうがシンプルでいいと思う ポストバックするならPagesのほうがやりやすいけどね 少し規模が大きくなると、MVCはどこでどのエンドポイントが呼ばれているかカオスになるからね… >>620 MSの言い方は知らんけど.NET Coreで使えないんだからもう終わりでしょ >>634 .NET Frameworkでは使えるし、Windowsが生きている限りサポートされ続けるから「終わった」は言い過ぎやろ 今、wpfをクライアントとしてサーバーのsqlserverにcrudするには何が主流なの? wcf?asp.net mvc? >>635 新しく立ち上げるプロジェクトで使用できないなら「終わった」でいい VB6は終わった技術じゃないというならそれでもいいが >>638 使用できるでしょ。.NET FrameworkはWindowsのサポート期限と同じなんだから。 >>639 言葉足らずですまん .NET Core で使えない==新しく立ち上げるプロジェクトで使用できない とすっ飛ばして書いた。 .NET Frameworkの保守で使う新規プロジェクトなら使えるね Blazor WebAssemblyをテンプレートからいろいろいじってみたけど、 もうちょいテンプレートしっかり作ってほしい。 せめてCRUDのテンプレ欲しかったなあ。 あとClient側、trycatchくらい書いとけよと。 あととにかくデバッグがうまくいかない ctrl+shift+iだったかな、これ押すと一応デバッグできるようになるんだけど、そんなん分かるか!ってかんじ。 Blazor使って作られたサービスってある? 調べても使ってみたとかばっかでる >>647 実際の公開サイトでの統計 https://www.wappalyzer.com/technologies/web-frameworks/ Blazorは670 sitesだから徐々に増えてきてる あと企業内のシステムでBlazor Server使ってるシステム増えてるはずだが 非公開web appなので上の統計には出てこない。 MSの技術は法人利用多い しかしまだBlazorではないASP.netのシェアが圧倒的 ほとんどのサイトはSPAである必要がないので ASP.NET MVCとかRazor Pagesで十分ってことかもしれない >>648 なるほどねー たしかにMVCで十分なシーン多いわ ありがとう助かりました ユーザー名+パスワードのハッシュの入った既存のデータベースを、Blazorのユーザー認証に使い回す方法ってどっかに紹介されてない? >>650 A Demonstration of Simple Server-side Blazor Cookie Authentication https://blazorhelpwebsite.com/ViewBlogPost/36 >>651 ありがとう!これは便利だ! クッキー発行前に自分のやりたい認証コードを書けば、なんでも使いまわせちゃうぜ! >>651 そのサイトはいいかんじにまとまってるサンプルがあるね ブックマークしておいた 俺は逆に、Blazorで登録してもらったユーザー情報で他のnode等で作ったページにログインできるような技が知りたいな 先の技と似た方法でASP.Net Coreでクッキーだけ発行してnodeでも同じクッキーを使うのもいいけど、データベースを使い回す方法も見てみたい だけどデータベースを見たところ、パスワードハッシュらしきものはすぐ見つかるもののソルト等がどこにあるのかよくわかんない もしかしてハッシュに見える一部分がソルトなのか?パスワードハッシュらしきものは、どうやって生成されてる値なんだろう・・・・ Blazor WebAssembly in .NET 5 is two to three times faster for most scenarios. For more information, see ASP.NET Blog: ASP.NET Core updates in .NET 5 Release Candidate 1. .NET 5でかなり速くなるんだな 楽しみ Blazorで作ったうちのサイトに、大量のユーザ登録をする奴が出てきた 掲示板みたいなものがあるので、宣伝の書き込みに使いでも使うんだろうか?よくわからないけど不気味で仕方がない 大量登録を防いだり、ユーザーの行動をスコア化したりBANしたり、何かBlazorでできる手軽な対策ってない? >>657 しっかりやるならSMS認証だろうけど手軽ではないね。 手軽なのはメールアドレスとIPアドレスベース 登録時のメールアドレス認証はやってる? 同じIPから一定日数は登録できないようにすれば、 固定回線からの登録はある程度防げると思う ISP次第で固定でもIP変更できちゃうけど ただの宣伝目的ならそういうめんどうな 手順必要なところは避けてほか行くんじゃないか Azure AD使ったら多要素認証も気軽に実装できるよ >>659 そうなのか 全部クラウドでやるのは高すぎて避けたい。 認証だけAzure AD使うのってありなのかな Blazorに限る話ではないかも知れないけど… ServerにWeatherForecastController作って、 ClientからアクセスするときはGetFromJsonAsync<WeatherForecast>(“WeatherForecast”)とControllerの名前を「文字列」で引数に入れる。 これがせっかくここまでC#の型を使えてるのになんか無駄だなあと。 Shareにあるクラスは参照できてるのに、 なんでServerへのアクセスは文字列なのか。 ここタイプミスしたらオジャンじゃん。 外部のAPIならわかるけど、同じソリューション内のプロジェクトなんだから WeatherForecastContoroller.GetAll WeatherForecast() でええやんと思ってしまう。 gRPCとか使ったらSOAPチックなことできるの? >>663 ハードコード避けたいときはnameofとかtypeof使うといいとかsampleかいてあったような。 //return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1& ;tabs=visual-studio Web APIのTutorialのコード。 References the GetTodoItem action to create the Location header's URI. The C# nameof keyword is used to avoid hard-coding the action name in the CreatedAtAction call. >>663 上みたいな感じで Controllerの名前もなんらかのmethodでstringとして取得できるんじゃないかな てかWebAPIならAttribute Routingの方がよくね? >>664 nameofありだね スペルミス減りそう >>666 Attribute Routing調べたけど API側でルーティングを文字列で指定してる。 文字列をやめたいんだけど… メソッド名があるんだからメソッド名をそのまま使いたい。 そもそもREST APIの原則に囚われすぎな気がする。 毎回あんなURIを考えるのって大変じゃないか? 汎用性を考えるならわかるけど。 >>663 それコントローラー名じゃなくてUriでしょ DefaultRoute使えばuriとコントローラー名は一致するからそれでいいけど プロジェクトの都合で URIとコントローラー名異なるようにすることはあるでしょ。 >>666 言ってることが分かったかも API側で [Route(“GetHogeData”)] public Hoge GetHogeData(){} にするってことかいな? すまんリロードせずに書き込んでしまった そゆことね よくおぼえてないまま書くけど ルーティングの機能でコントローラー名とアクション名から アドレス作れたはずだから それを渡せばいいんじゃないの それだとnameofも利用できると思うし カスタムルーティングの場合でも問題なくいけると思う razorファイルに書いたC#がバリバリ動くのは感動すら覚えるが 最初に作られるサンプルサイトがショボショボすぎてこれは普及しないだろうなあ…とおもう。 入力もできるグリッド、DateTimePicker、TreeView、モーダル こういうのをサンプルに組み込んでもらわないと いちいちググるはめになる。 >>672 いやいやテンプレートに機能満載されてるほうが困るわ そんな複雑なUI作られても使う側が困るしなぁ シンプルイズベストですわ MVCでいいじゃないの >>672 お前はサンプルとテンプレートを混同している いろんなGUIサンプルはGitHubに置いておいてくれればいいね Wizardで生成されたら困る テンプレートでもサンプルでもどっちでも良くて、 MSがそういうものを用意しないと流行らないと言っている。 そんなことをこんなところで言っても仕方ないけどな。 WebFormsぽとぺたさんにも使ってもらうなら要るかもねえ >>677 ウィザードでサンプル出力しろという主張だったのに都合よく主張変えるなよ MSはWebFormsの代替としてBlazor使えって言ってる。 使いたいがこれではハードル高いだろ。 外部の会社が作ってるUIコンポーネント集入れないと使い物にならん。 仕組み上ポトペタは無理としても、それに代わる何かがないと、学習コストがかかって採用されないよという話。 ウィザードでゴリゴリの画面が作られのもまずいというのはわかるが、さすがにシンプルすぎやせんか。 単に自分の能力が足りてないだけじゃないの まー言うとするなら WebFormsのように基本的なコントロールは入れてほしい って感じ? サンプル云々の話じゃないよね たぶん WebFormsってそんなに便利だったっけ? あっという間にMVCに置き換えられたからわからねえや MVCにすら移行出来なかった層の 最後の救済目的がBlazorだからだろう。 >>681 リッチUIを最速で作りたいならWPF使えばいい 外から使い人にはWindows tabletとか持たせるだけ。 Bootstrapでだいぶ敷居さがったがCSSベースのデザインはめんどくさい >>683 HTML, CSSをよく知らない人、デザイン苦手な人には便利だったんだと思う ただ細かいデザイン制御ができない、吐き出すhtmlが汚いから ASP.NET MVCにとってかわられた Entity Framework使ってる人、Migration機能は使ってる? Migration使うほうが複雑になる気がするんだけどどうだろう Migrationのメリットが見えてこない PostgreSQLのpgAdminとか RDBの管理ツールで直接、スキーマの作成や変更をしてる。 Ruby on Rails では、SQLite, PostgreSQL, MySQL の3大DB を、1つのファイルで定義できる(抽象化)。 Migration 用のファイルも、自動的に作られる Roll Back もできる Scaffold という魔法の呪文で、CRUD アプリが自動的にできる >>686 アプリでSqliteなどのローカルDBでは凄く有効だが、サーバー弄れる場合は手動でいいと思うわ >>687 rollbackもできるというけどそれがMigrationの主要機能だし rollbackできなかったら意味ないでしょ Entity FrameworkのMigrationにもrollbackある。もちろんScaffoldもある Rubyのコマンド見てみたがEFのMigrationと似てる気がした。 ORMが履歴を持つことでrollbackできるようになる半面、長ったらしいコードが 生成されその記述を理解しないといけなくなる。 DB側のカラムに制約とかデータ型とか細かく設定するべきだが ORM使わずにpgAdmin, SQL Workbenchでやるほうが速いしわかりやすい。 さらにORM経由は操作できる範囲が限定される。 SQL使ってできる操作>ORM使ってできる操作。 >>687 RubyおじはASP.NET Coreは使えてるのか? ASP.NET Core使えるなら低速なRails, Rubyなんて使わなくていいだろ >>689 Sqlite以外ではMigration使ってないのか 本当にMigrationは誰得の機能かわからないわ それ言うならそもそもEntity Frameworkの存在意義自体がない気もするけど あー、SQL自動生成だけでも意義はあるか まぁ、単に開発中のコードとデータベース同期を楽にする機能でしかないから 使いたければ使えばいいし データベース熟知してて自分でDBスキーマ決めたいのならそうすればいいだけの話 いちいち手作業でDBにつないで順番を間違えないように慎重にSQL実行して… 後で困らないようにどんなSQLを実行したかリリース履歴台帳に記入して… 手作業だからテストという概念もなくて… これちょっとアナログすぎだしめんどくさいし間違えやすいんじゃねえか?って疑問を持つところがスタート地点 疑問すら持てないなら開発者として必要なセンスが欠けてる 紙とハンコのほうが性に合うオールドタイプならそのまま手作業を続けてどうぞ ここは未開の原始時代 実行するSQLはファイルにしよう SQLファイルのアップロードと実行はshellで自動化しよう shellをソースコードと同じ所でバージョン管理したら便利だな shellがバグってたらやばいから本番レプリケーションで事前にテストしよう 同じshellを間違えて実行したらやばいから実行履歴もテーブルで管理して多重実行を避けよう これ全部1つのコマンドでできるように整備しよう このように不便さを自動化で解消できたならすこしマシになった段階 産業革命の始まり 便利だけど色々と拙くまだまだコスパが悪い shellは便利だけどオレオレ感が強くて属人生が高く保守しにくいな なにか開発者間で共通認識となるフレームワークがあれば便利だろうな MigrationをC#で書きたい場合もあるよな そもそもshellの実行すらめんどくさいんじゃないか などなど細かい不満点を解消していって出来上がったのがMigration系フレームワーク ここがひとまずのゴール より洗練されてエコな現代テクノロジの集大成 ORM全般に言えることだけど、複雑になってくると使い物にならなくなる。 sansanもEFをDapperに置き換えたって発表してた。 正規化するのが正解じゃない時もあるし、サロゲートキーで対応 途中で書き込んでしまった。 サロゲートキーだけではうまくいかない場合もある。 >>695 CQRSのCではEFのほうが遥かに洗練されてる Qでは高速で複雑なSQLを書きたくなる場合が増えてくるのでDapperが有利になる 多くの開発者が複雑化したQのせいでEFは使えないと思い込んでいるがEFはDapperと共存可能だ 更にいうと昔と違ってEFは随分と速くなった ネイティブSQLもサポートしている Dapperに頼らなくてもQを上手く実装することができるようなってる >>693 凄くどうでもいい事で申し訳ないがIDがSQL >>697 もう全然Blazor関係ない話で恐縮だけど… 大抵のDBって命名規約がスネークケースだよね。 しかも大文字か小文字のどっちか。 一度モデルファーストで作ったテーブルはキャメルケースで作られるから、生のSQL発行しようとしたらカラムIDを全部ダブルクォーテーションで括る必要があって苦労した苦い思い出がある。 LINQと生SQLどっちも使うとなるとこの問題に引っかかる。 自分のEFの知識が数年まえで止まってるのでいまはいい仕組みがあるのかな。 Dapperはパラメータで勝手にマッピングしてくれるから助かる。 >>699 postgresqlは特殊な仕様だからハマりやすいね なのでNpgsqlのEFにはUseSnakeCaseNamingConventionというオプションがある 他のDBは特にハマった記憶がない ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる