【本命】Blazor スレ1【真打】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/07/20(月) 23:36:36.67ID:td0HkrQz
混沌を極めるWebアプリケーション界隈に現れた一筋の光明
型無し言語 JavaScript の悪夢を打ち払い
林立するエコシステムの亡霊を退散
アプリケーション開発者の希望となるMVVMを引っ提げて登場した真のSPA開発環境

Blazorを語る者よ、集え!

ASP.NET Core Blazor の概要
https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-3.1
604デフォルトの名無しさん
垢版 |
2020/09/24(木) 18:26:57.96ID:BAyxlToW
中途半端Bootstrapより、なんかまともなもんを一つ移植して欲しいな
2020/09/24(木) 19:48:01.41ID:ipSsIIJF
WebAppは、下火になるとしても、独特の面白さがある。
ビビッドアーミーなんかも、Webからすぐに始められるから、インストール型
のゲームよりも罪悪感が少ないため、ヒットした可能性がある。
2020/09/24(木) 19:51:18.25ID:I6ftHOh5
>>596
最近までasync/awaitもなかったんやで・・推して知るべし
自分は最近仕事で使ったからReactはギリ推せる
なぜかというとhooksが導入されたり関数コンポーネントが主流になったりで
React周りの記述量が大幅に減ったから
Reduxなんか挫折する人が出るくらい記述量が無駄に多かったらしい
それもRedux-Toolkitでずいぶん楽になったようだ
調べているうちに新旧のコードを見かけるけど
旧Reduxで組んでた人はよく発狂しなかったと感嘆した
まだまだ記述量が減る余地はあると思うから期待したい
BlazorはRedux-Toolkit以上の使いやすい状態管理が提供されれば
仕事でも使ってみたい
ReactとVueは選定するとき迷ったが、サポートしているのが
FaceBookとコミュニティでは巨人の肩に乗るほうがよいと判断した
Augularは構文デザインになぜか吐き気を覚えたので選定から外した
607デフォルトの名無しさん
垢版 |
2020/09/24(木) 20:22:47.35ID:nbhc13gU
みなさん貴重なご意見ありがとう。

Web系のひとたち、俺たちは最先端のことやってるぜ感出してるけど、
昔のVBAみたいな、あとで誰も手をつけれてないようなシロモノを職人技で苦労しながら作ってるような気がしてて…
そういうのは仕事では使いたくない…

あとBlazorに望むこととしては、
WinFormsやWebFormsみたいに標準のコントロールを充実させてほしい。
DataGridViewやTreeViewが海外のサードパーティ製にしかないのはこれまたお仕事では困る…
ぼちぼちGrapeCityあたりが出してくれそうだが…
608585
垢版 |
2020/09/24(木) 21:43:39.63ID:80+YcRw8
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 を抑えておけばよい
2020/09/24(木) 22:08:01.62ID:BrtCX/UE
サーバー版Blazorのシステム納品間近
サーバーサイドとクライアントサイドをC#同一ソースコードで記述できるから開発効率高いね
2020/09/24(木) 23:51:59.19ID:xLAA4wLj
>>609
Blazor ServerのApplication Serverは何台構成?
同時使用ユーザー数の規模はどれくらい?

良い言語C#でclient-server両方かけるっていうメリットは大きい
611デフォルトの名無しさん
垢版 |
2020/09/25(金) 10:34:56.50ID:4ovx1Tzj
>>607
web系はアホが多い

過去に失敗した経験に学ばず同じことを繰り返してるし
2020/09/25(金) 12:17:21.21ID:0u8f+Kls
ウェブ系は雇用の安定感が無いから新しい事やってます感をアピールしないと次がないのよ
だから同じようなことを言い方や見せ方を変えながら繰り返してる
613デフォルトの名無しさん
垢版 |
2020/09/25(金) 14:05:33.75ID:YUW4E6Ob
>>607
サードパーティ製コントロールって
JS & CSSのラッパーコントロールですよ。C#の。

