搞了个Blazor工具站,域名一次性买了10年!
大家好,我是沙漠尽头的狼。
在 Dotnet9 上线在线小工具和小游戏后,服务器的压力感觉挺大的,打开25个页面,内存占用170MB左右,CPU保持在60~70%,看来Server真不适合搞这类交互较多的程序(服务器配置:2核4G内存),所以站长加急上线 Blazor Wasm 版本网站,便于大家直观对比了解两种模式的区别,下面请看我细说。
1. 关于上线Dotnet工具箱
为了后面工具和游戏的扩展,站长把去年买的域名 dotnetools.com 用上了,该域名一次性买了10年(不用担心网站过几年消失,当然不排除意外,比如站长没钱续费服务器。。。),并赶紧在1天之内开发并部署了一个 Blazor Wasm 版本网站,把在 Dotnet9 已经上线的在线小工具和游戏同步搬过来了,大家可以体验下:https://dotnetools.com:

2. Dotnet工具箱网站开源的
网站源码组织结构如下,只有一个工程,为了快速上线,代码也比较清晰明了:

网站源码链接在文末,别再问我源码地址了。。。。
3. Blazor Server为什么不适合开发在线工具或游戏之类的网站应用?
Blazor Server 不适合开发在线工具或游戏之类的网站应用,主要是因为它的工作原理和特性导致了一些限制和不适用的情况。
实时性限制:Blazor Server 使用了 SignalR 技术来实现与服务器的实时通信,但由于所有的 UI 更新都需要通过服务器来完成,因此在网络延迟较高的情况下,用户可能会感受到明显的延迟。这对于在线工具或游戏等需要实时响应的应用来说是不可接受的。
服务器资源消耗:Blazor Server 的工作原理是将整个应用部署在服务器上,每个用户都会占用一个连接和一些服务器资源。对于在线工具或游戏等需要大量用户同时在线的应用来说,这可能会导致服务器资源消耗过大,难以扩展和维护。
客户端性能限制:Blazor Server 的 UI 渲染是在服务器上完成的,然后通过 SignalR 将更新的 UI 推送到客户端。这意味着客户端的性能对于应用的响应速度和用户体验有很大影响。对于一些复杂的在线工具或游戏来说,客户端的性能可能无法满足需求。
综上所述,Blazor Server 更适合开发那些对实时性要求不高、用户量较小、对服务器资源消耗要求不高的网站应用。对于在线工具或游戏等需要实时性和大量用户同时在线的应用,Blazor WebAssembly 可能更适合,因为它可以将整个应用部署到客户端,减轻了服务器的负担,并提供了更好的用户体验。
4. 选择Blazor Wasm开发工具站理由
Dotnet9 网站选择Blazor Server依然不变,因为博客类网站需要SEO,需要搜索引擎提供流量。
而 Dotnet工具箱 主要关注的是在线小工具和小游戏,所以选择Blazor Wasm,当谈到选择Blazor WebAssembly时,有几个令人兴奋的优势值得一提:
即时性能:Blazor WebAssembly利用WebAssembly(Wasm)技术,将C#代码编译成高效的二进制格式,可以在浏览器中直接运行。这意味着您可以在客户端使用C#编写的应用程序,而无需将其转换为JavaScript。这种直接运行的能力使得Blazor WebAssembly具有接近原生应用程序的性能,为用户提供更快的加载速度和更流畅的用户体验。
跨平台:Blazor WebAssembly是一个跨平台的解决方案,可以在各种操作系统和设备上运行,包括Windows、Mac、Linux和移动设备。这意味着您可以使用相同的代码库构建适用于不同平台的应用程序,从而减少开发和维护的工作量。
开发效率:Blazor WebAssembly使用C#语言和.NET框架,这是一个广泛使用的开发工具和生态系统。如果您已经熟悉C#和.NET,那么您可以立即开始使用Blazor WebAssembly进行开发,无需学习新的语言或框架。这种开发效率可以大大加快项目的开发速度,并减少开发人员的学习曲线。
强大的生态系统:Blazor WebAssembly是基于.NET生态系统构建的,这意味着您可以利用.NET的丰富功能和第三方库来构建功能强大的应用程序。您可以使用.NET的各种工具和技术,如Entity Framework、ASP.NET Core等,来简化开发过程并提高应用程序的质量和可维护性。
安全性:Blazor WebAssembly应用程序在客户端运行,但它们是在沙箱环境中执行的,与原生应用程序相比,它们具有更高的安全性。这意味着您可以在客户端执行敏感操作,而无需担心安全问题。此外,由于使用C#编写代码,您可以利用.NET的安全功能来保护应用程序免受常见的安全漏洞和攻击。
综上所述,Blazor WebAssembly具有即时性能、跨平台、开发效率、强大的生态系统和安全性等令人兴奋的优势。这些优势使得Blazor WebAssembly成为一种令人激动的技术选择,为开发人员提供了构建高性能、跨平台的Web应用程序的新方式。
重点:WASM才是Blazor的未来。
5. 详细对比Blazor Server和Blazor Wasm
Dotnet9 网站选择Blazor Server,可在在线工具和在线游戏页面体验Server,比如 扫雷游戏,在游戏页面也可选择跳转到 Dotnet工具箱 的 扫雷游戏 页面,这是Wasm版本,可通过浏览器F12打开开发者工具查看网络请求情况,下面简单说说查看步骤。
Dotnet9 页面的 扫雷游戏,点击工具栏可以跳转到 Dotnet工具箱 的 扫雷游戏 页面:

