Microsoft ASP.NET Blazor #02

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/11/22(日) 05:30:30.13ID:kDrPKY9d
ASP.NETのBlazorのスレッド part2です。

ASP.NET
https://dotnet.microsoft.com/apps/aspnet
ASP.NETは、クロスプラットフォーム対応、無料、オープンソースのフレームワーク
Free. Cross-platform. Open source.
A framework for building web apps and services with .NET and C#.

Introduction to ASP.NET Core Blazor
https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-5.0

【本命】Blazor スレ1【真打】
http://mevius.5ch.net/test/read.cgi/tech/1595255796/
2020/12/22(火) 13:48:16.89ID:ejjmBy56
ジジイなんで毎度すぐレス返ってくるねん?
会社に相手してくれる人おらんで暇なんかな

しゃあない、おいちゃんが何でも話聞いたるわ!
これからは無理してITの話題振らんでもええさかい、ジジイの趣味話でも聞かせてや
2020/12/22(火) 13:52:25.55ID:ejjmBy56
あ、それから無理して草生やす必要ないで?
つい背伸びしてまうのはジジイの悪いトコロやな
2020/12/22(火) 14:30:43.23ID:Vz3OkUO2
>>212
文字速度、生産性全てにおいてASP.NET+C#が上回るならなぜみんな選択しないのか。
理由は必ずあるはず…!
小規模なシステムで使うには重量級すぎるとか?

それとも最初に覚えた言語が何かにもよるのだろうか。
js系言語から入ったらC#やJavaに手を出さないものなのか。
おれは機会があればjs系言語に手を出してみたい。

>>211
そう?会社もWeb系とSIer系で分けれるのかなとおもってるんだけど。
コンプレックスははっきり言ってめちゃくちゃある。
あいつらはなんであんなにキラキラとした目でjs系技術最高っスみたいなノリなんだちくしょうめ。
2020/12/22(火) 14:32:57.24ID:Vz3OkUO2
>>216
×文字速度
○速度
2020/12/22(火) 16:09:21.58ID:3BPmpE5D
>>213
零細勤めなのは知ってるけどどれくらいの規模のシステム作ったことあるの?
ロードバランサー要らないレベル?
2020/12/22(火) 16:42:02.20ID:QfeqeAq5
>>216
なぜ選択されないのかというとWEB系ウェーイの連中がスクリプト布教活動に熱心だからだよ
やつらがnode最高です、ruby最高ですとひたすら布教するので、引っかかったユーザーがどんどん増える
C#erは布教活動にはあまり熱心ではないね
自分らが有効に活用できればOKという考え方なので、ユーザーを増やすことには興味がない
もしかするとウェブ系ウェーイみたいに雑魚が流入してくるリスクを懸念してるのかも
2020/12/22(火) 20:12:23.02ID:lwpoOL3+
毎度すぐレス返してきてお前暇なんか?言うてジジイ煽ってみたら案の定何も書き込まなくなりおった
なんちゅう打たれ弱さや…チンケなプライドが足枷になってること理解しとるんか?
2020/12/22(火) 20:54:55.78ID:Vz3OkUO2
なんだこのエセ関西弁…このスレはなんでこうイロモノ揃いなのか

>>219
たしかにやつらは得た技術を発信することを良しとしてるよな。
Web系ならではのオープンな感じ。
SIerがやったら自社ノウハウを流出させたから減給とかなりそう。
それで情報が少ないから人気のない言語、フレームワークと捉えられるのは悲しいなあ。
2020/12/22(火) 21:14:00.98ID:QfeqeAq5
そもそもASP.NETの人気がないというのが嘘だろう
個人ブログ等の記者が主観で語ってるだけのいわゆる僕が考えたフレームワークランキングだと無視されがちだけど
ちゃんとした測定を元にランキングを出してるとこだとPHPの次ぐらいにASP.NETが入ってるものが多い
2020/12/22(火) 22:12:00.01ID:yCNDLhUz
>>221-222
ASP.NETはWeb Frameworkとしては1位だ
https://www.wappalyzer.com/technologies/web-frameworks/