なので、コントロール欲しければ、普通の配置して、
JSをC#から interopすればよろし。
614デフォルトの名無しさん
垢版 |
2020/09/25(金) 14:43:52.18ID:48PJbryO
俺的にはまず、Blazor Serverside + Blazor Webassemblyの組み合わせで使えるようにして欲しいな
これができないことには、いつまで経ってもJavaScriptから逃げられん
Blazor Serversideでログイン関連等の基本的な部分を作り、Blazor Webassemblyでウィジェットのようなものを作るような、そういう組み合わせができるように改良して欲しい
2020/09/25(金) 16:00:21.21ID:9Elo2SnL
>>614
2020/09/26(土) 18:22:12.35ID:3y/76fvD
MS新フレームワークBlazor、Lighthouseで23点を叩き出すw
https://mevius.5ch.net/test/read.cgi/tech/1596698340/
617デフォルトの名無しさん
垢版 |
2020/09/30(水) 02:31:21.68ID:vAPTvbQT
WebAssemblyとJavaScriptの処理速度を比較してみる
https://qiita.com/mink0212/items/c7fc8d1e7c036b706544

やはりhtml domを突いて画面だしてる現状では意味ないかも...
618デフォルトの名無しさん
垢版 |
2020/10/04(日) 06:42:57.11ID:hlVRy1T+
業務アプリならsilverlightを温めとけばよかったのよ
ria service も廃止してAzure売り出す始末でタチ悪すぎるわ

どうせまた3年でオワコンになり、再開発させられる羽目になるんだよな
wcfとかどうなるんだよ
2020/10/04(日) 13:10:28.51ID:GbegNZG9
WCFはまだ現役じゃろ
Remotingは終わったけど
2020/10/04(日) 13:25:48.26ID:eUP8i5sY
>>619
Remotingは「レガシーとされている」状態ね。
621デフォルトの名無しさん
垢版 |
2020/10/04(日) 13:26:23.01ID:ceP54wF6
Silverlight はFlashと一緒で消える運命でしょ

Blazorは Server版は既存の記述組み合わせたものだし
WebAssembly もマイクロソフトが単独でやってるわけでもないし
すぐには消えなさそうだけど
それも世の中の技術の進歩とトレンド次第かな
2020/10/04(日) 13:39:56.64ID:hibiyDxp
全く性質が違うからねー
Blazorがいつまで続くかはわからないがクライアントサイドC#はずっと残ると思う
Webasm自体が続く限りは
2020/10/04(日) 13:40:59.36ID:QfJSems3
>>619
WCFからgRPCへ乗り換えを勧めているらしいぞ
624デフォルトの名無しさん
垢版 |
2020/10/04(日) 14:22:11.82ID:S53suDDq
ASP.NET CoreのRazor Pagesと
ASP.NET CoreのMVCと
Blazor WebAssemblyの使い分けがよくわからない。

ページ単位でURLを持たせたい場合は
Blazor WebAssemblyは使えない?
2020/10/04(日) 14:30:19.90ID:eUP8i5sY
>>624
使えるよ
2020/10/04(日) 16:06:30.15ID:k2QVBKjJ
ポストバックを多用する昔ながらの単純なウェブアプリならPages
ビューを開いた後にクライアントサイドでゴリ押しする少し複雑なウェブアプリならMVC
MVCでクライアントサイドが管理しきれない規模の高難易度ウェブアプリならBlazor

