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/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プロジェクトを参照している
これはなんていうんだろう。

どちらにせよサーバーとクライアントで同じ型を使うという目的に対して手段が違うだけであって、別にまずくはないと思うんだけどどうだろう。
2020/12/25(金) 08:42:56.78ID:uurLZNKt
サーバーとフロントで型を共有?できた方が大半はうれしい。
OpanAPIが必要なシステムではそこに固執しなくてもよいということで。

じゃあこの板でもたまにやたらと推してくる奴がいる言語、rubyやpythonって静的型付け言語じゃないよね。
てことは型の共有もくそもないと。

そういう言語で中規模以上のWebシステムを作ろうとするとやはり苦労する?
推してくるやつはその事実をわかっていない?
静的型付け言語しかしらない俺にとってはなんであんな推してくるのかとても気になる。
2020/12/25(金) 09:13:17.07ID:JfQSa+1c
>>314
OpenAPIじゃメソッド(処理)を共有できないよ
フロントエンドとバックエンドで言語を揃えることにより今まで複数言語で書くかリモート実行するしかなかった問題が解決した
OpenAPIは複数言語で書く手間を軽減できるがリモート実行するしかないという問題には未だに無力
2020/12/25(金) 09:31:31.83ID:UA1/tVeu
どんな言語であれフレームワークであれ
データ型は共有しないとクライアントが受け取ったデータを適切に処理できないでしょ

blazor は同じアセンブリを共有できる分開発は楽になるでしょ

クライアントに送るデータはクライアントに必要なデータしか普通は送らないし
サーバ側の型がクライアントに漏れるとか
入門書レベルの開発しかしたことないだろ
2020/12/25(金) 09:44:37.32ID:uurLZNKt
>>315
多種多様なシステムやデバイスが使うapiは仕方がないという認識
2020/12/25(金) 10:04:08.77ID:JfQSa+1c
>>317
その多種多様なデバイスの上で.NETが動くわけで
2020/12/25(金) 10:09:58.28ID:8j4BK9K7
ぜんぶ設計者次第だという認識
2020/12/25(金) 10:16:11.17ID:81Ut/TdK
>>314
WebなんてぶっちゃけDBと画面の間のマッピングを定義してるだけの話なので、
データモデルがRDBによって常に静的に型付けされているため動的型でも破綻しにくい
むしろ変にドメイン駆動とか意識高いのに毒されて画面から独立したモノリシックなビジネスロジック層みたいなのができちゃうと、動的型では確実に破綻する
2020/12/25(金) 10:17:04.89ID:JfQSa+1c
>>316
サーバー側の型がなにを指しているのかによるな
データアクセスレイヤのクラスがプレゼンテーションに漏れるのはBADだと思う
しかしドメインレイヤのクラスをプレゼンテーションから参照するのは問題ないと考えている

昨日も例を出したけど
入力として単価、消費税率、個数があってリアルタイムに税込み価格を表示する画面があったとする
この税込み価格の計算は明らかにドメインロジックだ
プレゼンテーションレイヤから直接ドメインレイヤを参照できればそれが最もシンプルでよろしい

もしそれができない場合、プレゼンテーションレイヤにも税込み価格計算ロジックを実装するかリモート呼び出しのためのエンドポイントを実装し、APIクライアントも実装するという重い作業を強いられる

もちろん、税込み価格計算はただの一例であり、実際にはより多くのニーズがある
プレゼンテーションレイヤからドメインレイヤの型を参照できると低コストでより高度な画面を作成することができる
2020/12/25(金) 10:22:24.07ID:JfQSa+1c
>>320
それはどうかな?
意識の高いプログラマの代表格であるマーチンファウラー先生はrubyを称賛していたね
ドメインを実装するのに必ずしも静的でなければならなということはなさそうだ
重要なのはテストを書くことなのだろう
2020/12/25(金) 10:27:26.49ID:JfQSa+1c
そもそもWEBをひとくくりに画面とDBのマッピングであると決めつけるのもいかがなものか
チュートリアルみたいな簡単な仕事ならそれでもいいのかもしれないが
現実のビジネスは小さな事業でもそんなに簡単にはいかない
2020/12/25(金) 10:32:50.39ID:vv0pxJyE
>>314
自分で勉強しろって
ここで言ってる”型共有”はRubyでもPythonでもできてる