>>220
無視されたことに気付かないバカ
224デフォルトの名無しさん
垢版 |
2020/12/22(火) 22:21:19.03ID:yCNDLhUz
>>223のURLはもっと知名度あっていい。

node.jsが人気ないのもわかるだろ
Expressもシェア落として6%になった。
Expressはフルスタックではなく貧弱なやつだからな
node系のフルスタックはゴミみたいなのしかない

web frameworkは迷わずASP.NETでいい。
C#できないちょい無能はLaravelかRails
ガチ無能はバックエンドさわってはいけない。事故の元
2020/12/22(火) 22:22:23.43ID:lwpoOL3+
ほらな、逃げた言うて煽ったらすぐ書き込みにきよる
何より笑えるのはわいが煽って以降、ジジイがレスに草生やさなくなったことやw

要するにな、オンプレジジイはいい歳して己が確立してない精神的未熟児なんやね
他人に抗うことしか行動原理が無い、それこそが唯一のアイデンティティ…なんとも悲しくて哀れで虚しい話やないか!?

……おいちゃんな、ほんまはジジイの力になりたいんや!真剣にそう思ってる
ジジイがクラウド本気で勉強するつもりならわいが一から手取り足取り教えたる、blazorに関してもジジイと違っておいちゃんはプロやから正しい使い方伝授したるよ?どや、ええ話やろ?
2020/12/22(火) 22:58:45.41ID:Vz3OkUO2
名探偵コナンの服部みたいな嘘くさい関西弁
2020/12/22(火) 23:57:17.69ID:lwpoOL3+
お前もおいちゃんと友だちになりたいんか…?
わいは全然構へんのやけどジジイが嫉妬してまうかもしれんからジジイの返答待ちやな

ほなまた明日
2020/12/23(水) 00:26:15.53ID:JHNEfXdY
こんなこと書いてても、昼間はBlazorWasmを自在に操って、洗練されたピザの販売サイトや天気の一覧が出てくる画面を作ってるんだろうなあ
2020/12/23(水) 01:54:16.30ID:Kc0L3Url
>>228
オンプレ爺さんは?
2020/12/23(水) 07:14:04.95ID:y+ivgknh
雑談スレらしく活気があってイイネ!
2020/12/23(水) 08:14:07.90ID:L0gYl8Ji
>>229
さあ…でもたぶんオンプレ爺さんは、己を育ててくれたBlazorに感謝しているのは間違い無いだろうから、
感謝のカウントアップをしてるんじゃね。
毎日一万回、カウントボタンをクリックし、スクショを取り、エクセルに貼り付けてる。
さすがにそこまでしないか。八千回かな。
2020/12/23(水) 08:25:24.23ID:5MtFrMbi
いい話だなァ(;_;)
2020/12/23(水) 08:34:59.21ID:L0gYl8Ji
ついでに恥を偲んで聞くんだが、
よくWeb系の奴らが、型があるって素晴らしいですね♪的なことQiitaとかに書いてるけど
奴らが言う型って、もしかしてC#で言うところのクラスのこと?
2020/12/23(水) 08:43:14.91ID:iOQdV6uo
TypeScriptのことだよ
2020/12/23(水) 08:58:24.15ID:L0gYl8Ji
え、言語なのか…
2020/12/23(水) 10:03:58.22ID:h+qkHPqF
>>234
ts推しのひとのlevelはこの程度だw

>>235
言語のわけない。経験言語は?
2020/12/23(水) 12:04:39.47ID:L0gYl8Ji
>>236
し、C#の経験がありますっ
2020/12/23(水) 12:24:52.39ID:qFmqxSAt
C#やってて型が何かわからないってどゆこと?
C#ではclass, struct, enum, interface, delegate, arrayが型

型があるって素晴らしいですね♪的なのは見たことないけど
動的言語でも型がない言語は実質ないから
静的型チェックっていいですねくらいの意味じゃないのかな
239デフォルトの名無しさん
垢版 |
2020/12/23(水) 12:28:36.82ID:h+qkHPqF
これはひどい
>>236 で回答しちゃいそうになったが
C#やってて型もわからないような人が>>231のように煽ってたわけだ。
型わからないのにC#使えるわけないんだがね