MVCが一番バランスいい
Blazor、というかSPAにするほど複雑なウェブアプリが滅多にない
SPAはPgadmin、CodeServerみたいなガチめのアプリのための技術
2020/10/04(日) 16:18:17.46ID:XxJyPnkf
MVCはどっちかというとWeb API向け。UIがあるんならRazor Pagesが無難。
2020/10/04(日) 16:37:36.76ID:k2QVBKjJ
そうかな
テンプレートは1回表示して終わりだからMVCのほうがシンプルでいいと思う
ポストバックするならPagesのほうがやりやすいけどね
2020/10/04(日) 16:55:49.81ID:Bm4b1+OQ
uno projectってどうなんだろうか?
2020/10/04(日) 16:57:01.23ID:XxJyPnkf
>>628
テンプレート?
2020/10/04(日) 16:57:59.06ID:XxJyPnkf
少し規模が大きくなると、MVCはどこでどのエンドポイントが呼ばれているかカオスになるからね…
2020/10/04(日) 17:04:51.79ID:XxJyPnkf
https://stackoverflow.com/a/50793220/8778560
2020/10/04(日) 17:05:06.55ID:XxJyPnkf
これ以上はスレチかな
2020/10/04(日) 21:32:49.31ID:GbegNZG9
>>620
MSの言い方は知らんけど.NET Coreで使えないんだからもう終わりでしょ
2020/10/04(日) 23:12:02.56ID:XxJyPnkf
>>634
.NET Frameworkでは使えるし、Windowsが生きている限りサポートされ続けるから「終わった」は言い過ぎやろ
636デフォルトの名無しさん
垢版 |
2020/10/04(日) 23:50:16.30ID:hlVRy1T+
今、wpfをクライアントとしてサーバーのsqlserverにcrudするには何が主流なの?
wcf?asp.net mvc?
2020/10/05(月) 00:13:15.07ID:74+SvaBs
いまだとWeb APIになるんじゃない
638デフォルトの名無しさん
垢版 |
2020/10/05(月) 03:23:01.66ID:xLtRIUFK
>>635
新しく立ち上げるプロジェクトで使用できないなら「終わった」でいい
VB6は終わった技術じゃないというならそれでもいいが
2020/10/05(月) 04:58:38.75ID:jVmqJw/8
>>638
使用できるでしょ。.NET FrameworkはWindowsのサポート期限と同じなんだから。
2020/10/05(月) 08:49:16.96ID:2yT5w7wg
>>638
いきなりは終わらないだろ
2020/10/05(月) 19:08:30.24ID:xLtRIUFK
>>639
言葉足らずですまん
.NET Core で使えない==新しく立ち上げるプロジェクトで使用できない
とすっ飛ばして書いた。
.NET Frameworkの保守で使う新規プロジェクトなら使えるね
2020/10/06(火) 17:17:17.54ID:uoIpHtXe
Blazorはコンパイル時間が痛いな
2020/10/06(火) 18:02:17.12ID:107CVYb8
>>642
コンパイルなんて数秒で終わるだろ
644デフォルトの名無しさん
垢版 |
2020/10/15(木) 21:39:41.60ID:tKmwyqG6
Blazor WebAssemblyをテンプレートからいろいろいじってみたけど、
もうちょいテンプレートしっかり作ってほしい。
せめてCRUDのテンプレ欲しかったなあ。
あとClient側、trycatchくらい書いとけよと。

あととにかくデバッグがうまくいかない
ctrl+shift+iだったかな、これ押すと一応デバッグできるようになるんだけど、そんなん分かるか!ってかんじ。
2020/10/16(金) 01:17:51.30ID:SmZ3YqvD
>>644
ドキュメント読めよ
2020/10/16(金) 22:21:03.61ID:2144JyIi
>>644
scaffoldなかったっけ?
2020/10/18(日) 16:09:45.98ID:EBpdGRvy
Blazor使って作られたサービスってある?
調べても使ってみたとかばっかでる
648デフォルトの名無しさん
垢版 |
2020/10/18(日) 17:03:18.35ID:Yx1P9/Gs
>>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で十分ってことかもしれない
2020/10/18(日) 17:16:32.49ID:EBpdGRvy
>>648
なるほどねー
たしかにMVCで十分なシーン多いわ