>>315
“メソッドを共有”って何なの?
処理を共有するためのAPIなんだけど・・・
それにBlazorもリモート実行してるよ
2020/12/25(金) 10:35:51.93ID:uurLZNKt
>>322
C#であればコンパイラが型チェックしてくれるようなことすらも
Rubyは自力でテストを書かなければならない?
しんどくない?しんどくてもその分の見返りがRubyにはある?

いや数画面のスキャフォールドで作られたようなCRUDシステムなら好きな方選んだらいいと思うんだけど
中規模以上になってくるとどうなのかなと思って。
2020/12/25(金) 10:38:07.26ID:uurLZNKt
>>324
あれ、RubyやPythonも型があるのか
失礼しました。
もう自分で触ってみないとわからんな…
2020/12/25(金) 10:38:47.43ID:UA1/tVeu
>>321
そんなこといったら
クライアント側でのデータ検証なんて 何もできない
2020/12/25(金) 11:01:46.48ID:bbGDaeBs
静的型チェックを重視するならC#よりF#使えばいいのに
2020/12/25(金) 11:08:03.54ID:8j4BK9K7
訳わかんない理論がまかり通るスレ
2020/12/25(金) 11:37:26.72ID:JfQSa+1c
>>324
リモート実行は外部処理系に処理を依頼しているだけなので共有ではない

ここでいうメソッドの共有とは異なる処理系が同じ実行コードをそれぞれの内部に持っているということ
2020/12/25(金) 11:45:17.08ID:JfQSa+1c
>>325
動的言語はしんどいよ
自分個人としては動的言語には懐疑的
ただ高度なスキルを持った著名人が支持しているのでコード解析の弱体化のデメリット以上に何かしらメリットがあるのだろう
そしてそういった著名人は必ずテストも推奨している
テストを書かない場合は静的言語のほうが有利なのだろう
しかしテスト書けば動的言語の弱点が補われるのでメリットのウェイトが大きくなる
2020/12/25(金) 11:49:27.10ID:JfQSa+1c
>>327
何もできないというのは間違い
しっかりしたシステムでは必ずクライアント側でもデータ検証を行っている

ただしそれはコード重複や無駄なリモート呼び出しの実装という負債を抱え込むデメリットと常にセット

フロントエンドとバックエンドで言語を揃えれば負債なしにフロントエンドでデータ検証を行うことができる

もちろんデータ検証以外の処理もおなじこと
2020/12/25(金) 12:16:12.84ID:uurLZNKt
>>331
そう。その何かしらのメリットを知りたいのだ…

>>245
>>250
はjavascriptの例だが、これがrubyでも起こるとすると
しょーもないCRUDの画面でもテスト書かないといけないのだろうか。

javascript勢がTypeScriptに流れてるってことは
それなりの規模のあぷりを動的型付け言語でやろうとするといくらテスト書いても辛いって事だと思うんだけど。
2020/12/25(金) 12:24:33.08ID:cyV6b5qO
それをここで聞いてもな…
親の仇の如く口汚く罵られるだけで、
メリットなんか提示されないと思うぞ
2020/12/25(金) 12:30:41.85ID:uurLZNKt
だよね…
技術の優劣をつける意図はないんだが、
自分が作るシステムでは正しい技術を選択したいという想い
2020/12/25(金) 12:31:52.62ID:fU2xV1RD
>>321
明日もお願いします。
2020/12/25(金) 12:32:11.57ID:uurLZNKt
Webフレームワーク比較検討スレみたいなのがほしい
js系の言語のスレはBlazorの話するとうざがられるし
2020/12/25(金) 12:37:05.82ID:JfQSa+1c
>>333
動的言語はコード編集から動作確認、テスト実行開始までがとにかく早い
なのでゼロベースの新規プロジェクト、サービス公開までの時間を最優先する場合にはデメリットよりメリットが上回る
339デフォルトの名無しさん
垢版 |
2020/12/25(金) 13:33:23.39ID:pgbI6Wzr
>>337
人気のweb frameworkのスレッドは個別にあるしそこでいい。
全部の言語まとめて扱うと荒れる。
JSやJavaのスレッドはある
Java Web Application Framework総合 ver2
http://mevius.5ch.net/test/read.cgi/tech/1374399677/

C#は乱立してないから素直にASP.NET使えばいい
5chみたいな狭い世界で比較検討せずに
素直に人気のあるやつをいくつか試して決めた方がいい。
2020/12/25(金) 13:37:24.42ID:pgbI6Wzr
>>337
うざがられてあたりまえ
JSやってるやつらのほとんどがC#を使えない