これでまたはっきりしちゃったな
初心者がオンプレミスおにいさんのスキルに嫉妬して叩きまくってたということが
2020/12/23(水) 12:33:43.74ID:J8E3P1ZQ
>>239
TypeScriptは言語ですよ?
2020/12/23(水) 12:41:43.57ID:h+qkHPqF
>>240
そういう話じゃない
>>234のレスがずれまくってるということ
TSは型のある言語のひとつだが233返答として不適切ということ。

まあ質問者が煽ってたカスだったから答えはもう不要だけどね
2020/12/23(水) 12:53:44.25ID:L0gYl8Ji
>>238
いや型が何かはわかってる
js系やってる人達のいう型と同じなのかなという、煽りではなく素朴な疑問

ただjsだって文字型、数値型はあるだろうから複合型のこと言ってるのだろうか。
243デフォルトの名無しさん
垢版 |
2020/12/23(水) 13:26:24.61ID:4FZ7yNJk
文脈的にTypeScriptでも合ってるような気がする。
2020/12/23(水) 14:06:10.99ID:Kc0L3Url
文脈的にはTypeScriptはすばらしいということだね
2020/12/23(水) 14:12:41.92ID:aoAgDZ6q
>>242
変数が定義時に型を結び付けられていて、途中で別の型の値を代入すると
コンパイル段階でエラーにしてくれることを
「型があるって素晴らしい」
と言っているのだろう。例えば、C++では
int a = 5;
とした場合、aに文字列や浮動小数点値やクラスオブジェクトは代入できない。
auto a = 5;
としても、autoがintのように解釈されてaがint型の変数になるだけで
aに文字列や浮動小数点値やクラスオブジェクトは代入できない。
ところが、JSだと、
let a = 5;
とすると、aには文字列でも浮動小数点値でもオブジェクトでも何でも
代入できてしまう。
これがバグの原因になりやすいから。
2020/12/23(水) 14:17:08.23ID:O5AY10nM
typescriptは厳密すぎるとは思うけどね
もうちょっと緩くする的な議論もあると聞く
247デフォルトの名無しさん
垢版 |
2020/12/23(水) 14:45:16.52ID:4FZ7yNJk
ウェブ系で型があるって素晴らしいってことは、型が無い世界に居たって事で。

Javascriptつこてて、TypeScriptに出会った感が強い。
2020/12/23(水) 15:20:49.21ID:qFmqxSAt
>>242
それはC#における型はわかってても
言語に依存しない型という概念を理解してないってことだったりしない?

JS使ってる人たちが言う型とC#の型に違いがあるかというと違いはない
型の種類や適用されるルールに違いがあるだけで型という概念は同じ
2020/12/23(水) 18:02:10.45ID:L0gYl8Ji
>>245
>>248
ありがとう
jsにもプリミティブ型はあるけど、コンパイラによる型チェックがなかったってことかな。

逆に型チェックなしでよく頑張ってこれたな…
数値計算とかブラウザ上でやることがないから問題なかったのかな。
2020/12/23(水) 18:45:31.75ID:aoAgDZ6q
>>249
[追加]
JSの場合、オブジェクトは、
let a = {
 age : 12;
};
として作製するが、ageを書き間違えて
a.aga = 13;
などとすると、何のエラーも出ず、aga という新しいプロパティーが
追加されてしまう。その結果、
a.age と a.aga の二つのメンバが出来、
a = {
 age : 12;
 aga : 13;
}
としたような状態になってしまう。
JSに限らず多くのスクリプト言語は同様の現象がおき、ミスに対する
フェイルセイフが出来ておらず非常に危険なので、大規模開発に
向いていないと言われている。
2020/12/23(水) 18:52:45.56ID:qnDToIG0
それ型と直接関係なくね?
確かにtsだとそれを防ぐ型とか作れるけども…
2020/12/23(水) 19:09:45.60ID:aa3pY4zz
なぜ型と関係ないと思うwww
2020/12/23(水) 19:26:43.15ID:L0gYl8Ji
>>250
全部dynamic型!みたいな言語だな。
こんなの自分一人でもだめだわ。破綻するわ。
これの利点ってなんなんだろ…