ありがとう助かりました
650デフォルトの名無しさん
垢版 |
2020/10/18(日) 19:22:38.17ID:cFA8jjUJ
ユーザー名+パスワードのハッシュの入った既存のデータベースを、Blazorのユーザー認証に使い回す方法ってどっかに紹介されてない?
2020/10/18(日) 19:48:37.30ID:nqKRQR9b
>>650
A Demonstration of Simple Server-side Blazor Cookie Authentication
https://blazorhelpwebsite.com/ViewBlogPost/36
652デフォルトの名無しさん
垢版 |
2020/10/18(日) 21:49:08.25ID:cFA8jjUJ
>>651
ありがとう!これは便利だ!
クッキー発行前に自分のやりたい認証コードを書けば、なんでも使いまわせちゃうぜ!
653デフォルトの名無しさん
垢版 |
2020/10/19(月) 11:41:11.48ID:32Wztry8
>>651
そのサイトはいいかんじにまとまってるサンプルがあるね
ブックマークしておいた
2020/10/19(月) 13:14:16.03ID:IuaIFexr
俺は逆に、Blazorで登録してもらったユーザー情報で他のnode等で作ったページにログインできるような技が知りたいな
先の技と似た方法でASP.Net Coreでクッキーだけ発行してnodeでも同じクッキーを使うのもいいけど、データベースを使い回す方法も見てみたい
だけどデータベースを見たところ、パスワードハッシュらしきものはすぐ見つかるもののソルト等がどこにあるのかよくわかんない
もしかしてハッシュに見える一部分がソルトなのか?パスワードハッシュらしきものは、どうやって生成されてる値なんだろう・・・・
2020/10/19(月) 13:27:10.55ID:kIQ4aN8p
OIDC
656デフォルトの名無しさん
垢版 |
2020/11/02(月) 05:11:15.47ID:mSt0AvyI
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でかなり速くなるんだな
楽しみ
657デフォルトの名無しさん
垢版 |
2020/11/02(月) 12:21:12.29ID:U50fzrLu
Blazorで作ったうちのサイトに、大量のユーザ登録をする奴が出てきた
掲示板みたいなものがあるので、宣伝の書き込みに使いでも使うんだろうか?よくわからないけど不気味で仕方がない
大量登録を防いだり、ユーザーの行動をスコア化したりBANしたり、何かBlazorでできる手軽な対策ってない?
2020/11/02(月) 13:05:27.82ID:mSt0AvyI
>>657
しっかりやるならSMS認証だろうけど手軽ではないね。
手軽なのはメールアドレスとIPアドレスベース

登録時のメールアドレス認証はやってる?

同じIPから一定日数は登録できないようにすれば、
固定回線からの登録はある程度防げると思う
ISP次第で固定でもIP変更できちゃうけど
ただの宣伝目的ならそういうめんどうな
手順必要なところは避けてほか行くんじゃないか
2020/11/02(月) 17:11:37.77ID:GLYVmDWa
Azure AD使ったら多要素認証も気軽に実装できるよ
2020/11/02(月) 22:47:48.58ID:mSt0AvyI
>>659
そうなのか
全部クラウドでやるのは高すぎて避けたい。
認証だけAzure AD使うのってありなのかな
2020/11/03(火) 02:39:12.95ID:nKKwywFG
>>660
もちろんありだよ
2020/11/03(火) 19:52:22.74ID:xAcGzDoa
>>657
迷惑行為なら通報したら?
663デフォルトの名無しさん
垢版 |
2020/11/04(水) 23:24:27.00ID:QiewC8QL
Blazorに限る話ではないかも知れないけど…

ServerにWeatherForecastController作って、
ClientからアクセスするときはGetFromJsonAsync<WeatherForecast>(“WeatherForecast”)とControllerの名前を「文字列」で引数に入れる。

これがせっかくここまでC#の型を使えてるのになんか無駄だなあと。
Shareにあるクラスは参照できてるのに、
なんでServerへのアクセスは文字列なのか。

ここタイプミスしたらオジャンじゃん。

外部のAPIならわかるけど、同じソリューション内のプロジェクトなんだから
WeatherForecastContoroller.GetAll WeatherForecast() でええやんと思ってしまう。

gRPCとか使ったらSOAPチックなことできるの?
664デフォルトの名無しさん
垢版 |
2020/11/05(木) 00:12:14.94ID:kkWOG+/P
>>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.
2020/11/05(木) 00:15:02.65ID:kkWOG+/P
>>663
上みたいな感じで
Controllerの名前もなんらかのmethodでstringとして取得できるんじゃないかな
2020/11/05(木) 00:17:59.90ID:4xcihAoT
てかWebAPIならAttribute Routingの方がよくね?
667デフォルトの名無しさん
垢版 |
2020/11/05(木) 08:21:04.21ID:+cvvBSkt
>>664
nameofありだね
スペルミス減りそう

>>666
Attribute Routing調べたけど
API側でルーティングを文字列で指定してる。
文字列をやめたいんだけど…
メソッド名があるんだからメソッド名をそのまま使いたい。