Dotnet9 页面的 扫雷游戏页面,看网络请求,几乎一直在请求,简直令人发指,丧心病狂:

Dotnet工具箱 的 扫雷游戏 页面,看网络请求,只有网页的图片请求,其他请求就没有,这就是客户端的魅力(WebAssembly):

关于Blazor,或Blazor Server与Blazor Wasm,相信很多人只是听说过,对相关的概念了解不多,这里通过询问GPT,回答的和前面段落类似,这里再对比列出给大家做个普及吧:
Blazor是一个用于构建Web应用程序的开源框架,它允许使用C#和.NET来编写客户端代码。Blazor有两种模式:Blazor Server和Blazor WebAssembly(Wasm)。下面是对这两种模式的详细对比:
- 架构:
- Blazor Server:Blazor Server模式将应用程序的UI渲染在服务器上,然后通过SignalR将UI更新推送到客户端。客户端通过与服务器建立持久连接来接收UI更新和处理用户交互。
- Blazor WebAssembly:Blazor Wasm模式将整个应用程序的代码和依赖项编译为WebAssembly格式,并在客户端上运行。应用程序在客户端上独立运行,不需要与服务器保持持久连接。
- 性能:
- Blazor Server:Blazor Server模式的性能受到服务器和网络的影响。由于UI渲染在服务器上进行,因此对于大型应用程序或高并发场景,可能会对服务器造成较大的负载。
- Blazor WebAssembly:Blazor Wasm模式的性能主要受到客户端设备的影响。由于应用程序在客户端上运行,因此可以获得更好的响应速度和更低的延迟。
- 可靠性:
- Blazor Server:Blazor Server模式依赖于服务器的稳定性和可用性。如果服务器出现故障或网络连接中断,应用程序将无法正常工作。
- Blazor WebAssembly:Blazor Wasm模式在客户端上独立运行,不依赖于服务器的稳定性和可用性。即使服务器不可用,应用程序仍然可以继续运行。
- 开发体验:
- Blazor Server:Blazor Server模式的开发体验类似于传统的服务器端开发,可以使用.NET的完整功能和生态系统。但是,由于UI渲染在服务器上,因此在处理用户交互时需要考虑与服务器的通信延迟。
- Blazor WebAssembly:Blazor Wasm模式的开发体验类似于客户端开发,可以使用C#和.NET的大部分功能,但某些功能可能受到限制。由于应用程序在客户端上运行,因此可以提供更接近原生应用程序的用户体验。
总的来说,Blazor Server适用于需要快速开发和部署的应用程序,而Blazor WebAssembly适用于需要更好的性能和独立运行的应用程序。选择哪种模式取决于应用程序的需求和优先级。
6. 最后的话
前面两篇文章,有部分网友建议站长使用Wasm模式,站长已经成功部署上线了,大家有什么工具需求欢迎留言,站长有空会考虑加上,当然希望大家能PR工具和游戏,只限于Blazor WASM开发的哦。
今天分享到这,十分感谢您的阅读。
- 网站地址:https://dotnetools.com/
- 网站源码:https://github.com/dotnet9/dotnetools
- .NET版本: .NET 8.0.0-preview.5.23280.8
- 微信技术群:添加站长微信(dotnet9com),一定要备注【入群】2个字
- QQ技术群:771992300
搞了个Blazor工具站,域名一次性买了10年!的更多相关文章
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...
- Linux基础命令---nslookup查询域名工具
nslookup nslookup是一个查询DNS域名的工具,它有交互和非交互两种工作模式. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- 谷歌SEO老域名注册完全攻略
老域名有优势,不管在百度和谷歌都是一样的. 我们查看搜索结果就能发现,谷歌里面很多排前十的网站都是N年前的,一零年以后的算是比较新的,很多产品网站域名是零几年,甚至很多排名更好的域名是九几年的. 谷歌 ...
- [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】
[课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...
- 创立一个网站的前前后后(起因,域名,云平台,备案,CDN等等)(1)
起因 写完<完美软件开发:方法与逻辑>这书后,原本想继续写书的,可出来参加了些社区活动后,我发现我写的书大家评价还行,但其实不太理解.而接下来想写的书更加抽象点,准备叫<管理的解析& ...
- 轻量级工具网站SimpleTools
[解释]本来这篇文章是在前天发出来的,可是当时是刚申请的域名,现在都要域名实名认证,导致我发的项目网址打不开,惹来了很多博友的吐槽,在此说声抱歉,今天一大早就把实名认证提交了,现在网站已经可以正常访问 ...
- 在线压缩JS的工具
给大家介绍款在线压缩JS的工具 首先说下该工具的域名:http://javascriptcompressor.com/ 进入后界面如下: 具体要讲下它的功能点:在线压缩 Javascript 源码可以 ...
- metools,不花一分钱就能拥有自己的工具站点?
需要[加密/解密][编码/解码][生成二维码]的时候不用再进百度点广告~ 也不需要去收藏夹找网址~ 我的目的大概就是如此. 项目地址:https://github.com/yimogit/metool ...
- 说说PC站和移动站的移动适配关系优化
曾经写过关于手机网站的SEO优化方向,但是多数是注重在移动网站代码方面,而把移动和PC的重点关系优化给忽略了,这方面也是很多做SEO优化站长给忽略的一些事情. 2015年11月6日,在百度站长平台可以 ...
- python使用pyqt写带界面工具
上篇介绍的使用python自带tkinter包,来写带界面的工具. 此篇介绍使用pyqt来开发测试工具. tkinter的好处是python官方自带,上手容易(但手写控件复杂),布局和摆放都不直观和容 ...
随机推荐
- Lucas定理 、斯特灵公式
斯特灵公式是一条用来取n阶乘的近似值的数学公式. 公式为: 用该公式我们可以用来估算n阶乘的值:估算n阶乘的在任意进制下的位数. 如何计算在R进制下的位数:我们可以结合对数来计算,比如十进制就是lg( ...
- 解析$nextTick魔力,为啥大家都爱它?
1.为什么需要使用$nextTick? 首先我们来看看官方对于$nextTick的定义: 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 由于vu ...
- Chrome扩展程序是如何进行消息传递的
大家好,我是 dom 哥.这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星. 一个复杂的 Chrome 扩展程序通常由 content_scripts,background,ac ...
- Keepalived 高可用详解
Keepalived 详解 1.Keepalived介绍 Keepalived是一个基于VRRP协议来实现LVS服务高可用方案,可以利用其来避免单点故障.一个LVS服务会使用2台服务器运行Keep ...
- 【C#】【DateTime】获取当前时间的前一天或者后一天方法学习
假期懈怠了一阵子,因为工作环境没有网络,随即记录下当时的问题: 1.关于DateTime.Now(2023/10/07)的前一天的时间(2023/10/06),想要通过ToString转换成字符串后除 ...
- java注释、变量、数据类型和运算符
注释 单行注释:// 多行注释:/*开头,*/结尾 JavaDoc注释:/**开头,*/结尾 快捷键:ctrl + ? 变量 第一步:声明变量.即根据数据类型在内存分配空间. 第二步:赋值.即将数据的 ...
- Go 语言为什么很少使用数组?
大家好,我是 frank,「Golang 语言开发栈」公众号作者. 01 介绍 在 Go 语言中,数组是一块连续的内存,数组不可以扩容,数组在作为参数传递时,属于值传递. 数组的长度和类型共同决定数组 ...
- Oracle数据库运维场景下,智能运维如何落地生根?
简介: 「智能运维大数据平台」是一款开箱即用的运维监控平台,通过特有的平台功能可以将企业的基础架构.应用程序.日志管理结合在一起,提供统一采集.统一存储.关联分析.统一监控企业业务保障能力,保障企业业 ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 08.创建主HUD & 自定义作弊指令
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应课程Lecture 14 ,56-58节.本篇文章将会教你将之前创建的各种UMG控件统合到一个主控件 ...
- Spring表达式语言(SPEL)学习(03)
rootObject 在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思 @Test public void t ...