あとよくサーバーとフロントで型を共有できて嬉しいですよね♪みたいなこと書いてるブログもみるんだが
それができてない場合ってこうなる?
サーバー側:sexはなんか卑猥だからgenderにしたれ!
フロント側:sexに何も挿入されない…
2020/12/23(水) 21:34:43.30ID:qFmqxSAt
>>250
それはDictionaryに新しいkey/valueペアを追加してるのと同じだからね
そういうのでバグ出しちゃうのは基本的にテスト書かない人

チーム開発で動的言語使ってまともなプログラムを作るためには
静的言語の場合よりも高い技術スキルとコミュニケーション能力が求められる
なのでソフトウェアの規模というよりチームの規模が大きくなればなるほど不利
2020/12/23(水) 21:52:55.12ID:O5AY10nM
無能爺が出しゃ張らないだけで、雑談スレでもここまで建設的なスレになるんだね
2020/12/23(水) 21:53:23.50ID:qFmqxSAt
>>253
サーバーとクライアントで違う言語を使ってても
swaggerとかでインターフェース定義してそれぞれコード生成すればいい
C#でも同じだと思うんだけど?

逆に同じ言語を使ってるからといってやり取りするデータを定義した
クラスライブラリを共有するのはアーキテクチャ的にはかなり微妙
特に外部に公開するようなサービスでは
2020/12/23(水) 22:03:15.12ID:92W7nQMG
>>254
これだけのことにテスト書くの?テストまみれにならないか?
そもそもコンパイラがチェックしてくれるようなこおを自力でテスト書くとか苦行すぎるだろ…
それって高い技術力と言っていいのだろうか。
言語、フレームワークの選定を間違えているとおもう。

>>256
Blazorのプロジェクトつくるとそうなってるよね
あれは規模が小さいシステムなら許容されるんだろうか。
2020/12/23(水) 22:27:01.33ID:92W7nQMG
>>256
連投すまん

そのswaggerはサーバー側の型に変更があったらクライアント側で気づくことができるんだろうか。
blazorのプロジェクトの構成ならコンパイラが教えてくれるよね。

外部に公開しないシステムで二回型定義するのは、ツールに頼ったとしてもめんどくさいとおもってしまうんですよ
2020/12/24(木) 00:11:53.93ID:61P3AxB9
>>258
swaggerの意味間違えてるよ。
それswaggerの役割じゃないから。
2020/12/24(木) 00:38:15.61ID:cDdTcWWQ
Unityがなんで勝ったか、を考えれば答えは見えてるだろ
2020/12/24(木) 00:59:13.90ID:z4h3nURn
>>257
>Blazorのプロジェクトつくるとそうなってるよね

なるほど、前提として想定してるアーキテクチャが全然違ったのね
>>256の話はBlazorのプロジェクトが別のバックエンドのAPIサーバーにアクセスする必要があるようなケースに
APIサーバーがで定義された型をクラスライブラリとしてBlazorのプロジェクトと共有するかどうかみたいな話ね

Blazorはモノリシックなアプリでいい場合は簡単に作れていいと思うよ
考え方的にはRailsとかと同じだけど裏のところが独自技術な分だけ優れてる
悪い点はロックインされるところ
2020/12/24(木) 01:05:39.49ID:cu9CRgEK
最近はミクロサービスもやっぱ駄目だったってんでモノリスに回帰してきてるらしいな
2020/12/24(木) 06:31:15.50ID:qBLsz+9E
Docker は、1コンテナに、1アプリのマイクロサービス

今の基幹技術だろw
流行りまくっている
264デフォルトの名無しさん
垢版 |
2020/12/24(木) 08:12:52.16ID:Lxgk3nTO
>>263
またにわかのフロントエンドのバカか
流行っているかではなく優れているかで選ばなくてはいけない
大規模やってる大手企業、上級エンジニアはDockerを嫌う
2020/12/24(木) 08:34:44.70ID:tvAmDhsP
>>261
すまん前提が書けてなかった。
うちは企業内アプリをメインに作ってて、他の外部apiには殆どアクセスしない。
バックもフロントも自チーム内で完結する。