そもそもREST APIの原則に囚われすぎな気がする。
毎回あんなURIを考えるのって大変じゃないか?

汎用性を考えるならわかるけど。
2020/11/05(木) 08:27:25.47ID:/DSStsR5
>>663
それコントローラー名じゃなくてUriでしょ

DefaultRoute使えばuriとコントローラー名は一致するからそれでいいけど
プロジェクトの都合で
URIとコントローラー名異なるようにすることはあるでしょ。
669デフォルトの名無しさん
垢版 |
2020/11/05(木) 08:33:38.65ID:+cvvBSkt
>>666
言ってることが分かったかも
API側で
[Route(“GetHogeData”)]
public Hoge GetHogeData(){}
にするってことかいな?
670デフォルトの名無しさん
垢版 |
2020/11/05(木) 08:34:41.52ID:+cvvBSkt
すまんリロードせずに書き込んでしまった
そゆことね
2020/11/05(木) 08:41:56.35ID:/DSStsR5
よくおぼえてないまま書くけど
ルーティングの機能でコントローラー名とアクション名から
アドレス作れたはずだから
それを渡せばいいんじゃないの
それだとnameofも利用できると思うし
カスタムルーティングの場合でも問題なくいけると思う
672デフォルトの名無しさん
垢版 |
2020/11/05(木) 23:38:47.81ID:xnSUjXs4
razorファイルに書いたC#がバリバリ動くのは感動すら覚えるが
最初に作られるサンプルサイトがショボショボすぎてこれは普及しないだろうなあ…とおもう。

入力もできるグリッド、DateTimePicker、TreeView、モーダル
こういうのをサンプルに組み込んでもらわないと
いちいちググるはめになる。
2020/11/05(木) 23:44:26.66ID:uHESSmSw
>>672
いやいやテンプレートに機能満載されてるほうが困るわ
2020/11/05(木) 23:49:29.95ID:nJQizfvu
そんな複雑なUI作られても使う側が困るしなぁ
シンプルイズベストですわ
MVCでいいじゃないの
2020/11/05(木) 23:52:06.81ID:E7F1ZqHp
>>672
お前はサンプルとテンプレートを混同している
676デフォルトの名無しさん
垢版 |
2020/11/06(金) 00:03:35.28ID:2c+qTMiR
いろんなGUIサンプルはGitHubに置いておいてくれればいいね
Wizardで生成されたら困る
677デフォルトの名無しさん
垢版 |
2020/11/06(金) 08:08:26.77ID:IN01S+R+
テンプレートでもサンプルでもどっちでも良くて、
MSがそういうものを用意しないと流行らないと言っている。
そんなことをこんなところで言っても仕方ないけどな。
678デフォルトの名無しさん
垢版 |
2020/11/06(金) 11:00:07.02ID:PZBOyE9X
コピペしかできない人なんだろう
2020/11/06(金) 11:04:30.20ID:ifaT2orV
WebFormsぽとぺたさんにも使ってもらうなら要るかもねえ
2020/11/06(金) 11:06:53.95ID:FaBRf3CH
>>677
ウィザードでサンプル出力しろという主張だったのに都合よく主張変えるなよ
681デフォルトの名無しさん
垢版 |
2020/11/06(金) 12:30:57.02ID:IN01S+R+
MSはWebFormsの代替としてBlazor使えって言ってる。
使いたいがこれではハードル高いだろ。
外部の会社が作ってるUIコンポーネント集入れないと使い物にならん。

仕組み上ポトペタは無理としても、それに代わる何かがないと、学習コストがかかって採用されないよという話。

ウィザードでゴリゴリの画面が作られのもまずいというのはわかるが、さすがにシンプルすぎやせんか。
2020/11/06(金) 12:39:05.16ID:weK94EqQ
単に自分の能力が足りてないだけじゃないの

まー言うとするなら
WebFormsのように基本的なコントロールは入れてほしい
って感じ?

サンプル云々の話じゃないよね