C#使えるならバックエンドは迷わなくていいASP.NETでいい
迷うならフロントまわりの技術
2020/12/25(金) 13:55:33.58ID:8j4BK9K7
自演ぽいな
2020/12/25(金) 14:03:41.81ID:l1B2LBGM
そろそろ学習本が欲しいところ
アレ以外で
2020/12/25(金) 14:22:22.25ID:vv0pxJyE
>>330
じゃ、Blazor Serverはリモート実行だから”メソッド共有”じゃないってことね

異なるプログラムで共通のライブラリを使うことを
”メソッド共有”って呼んでもなかなか通じないと思うよ
2020/12/25(金) 14:24:09.99ID:JfQSa+1c
>>343
ではなんと言ったらわかりやすい?
2020/12/25(金) 17:26:45.87ID:UA1/tVeu
共通するコードをライブラリ化して共有でいいんじゃないの
2020/12/25(金) 17:48:04.91ID:tkA/KKSW
バッと来て
グッと溜めて
ブワッ!
2020/12/25(金) 18:29:51.37ID:AIeBZh27
>>345
長いので1単語にまとめて
2020/12/25(金) 19:21:45.07ID:uurLZNKt
>>340
そうなんだろうか
実はC#erが食わず嫌いなだけで、実はあちらのほうがめちゃくちゃいいものなのかもしれないよ…?
2020/12/25(金) 19:30:34.79ID:UA1/tVeu
以前は asp.net は Windows Server でしか動かなかったからなぁ

今でこそようやく Linux でもまよもに動くようになって2年ぐらい?

twitter でも .net core で検索すると
一年前はほんと大して結果なかった気がするけど
最近は増えてきてるかな

まだまだこれからでしょ
350デフォルトの名無しさん
垢版 |
2020/12/25(金) 20:54:05.41ID:pgbI6Wzr
>>348
あちらのほうってなんだよ
エンジニアならもっとはっきりかけよ

JSのbackendのweb frameworkか?
ろくなのないって俺が何度も書いてる。試す価値なし。
疑うなら自分で試してベンチマークとかとれよ
RailsもNode backendも遅くてゴミ

スクリプトは遅い。開発の生産性が低い
これは開発者の常識
高速なハードとソフトを合わせないとスケールするサイトにできない
2020/12/25(金) 20:56:57.60ID:pgbI6Wzr
>>349
昔はLinuxでというかライセンス無料で使えなかったのは大きいね。
JSやってるやつらはいまだにIIS, Windowsでしか動かないと思ってる。
あとclassic ASP時代のイメージのままの人も多い
2020/12/25(金) 21:08:02.22ID:pgbI6Wzr
高速なコードで作りたかったらstaticに限る。
主要OSの主要な言語はstaticだ

Swift, Kotlin, Java

server-sideでKotlinもあり。
2020/12/25(金) 23:41:23.33ID:Z26lwPgE
サーバーとクライアントは同じ言語の方がいいんだろ?
2020/12/26(土) 00:06:30.37ID:w6CJ0JU3
>>353
できれば同じ方がいいがパフォーマンスも生産性も低いJSに合わせるのは愚策
server-sideでJS使ってるのはアホだと思う

大手ならserver-sideとclient-sideは別の人材が開発するのだから
言語を合わせるメリットはあまりない

ヤフーとかもbackendでnode.js使ってるが事故ばかり起こしてるだろ
レベルが低い
355デフォルトの名無しさん
垢版 |
2020/12/26(土) 19:37:00.30ID:5ukh9MxR
日本人の誰かBlazorのwikiを作ってくれ
フリーでオープンソースのウェブフレームワークって書くだけでも
wikiがないとBlazorが何かわからん
なぜC#を使ってウェブアプリが作れるのか?
ウェブブラウザはC#を解釈しないからJavaScriptとHTMLだろ
2020/12/26(土) 19:44:30.35ID:T66JFeJq
BlazorWasmのほう?
WebAssemblyで調べたらいいのでは
2020/12/26(土) 19:54:05.69ID:5ukh9MxR
>>356
WebAssemblyはwikiがあるが本文にBlazorがない
2020/12/26(土) 20:13:39.65ID:q2RopqqH
所詮その程度のオモチャということです
2020/12/26(土) 20:19:52.51ID:zr3CHg45
WebAssemblyはそれようの仮想マシンで動くからじゃないの

C#コードをその中間言語にコンパイルするだけ

たぶん
2020/12/27(日) 11:16:47.49ID:FLSM18Bj
>>355
そんなwiki作っても内容古くなるし意味ない
不正確で古い情報入手してどうする?
英語でMSのドキュメント読みなされ