横に座ってる奴がサーバー側の型を変更して急用ができて帰ったとする
フロントやってるやつがそのことに気づかずにリリースしてしまうなんてことが起こるようなら本末転倒だなと。

それで原因はテストコードが足りないとか、コミュニケーションが足りないとかいうのもおかしいよねと考えている。
Blazorのプロジェクト構成ならビルド時に気づくよね。

swaggerを使うことで、フロント側がすぐに型変更を検知できるような仕組みがあるんならいいんだけど、気づかないよね?困るよね?現にお困りではないでしょうか?
と聞きたかった。
266263
垢版 |
2020/12/24(木) 08:39:38.18ID:qBLsz+9E
AWS の構成図を見てみろ。
ほとんど、マイクロサービスだろ

何十もの、Lambda, SQS(Queue), SNS(通知)をつなげてるの、ばっかりだろ

クラスメソッドの動画を見ろ

会社全体で、AWS の資格を800持っていて、
全12資格を持つ・ジェダイマスターが7人もいる!
2020/12/24(木) 08:40:41.97ID:BsodnxpD
>>264
零細爺が見栄張って適当言っちゃあかんでしょ
社内でファイルサーバーでもたててSEごっこしてなさい
2020/12/24(木) 08:53:01.08ID:Lxgk3nTO
>>266
そりゃアマゾンは大手のクラウド事業者だからあたりまえだろ
自社の提供するサービスをそのまま使ってるだけ
サービスの広告にもなる

一般法人がそれを採用することが合理的かは別の話だ。
デメリットを理解せず、流行ってるからいいという
アホな価値観だからそういう思考になる
2020/12/24(木) 08:58:23.93ID:nIBEXBhK
こいつはホンマにいつも5chやっとるな
270デフォルトの名無しさん
垢版 |
2020/12/24(木) 09:04:12.11ID:Lxgk3nTO
>>266
おまえいつもKENTAの話ばっかりしてるやつだろw
クラスメソッドw
俺は初心者向けスクールなんていかない。

会社全体の資格者数なんて何の意味もないし
ベンダー資格なんてすぐに取れるんだよw
スクールだから宣伝のために講師に取らせてることも理解できないって
頭悪すぎだぞ
スクールの講師に優秀なエンジニアいないぞ
簡単にとれる資格でだまされてるやつw
KENTAとかスクールとか情弱ビジネスに釣られすぎ
271263
垢版 |
2020/12/24(木) 09:33:54.56ID:qBLsz+9E
クラスメソッドは、AWS パートナー・オブ・ザ・イヤーとか取ってる、最上位の会社

米国年収で、
Ruby on Rails 1,300万円
Node.js 900万

VMware 1,400万
AWS Solution Architect 1,500万

もう、AWS資格が、Railsを超えてる!
2020/12/24(木) 09:52:41.32ID:tvAmDhsP
ついでに聞いとこ。
クラスメソッドくんは普段なんのフレームワークで開発してるんだい?
2020/12/24(木) 10:54:27.41ID:cDdTcWWQ
>>266
その構成が複雑化しすぎて多くの場合でデメリットがメリットを上回ってしまう
よっぽど巨大で複雑なシステムでもない限りモノリスのほうがシンプルでイイネ
っていうふうにトレンドが移り変わろうとしてるところ
274デフォルトの名無しさん
垢版 |
2020/12/24(木) 11:28:27.57ID:TzdYJrci
KENTAはコテ付けるべきでは?
2020/12/24(木) 12:08:12.79ID:tvAmDhsP
>>273
これほんとにそうだと思う。

こういうのが必要なのって相当巨大なシステムだけなんじゃないのか
トレンドだからとDockerだか、Kubernetesだかに手を出して
気づかず消耗してるんじゃないだろうか。

クリーンアーキテクチャについてもそうおもうし、
なんならrest apiもそうなんじゃないだろうかと疑っている。
rpcでよかったのにrestにしちゃったケースもあると思うんだよなあ
2020/12/24(木) 12:24:48.60ID:61P3AxB9
>>265
サーバー側の型が
クライアント側に漏れでた時点で
設計がおかしい。