たぶん
2020/11/06(金) 12:42:45.58ID:hgF+gIaZ
WebFormsってそんなに便利だったっけ?
あっという間にMVCに置き換えられたからわからねえや
2020/11/06(金) 13:08:43.58ID:f02e0Zl0
MVCにすら移行出来なかった層の
最後の救済目的がBlazorだからだろう。
685デフォルトの名無しさん
垢版 |
2020/11/06(金) 13:11:07.93ID:2c+qTMiR
>>681
リッチUIを最速で作りたいならWPF使えばいい
外から使い人にはWindows tabletとか持たせるだけ。
Bootstrapでだいぶ敷居さがったがCSSベースのデザインはめんどくさい

>>683
HTML, CSSをよく知らない人、デザイン苦手な人には便利だったんだと思う
ただ細かいデザイン制御ができない、吐き出すhtmlが汚いから
ASP.NET MVCにとってかわられた
686デフォルトの名無しさん
垢版 |
2020/11/07(土) 22:13:36.96ID:fFUf4t5z
Entity Framework使ってる人、Migration機能は使ってる?

Migration使うほうが複雑になる気がするんだけどどうだろう
Migrationのメリットが見えてこない

PostgreSQLのpgAdminとか
RDBの管理ツールで直接、スキーマの作成や変更をしてる。
2020/11/07(土) 23:04:04.86ID:/xSkaoCp
Ruby on Rails では、SQLite, PostgreSQL, MySQL の3大DB を、1つのファイルで定義できる(抽象化)。
Migration 用のファイルも、自動的に作られる

Roll Back もできる

Scaffold という魔法の呪文で、CRUD アプリが自動的にできる
2020/11/07(土) 23:14:14.61ID:WU4iiwmR
>>687
ルビーはどうでもいい
2020/11/07(土) 23:33:27.49ID:z61Fk2tn
>>686
アプリでSqliteなどのローカルDBでは凄く有効だが、サーバー弄れる場合は手動でいいと思うわ
690デフォルトの名無しさん
垢版 |
2020/11/08(日) 05:36:39.88ID:t+zVbDF+
>>687
rollbackもできるというけどそれがMigrationの主要機能だし
rollbackできなかったら意味ないでしょ
Entity FrameworkのMigrationにもrollbackある。もちろんScaffoldもある

Rubyのコマンド見てみたがEFのMigrationと似てる気がした。
ORMが履歴を持つことでrollbackできるようになる半面、長ったらしいコードが
生成されその記述を理解しないといけなくなる。

DB側のカラムに制約とかデータ型とか細かく設定するべきだが
ORM使わずにpgAdmin, SQL Workbenchでやるほうが速いしわかりやすい。
さらにORM経由は操作できる範囲が限定される。
SQL使ってできる操作>ORM使ってできる操作。
691デフォルトの名無しさん
垢版 |
2020/11/08(日) 05:42:09.04ID:t+zVbDF+
>>687
RubyおじはASP.NET Coreは使えてるのか?
ASP.NET Core使えるなら低速なRails, Rubyなんて使わなくていいだろ

>>689
Sqlite以外ではMigration使ってないのか
本当にMigrationは誰得の機能かわからないわ
2020/11/08(日) 09:47:27.03ID:SqlrOE3Q
それ言うならそもそもEntity Frameworkの存在意義自体がない気もするけど
2020/11/08(日) 10:00:24.59ID:SqlrOE3Q
あー、SQL自動生成だけでも意義はあるか

まぁ、単に開発中のコードとデータベース同期を楽にする機能でしかないから
使いたければ使えばいいし
データベース熟知してて自分でDBスキーマ決めたいのならそうすればいいだけの話
2020/11/08(日) 11:17:03.03ID:+pLcijcy
いちいち手作業でDBにつないで順番を間違えないように慎重にSQL実行して…
後で困らないようにどんなSQLを実行したかリリース履歴台帳に記入して…
手作業だからテストという概念もなくて…
これちょっとアナログすぎだしめんどくさいし間違えやすいんじゃねえか?って疑問を持つところがスタート地点
疑問すら持てないなら開発者として必要なセンスが欠けてる
紙とハンコのほうが性に合うオールドタイプならそのまま手作業を続けてどうぞ
ここは未開の原始時代