何度も言うけどBlazorと書くべきじゃない。
Blazor Server, Blazor WebAssemblyで
アーキテクチャが全く違う。
2020/12/27(日) 11:17:34.43ID:FLSM18Bj
>>359
ちがう、いいかげんなこと書かずに
MSのドキュメントを読むべき
2020/12/27(日) 11:17:38.77ID:l7B3kP+i
>>360
似てるよ。
2020/12/27(日) 11:44:29.13ID:Y/0KLGYh
>>360
Blazorを初見で見て1分で何か知りたいだけでwikiがいい
時間をかけて英語でMSのドキュメントを読まない
2020/12/27(日) 11:56:13.46ID:l7B3kP+i
>>363
Web Assembly
https://docs.microsoft.com/ja-jp/aspnet/core/blazor/index/_static/blazor-webassembly.png?view=aspnetcore-5.0

Blazor Server
https://docs.microsoft.com/ja-jp/aspnet/core/blazor/index/_static/blazor-server.png?view=aspnetcore-5.0
2020/12/27(日) 12:57:58.03ID:5MC+7bSJ
>>361
あーそうね
C#のコードをいつも通り.NETの中間言語にしたものを配布して
ブラウザでの実行時にwasmのコードに変換して実行だっけ?

大して変わらんと思うけど
2020/12/27(日) 14:19:59.57ID:iruxp8RS
.NET6でAOTが入る予定らしいがファイルサイズの問題とかあるしwasm書くような用途なら他の言語の方がいいんじゃね
2020/12/28(月) 12:55:53.75ID:Ov8uGTUf
状態管理ってどうやるのが無難なのかな?
blazor + fluxor ?
2020/12/28(月) 20:34:30.42ID:N8gr0T4H
状態管理サービスをDI
2020/12/28(月) 20:36:55.85ID:RNhofGKy
blazorserver ならセッション?
webassemblyならいる?
2020/12/28(月) 23:32:18.60ID:w2tkTAcI
GO + wasm が来年のトレンドだと思いましゅ
371デフォルトの名無しさん
垢版 |
2020/12/29(火) 01:03:32.89ID:QFieIEDm
Kotlinはブーム来てる
Kotlinはwasmもすでに存在するようだ
2020/12/29(火) 07:55:55.72ID:iWtJxFHh
wasmとserver
wasmの方が人気だよなあ
serverはwebformの移植用以外は使い道がないんだろうか
2020/12/29(火) 09:17:54.01ID:8biyF2ED
go + wasm で使えるイケてるフロントエンドフレームワークがあったらいいんだがなぁ。
374デフォルトの名無しさん
垢版 |
2020/12/29(火) 09:43:58.26ID:QFieIEDm
Googleが採用言語を分裂させすぎだから
Goは普及しないだろ
FlutterではDart
AndroidではKotlin推してる
全部Goにしてたら結果は違ったはず
Kotlinのが流行ってるしな
Go速いらしいけど人気ないのははハードル高いんだろうか
2020/12/29(火) 12:10:38.95ID:TrPJjXJg
>>372
これホント?