もしかして、
クラサバみたいな設計ですか?
2020/12/24(木) 12:37:13.88ID:tvAmDhsP
>>276
漏れ出るって…?
ASP.NET MVCは定義したモデルをビューで参照できるよね?
これは漏れ出てる…?
2020/12/24(木) 13:32:36.53ID:FJvlKwaS
>>275
Dockerは別にいいと思う
あれはどんな依存関係でも簡単にパッケージできるのと環境を汚さないで済むという強力なメリットがある
K8Sまで行くとやりすぎで本当にK8Sが必要なのか慎重に考えないといけない

クリーンアーキテクチャは悪くない
モノリスに回帰してきているとは言ってもコードを汚く書いていいわけじゃない
あくまでも悪いのはミクロサービスであってアプリケーション内部をクリーンアーキテクチャで綺麗に構造化するのは依然として良いことだ

RPCはそのとおり
APIだけじゃぜんぜん駄目だったのでgRPCなどが普及し始めた
DDDの文脈で綺麗にシステムを作ろうとするとAPIよりRPCが肝要となる
2020/12/24(木) 13:35:03.72ID:61P3AxB9
>>277
サービスレベルで設計してないって事ね。
2020/12/24(木) 13:56:01.24ID:RIrJysKy
単純なマスタメンテみたいなアプリでもなけりゃサーバーとクライアントで扱うモデルって一致しなくない?
セキュリティとかプライバシーに関わるようなデータでも平気でネットワークに流しちゃう感じ?
2020/12/24(木) 14:00:28.72ID:VTM9inIm
ドットネッターはコンテナに拒否反応示す人が多いよね
.NET Coreでせっかくモダンなスタイルのデプロイが可能になったと思ったら、
井の中の蛙なユーザーに迎合してIIS統合とかFDD強化とか変なことに力入れてどんどん退行してるし
2020/12/24(木) 15:31:58.25ID:GGlRJfww
Windowsコンテナが実用レベルになったら起こしてくれ
2020/12/24(木) 17:59:56.32ID:tvAmDhsP
>>279
そこまでやる必要がないレベルといえばそう。
世にあるMVC系のWebフレームワークはなんか漏れ出してるということなんだろうか

>>280
逆に単純なマスタは一致するんじゃないの
そりゃおっしゃるようなシーンでは一致しないだろうけど
どっちが多いかにもよるんだろうか。

サーバーと型が共有できるって利点だと思っていたけど
結構反対意見も多いな。
少なくともBlazorの雛形はそうなっているけど、これは小規模だから成り立っている?
もっといろんな意見を聞きたい。
2020/12/24(木) 18:17:21.72ID:61P3AxB9
>>283
反対意見じゃなくてAPIの設計がちがう。

swaggerでopenAPIとして公開するレベルなら、
クライアントの種別、言語は問わない。
2020/12/24(木) 18:32:45.65ID:z4h3nURn
>>265
それってコンパイルエラーになるような変更なら気がつくけど
それ以外の変更なら不具合が起こってても気が付かないてことでしょ?
結局テスト書いてないだけじゃない?

swaggerとかインターフェース定義ファイルからそれぞれのスタブを自動生成するようなやつは
定義が変わればそりゃ検知できるけど検知できて新しい定義に対応したところで
その変更によって不具合が起こってないことはテストしないとわからないよね
2020/12/24(木) 18:36:25.33ID:cDdTcWWQ
>>280
モデルにも色々ある
ドメインモデルとかビューモデルは当然、共有しない

APIやRPCのI/Oモデルは共有する
Blazorはこれを追加作業なしで完全な形で型安全に共有できるから強い
2020/12/24(木) 18:46:02.72ID:PofLudrU
さらにF#の型プロバイダをBlazorで利用すると、バックエンドが.NETでない場合でも、型安全なI/Oモデルを手に入れることができる
インターフェース定義、コード生成要らないので、とても楽ちん
2020/12/24(木) 18:53:41.80ID:tvAmDhsP
>>284
いろんなデバイスやシステムからアクセスするapiに関してはおっしゃる通りだと思うよ。
でもそんなの限られるんじゃないの?いや俺がそういうの作った事ないからそう思い込んでるだけかもしれないけど。