実行するSQLはファイルにしよう
SQLファイルのアップロードと実行はshellで自動化しよう
shellをソースコードと同じ所でバージョン管理したら便利だな
shellがバグってたらやばいから本番レプリケーションで事前にテストしよう
同じshellを間違えて実行したらやばいから実行履歴もテーブルで管理して多重実行を避けよう
これ全部1つのコマンドでできるように整備しよう
このように不便さを自動化で解消できたならすこしマシになった段階
産業革命の始まり
便利だけど色々と拙くまだまだコスパが悪い

shellは便利だけどオレオレ感が強くて属人生が高く保守しにくいな
なにか開発者間で共通認識となるフレームワークがあれば便利だろうな
MigrationをC#で書きたい場合もあるよな
そもそもshellの実行すらめんどくさいんじゃないか
などなど細かい不満点を解消していって出来上がったのがMigration系フレームワーク
ここがひとまずのゴール
より洗練されてエコな現代テクノロジの集大成
695デフォルトの名無しさん
垢版 |
2020/11/08(日) 11:27:42.43ID:ywUIYUdi
ORM全般に言えることだけど、複雑になってくると使い物にならなくなる。
sansanもEFをDapperに置き換えたって発表してた。

正規化するのが正解じゃない時もあるし、サロゲートキーで対応
696デフォルトの名無しさん
垢版 |
2020/11/08(日) 11:32:46.67ID:ywUIYUdi
途中で書き込んでしまった。
サロゲートキーだけではうまくいかない場合もある。
2020/11/08(日) 11:52:36.61ID:+pLcijcy
>>695
CQRSのCではEFのほうが遥かに洗練されてる
Qでは高速で複雑なSQLを書きたくなる場合が増えてくるのでDapperが有利になる

多くの開発者が複雑化したQのせいでEFは使えないと思い込んでいるがEFはDapperと共存可能だ

更にいうと昔と違ってEFは随分と速くなった
ネイティブSQLもサポートしている
Dapperに頼らなくてもQを上手く実装することができるようなってる
2020/11/08(日) 12:10:46.89ID:phcs9Wf3
>>693
凄くどうでもいい事で申し訳ないがIDがSQL
699デフォルトの名無しさん
垢版 |
2020/11/08(日) 12:11:09.24ID:uTVwuNgX
>>697
もう全然Blazor関係ない話で恐縮だけど…

大抵のDBって命名規約がスネークケースだよね。
しかも大文字か小文字のどっちか。

一度モデルファーストで作ったテーブルはキャメルケースで作られるから、生のSQL発行しようとしたらカラムIDを全部ダブルクォーテーションで括る必要があって苦労した苦い思い出がある。
LINQと生SQLどっちも使うとなるとこの問題に引っかかる。

自分のEFの知識が数年まえで止まってるのでいまはいい仕組みがあるのかな。

Dapperはパラメータで勝手にマッピングしてくれるから助かる。
2020/11/08(日) 12:42:48.71ID:QCCK7Xg4
>>699
postgresqlは特殊な仕様だからハマりやすいね
なのでNpgsqlのEFにはUseSnakeCaseNamingConventionというオプションがある
他のDBは特にハマった記憶がない
701デフォルトの名無しさん
垢版 |
2020/11/08(日) 12:54:19.78ID:t+zVbDF+
>>692-693
逆だよ。CRUDにEF使うのは便利だから意味がある。
C#のコードが短くなるし直感的にかける

だがスキーマの作成、変更でEF使うとC#のコードが長くなってしまう。
SQL側でダイレクトに変更すればすむものを履歴を持たせて
C#側から操作するから手順が増える。

スキーマが自動生成のものでいいってのはDB知らない奴だな
てきとうにつくるとパフォーマンス劣化する
702デフォルトの名無しさん
垢版 |
2020/11/08(日) 12:57:37.72ID:WJSuSySW
めんどくさいことになりそうな時は、RubyやRailsを勧めよう!
2020/11/08(日) 13:03:31.26ID:t+zVbDF+
>>694
原始時代って履歴台帳なんて古臭い言葉つかってるおまえだろう

スキーマ変更したら直後にテストしてるに決まってる
あと間違いやすいのは複雑な手順をとるMigrationのほうだ
■ このスレッドは過去ログ倉庫に格納されています