なんとかC#しか使えないエンジニアを有効活用して
JSの10倍遅くても問題ないからオフラインでも使えるWebアプリを作りたいってニーズある?
JSが不要になるわけじゃないし現状はデスクトップアプリかblazor serverのほうが何倍も良いと思うけど
2020/12/29(火) 12:22:03.72ID:gscEc512
PlayStation Portable go の運命と重なる...
2020/12/29(火) 12:30:16.56ID:iAxs8NN4
>>375
どっちでもいいんじゃないの
何倍というほどの差はない
2020/12/29(火) 12:33:17.29ID:Fq3XcUlo
>>375
おっしゃるとおり!
俺のような企業向けアプリしか作らない人間からすると
wasmよりserverのほうが使えそうなんだよね
でもblazorでググるとwasmの記事ばかり引っかからない?
あっちのほうが期待されてるように感じる…
2020/12/29(火) 13:01:36.23ID:k23+wtCh
Chromeではある程度可能だが、いまのところ、広く一般には、Wasmは、ローカルファイルシステムになかなか自由にはアクセスできない。
ところが、Cordovaはlocal http serverをアプリ起動時に立ち上げて、
WebViewでHtml+JS+Wasmを起動ですることによって、
Wasm
--> JS
--> XmlHttpRequest()/fetch() で "http://localhost:5000/機能名?トークン&パラメータ" にアクセス
--> Http プロトコルの Http Request が発生し、local http serverが眠りから覚める。
--> local http server は、端末の API を好きなように呼び出し、端末の
ローカルファイルシステムを読み書きする。
--> http response で結果を JS 側に返す。
--> JS は、結果を受け取る。
の順序でWasmからローカルファイルシステムにアクセスできる様になるらしい。
Cordovaは、AndroidでWasmが使えたという報告があるし、
iOSでもVer11以降だとWasmが使えたという報告がある。
つまり、多くの人が使っているモバイルデバイスでは、WasmとCordovaの組み合わせで
モバイルのローカルファイルシステムも、あらゆる端末機能にもWasmから利用可能に
なるようだ。
2020/12/29(火) 13:02:15.95ID:EHaGj/ct
そりゃ技術的に面白いのはwasmだから話題になるのそっちだよ
2020/12/29(火) 13:07:56.98ID:k23+wtCh
>>379
[補足]
この方式だと端末内の他のアプリからでも、このアプリのlocal http serverに
アクセスできるからセキュリティー的な問題が有るという心配が有るかもしれないが、
そこは「トークン」をつけているので心配が無い。
それは、アプリ起動時に乱数の様なものから作成し、local http serverとJSの
両方に同じトークン値を渡すことで、鍵の様な働きをする。
トークンが合わなければlocal http serverは機能しないようにすることで、
セキュリティー上の問題はクリアできる。
2020/12/29(火) 13:19:00.27ID:k23+wtCh
MonacaはCordovaアプリをブラウザから作製できるようにした「クラウドIDE」で
Mac実機無しにiOSアプリを作製してAppStoreに登録できる、とされている。
2020/12/29(火) 13:21:34.09ID:k23+wtCh
>>382
ただし、クラウドの先にあるMac実機をレンタルする必要があるかもしれない。
2020/12/30(水) 19:23:50.60ID:+vZt7ZP1
>>381
それWEBアプリであるメリットを感じないんだが
そのトークンはだれが作るって?
ローカルサーバーに自分でトークン作って渡すんなら、トークン偽装しほうだいだな
2020/12/31(木) 14:25:23.04ID:hpqEd6nD
>>384
この話は、Html+JS+WasmのWebアプリWを、WebViewを使って、
native アプリAのようにする場合の話。
native アプリAが起動するときに、まずトークンTを作り、
WebViewとHttpServerを同時に起動し、その両方に同じトークンTを
渡す。
nativeアプリA
--->トークンT作製
---> HttpServerを起動しトークンTを渡す。
---> WebViewを起動しトークンTを渡す。
---> WebView内でHtml+JS+Wasm (W)が動作し始める。
---> JS内からトークンTをGET PARAMETERに付けたURLによって
  fetch, または、XHRを使ってHttpServerにアクセスする。
  URLは、http://localserver:5000/機能名?トークンT&パラメータ
  のようになる。
---> HttpServerは、イベントを待機した状態から目覚め、
  GET PARAMETERにトークンTが入っていることを確認したら、
  機能名に応じた動作を nativeAPIを使って行う。
---> 端末のローカルファイルシステムにも読み書きできる。
---> 結果を Http プロトコルの Http Response で JS に返す。
---> JS は結果を受け取る。
2020/12/31(木) 14:45:37.85ID:tdaLm2s5
ネイティブアプリならそのままローカルファイルアクセスしてUIレイヤーとしてWebView使えば十分では?

わざわざローカルでweb server起動してそれ経由でファイルアクセスさせるメリットってあるの?
2020/12/31(木) 14:52:50.53ID:bz8vpTSU
でも、既 存のア プリの流 用なら単にserverとclientを一箇所で動かすだけに見えるし、
新 規ならそもそもメ リ ットがどこにあるんだろうという感じだし。
どうしてもUIをhtmlとjsで書きたい場合とかかな。
2021/01/01(金) 02:03:52.73ID:y/yrEKhd
>>386 >>387
自分でクロスプラットフォームツールキットを作っている場合、
iOS/Android/Windows/Linux/Macなどに個別に対応させるのが大変な場合、
HTML+JS+Wasmでまず、ブラウザで動くようにしておき、ファイル入出力
部分だけを上記の様な local HttpServer 方式で行えば便利。
2021/01/01(金) 02:09:02.70ID:y/yrEKhd
>>386
それだとWasmをメインプログラムとしたクロスプラットフォームアプリは
作りにくい。
Wasmの関数の中にファイル入出力を行いたい部分が有った場合など。
2021/01/01(金) 13:36:41.38ID:xBl+DmmI
FileとかOS API使いたければ素直にnative appにするほうがいい。
わざわざwasmとか意味不明
2021/01/01(金) 23:29:42.24ID:TX7qBddY
>>390
特にクロスプラットフォームのライブラリを自作する場合、ブラウザ上のWasmで
ファイルアクセスまで出来れば対応が楽。
2021/01/01(金) 23:57:03.96ID:ifweq93H
トークン作るネイティブアプリがあって
HttpServer側のローカルアクセス部分も個別に作るのか
2021/01/02(土) 00:01:46.88ID:TBL/2gAq