そうじゃないものまでapi化するのは意味なくて、型は共有した方が嬉しいですよね♪ってことだと解釈してます。

>>285
swaggerはリリース前に自動で変更検知して止めてくれるってこと?
なら安心だな。
テストに関してはおっしゃる通り。
2020/12/24(木) 19:15:50.43ID:EoOpc5fU
>>283
型共有は工数削減効果が非常に高いので積極的に利用して良いよ
2020/12/24(木) 19:26:12.20ID:yLXHVLdF
swaggerがどうのこうの言ってる人はミスリードを狙ってそうな気配がする
swaggerはメソッドを定義することはできないからblazorの型共有とはそもそもまったくの別物だよ
2020/12/24(木) 19:34:01.95ID:yLXHVLdF
blazorの型共有は単にAPIのDTOを共有するといったつまらないユースケース留まらない(もちろんDTOとしても非常に便利ではあるが)

例えば単価、税率、個数から消費税込み価格を計算するメソッドがプレゼンテーション層とドメイン層の両方で必要になった場合
blazorならC#で1回だけメソッドを実装すればいい
バックエンドとフロントが異なる言語だと同じ処理を異なる言語で2回実装しなければならない
もちろん仕様変更が発生した場合には両方ともプログラムを修正、テストをしなければならない
テスト定義もバックエンドの言語とフロントエンドの言語で2回書かなければならない
片方の仕様変更を忘れてもテストが更新されなければアラートは鳴らないので
慎重に2つの言語を調べ尽くして実装漏れがないかどうか確認しなければならない
2020/12/24(木) 20:36:59.38ID:NdJ7CDDg
画面の金額と実際の請求金額に差異が出たりしたら偉い人が顧客に土下座するレベルの重大事故だろ
さすがにそこはサーバーサイドに投げるわ
コード共有などという小手先レベルの共通化は少々バグっても笑って許される程度の機能のちょっとしたUX改善程度にとどめておくべきで、
重要なものはアーキテクチャ上差異が発生しないように作る
2020/12/24(木) 20:48:02.28ID:yJIcrLfM
>>292
この例はあくまで一例
実際のシステムでは金額計算以外にも同じような状況は沢山ある
それをいちいち全部バックエンドに問い合わせるのは実行効率も製造効率も悪い
2020/12/24(木) 20:58:24.94ID:KjzzoxRm
>>291
コピペ?

swaggerを使ってのopenAPIなら
まずはその設計思想を勉強されてみてはどうでしょうか?

googleのAPIとか参考になりますし、
無料で試せますよ。
2020/12/24(木) 21:06:28.06ID:cW3QBX++
>>292
自分の設計だとバリデーション含めて
ロジックは全部(表示フォーマットも)サービス側ですね。
ローカルにあるロジックと応答速度で遜色ないですよ。

サービス側は全部単体テスト対象なんで
安心感もあります。

リリース後にバグ出すと、
なんで単体テストを通過したのか始末書もんです。
2020/12/24(木) 21:23:01.51ID:IhbSA9yU
>>295
思想としては正しいと思う
.NETな人って表面的なコードの共有は大好きなのにデプロイメントをDRYにするという意識が希薄な人が多くて、
ビジネスロジックのDLLをWebとバッチで安易に共通化したりしてデプロイをミスってトラブル起こすケースが多いんだよね
2020/12/24(木) 21:32:29.46ID:cW3QBX++
View側に業務ロジック混ざると、
コードが読めなくなること多いですからね。
いろんな人が出入りするし。