wasmからファイルにアクセスするわけじゃないよね?
というかそもそもwasmでコーディングするわけでもないよね。
2021/01/02(土) 00:47:26.18ID:md7DJnNn
そもそもWasmでファイルアクセスできたらセキュリティ上おかしいんじゃないのか?

Wasmはソースコード見えないというのに
知らないうちにファイルアクセスするコードダウンロードして
実行されたらまずいだろう

MSの人も動画でBlazor Wasmは安全だといっていた。
Browserのsandbox内で動作するからというがその理由。

>>391
実際コード書いてないわけでしょ
wasmより絶対にネイティブのが楽
nativeでcross-platform対応もできる。FlutterやXamarin
2021/01/02(土) 10:59:11.61ID:kLdWoF3Z
>>394
C++で書いたプログラムをWasmに変換し、それをWebViewの中で実行する場合の
話だよ。
WebViewを起動するのは、C++やSwift、Javaなど。
その際にlocal http serverとWebViewを同時に起動する。
そして1つの鍵(セキュリティートークン)をlocal http serverとWebViewの
両方に渡す。
なので安全。
2021/01/02(土) 11:26:48.47ID:XwpZ0T7a
つまり、悪意のあるプログラムが自分でトークン作ってlocal http serverたたいて
それ経由でローカルファイル等の情報にアクセスできるんだろ

local http serverは正しいWebViewから呼ばれているのかどうか確認できないんだが
それのどこが安全?
2021/01/02(土) 11:42:56.76ID:kLdWoF3Z
>>396
できない。
それはキャッシュカードを拾っても、正しい暗証番号が分からなければATMから金を
引き出せないのと同じこと。
local http serverとWebViewの中のJSの両方に1つの暗証番号を渡しているので
両者だけが通信できて、他のアプリは通信できない。
2021/01/02(土) 11:47:13.97ID:kLdWoF3Z
>>397
[補足]
・URLのGET PARAMETERの中に正しい暗証番号(=トークン)が書いてある場合には
 なるべく速く処理を行ってできるだけ早くresponseを返すようにする。
・暗証番号が間違っている時には、数秒間waitしてからresponseを返し、かつ、
 waitしている間は、新たなリクエストを受け付けないようにする。
・こうすれば暗証番号を順番に試してたまたま開く鍵を見つけることが現実的な
 時間では不可能になるので悪意を持ったアプリから身を守ることができる。
2021/01/02(土) 15:33:34.85ID:XwpZ0T7a
いやだから、その暗証番号はカード使う人が外部から指定するんだろ
その暗証番号を指定している人が、そのカードの正しい所有者かどうか確認できないと思うんだが
これが安全だと思えないのは俺がおかしいのか?
2021/01/02(土) 15:35:28.24ID:kLdWoF3Z
>>399
すまんが、俺のIQは、150超だから、一般プログラマには理解できないかも知れない。
401デフォルトの名無しさん
垢版 |
2021/01/02(土) 15:46:16.27ID:5cxm5c+d
InputFile の OnChange で、選択されたファイル数が0の場合はどうすればイベント拾えるのでしょうか?

<InputFile OnChange = "method" />

@code {
private void method(InputFileChangeEventArgs e)
{
//ファイル未選択の場合はこのメソッド自体が呼び出されない。
}
}
2021/01/02(土) 16:59:19.62ID:kLdWoF3Z
>>399
WebViewという名前でも、ネット回線からダウンロードしてきた
HTML+JS+Wasmを表示・実行するわけではなく、アプリにパッケージされた
HTML+JS+Wasmを表示・実行するので、所有者の同一性は最初から保証される。
もちろんアプリのパッケージを改ざんすれば駄目だが、それは今回の
セキュリティー問題とはまた別の話。
アプリの改ざんについては、そもそも論で、それはそれで別の方法で改ざんを
防止する技術が必要となる。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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