フロントなんて持って数年、
システムの統廃合やリプレース時にも楽ですよ。
298デフォルトの名無しさん
垢版 |
2020/12/24(木) 21:48:16.63ID:BMlK5S4S
Blazor Serverでファイルのアップロード処理をしたいのですが、
アップロード時に、ローカルにファイルが存在するかチェックするにはどうすればよいでしょうか?
2020/12/24(木) 21:51:51.36ID:zHK1POmy
>>298
ローカル側の処理なんでJavaScript書かないと仕方ないんじゃないの
2020/12/24(木) 21:59:31.17ID:BMlK5S4S
>>299
ありがとうございます。
該当部分はJavaScirptで作ります。
2020/12/24(木) 22:00:26.68ID:cDdTcWWQ
>>294
swaggerはblazorの型共有とは違うベクトルの話だよ
ここで話すべき内容ではない
2020/12/24(木) 22:05:56.79ID:cDdTcWWQ
>>295
それはいままで簡単にフロントエンドとバックエンドでロジックを共有できなかったからそうするしかなかっただけ
型共有がなかったからコードを重複させるか些細なことでもバックエンドにリクエストを出すしかなかった
どちらもやりたいことにたいして実装と実行のオーバーヘッドが大きい
型共有が可能なblazorでは無駄なエンドポイント実装、APIコール実装を削減することにより生産性の向上が期待できる
また無駄なラウンドトリップを避けることによりより良いユーザー体験が期待できる
2020/12/24(木) 22:08:01.69ID:cDdTcWWQ
>>296
昨今ではデプロイメントは自動化されるので間違えることはない
2020/12/24(木) 22:09:26.12ID:cDdTcWWQ
>>297
Viewには業務ロジックは混ざらない
Viewからは業務ロジックを呼び出すだけ
今まではAPIを通じてリモート呼び出ししていたがblazorではその必要なく呼び出せる
2020/12/24(木) 22:25:28.29ID:Lxgk3nTO
>>304 >>302
「Blazorでは」と書くと正しく伝わらない。
Blazor ServerとBlazor WebAssemblyで全然違う
紛らわしい名前つけたMSが悪いんだが。
306デフォルトの名無しさん
垢版 |
2020/12/24(木) 22:50:48.81ID:cFK/Qw2G
実際どちらのことを書いてるんだろう
Serverかな
しかしwasmとserverでほんと全然ものが違うよな。
共通点はフロントをc#でかけるってだけで。

MSの名前の付け方は本当に適当だと思う。
2020/12/24(木) 22:59:35.56ID:z4h3nURn
同一言語で作ってる同一プロジェクト内で型を参照することを
”型共有”って言うのは相当違和感あるね

誰が使い始めたのかしらないけど
2020/12/24(木) 23:11:34.69ID:F9/YVp9N
では何と言うべきか?
2020/12/24(木) 23:24:38.23ID:cFK/Qw2G
Qiita や個人のブログを貼るのはアレなので
クラスメソッドの記事を…

https://dev.classmethod.jp/articles/typescript-front-server/

interfaceを共有することで 型安全な開発ができます

これのことかな。
2020/12/24(木) 23:50:47.46ID:cDdTcWWQ
Blazorはinterfaceの共有もできるがそれだけに限らない
interface、class、struct、、、何でも共有できる
それらを総称するとなんと言うか?それは型だ
だから型を共有していると言うより適切な表現はないのではないかな
2020/12/25(金) 00:08:08.33ID:vv0pxJyE
>>309
このケースはリポジトリとして定義した型をサーバーとクライアントで共有してるというのは違和感ないな
RESTのAPIで切り離されてるからかな
(APIが返す型情報を元にしてないから微妙なところがあるけど)

ASP.NET MVCで言えば同じビューモデルの定義を参照してるからって
ビューとコントローラーで”型共有”してるとは普通言わないよね?
2020/12/25(金) 00:14:35.63ID:K5aqSQYy
>>311
言い回しとして普及してるかどうかは知らんが型を共有してるのは正しい
2020/12/25(金) 00:24:51.99ID:Z26lwPgE
>>311
Blazor wasmのプロジェクト構成では
Shareプロジェクトにモデルを定義して
ClientプロジェクトのRazorページでShareプロジェクトを参照している
同じくServerプロジェクトのコントローラーでもShareプロジェクトを参照している
これはなんていうんだろう。

どちらにせよサーバーとクライアントで同じ型を使うという目的に対して手段が違うだけであって、別にまずくはないと思うんだけどどうだろう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況