C# 如何使用Blazor使用RFID/NFC
正如标题所示,我想在blazor应用程序中实现一个RFID阅读器 传统上,DotNetCore应用程序在服务器端运行。但是有了blazor clientside这可能吗 blazor是否支持Active X 更新: 假设您指的是通过本地通信端口(COM、USB、蓝牙等)使用与常见RFID和NFC硬件一起工作的桌面PC.NET程序集,则不可能 然而,几年后,如果浏览器供应商增加了对API的支持,那么您可以从代码中使用这些API 一些RFID硬件供应商(包括系统集成商和实际的硬件OEM)提供基于基础设施的读卡器/扫描仪(永久安装在墙上或天花板上的那种),这些读卡器/扫描仪提供基于HTTP的web服务(SOAP、REST等),Blazor代码也可以使用这些服务 以下是一份清单:C# 如何使用Blazor使用RFID/NFC,c#,razor,blazor,C#,Razor,Blazor,正如标题所示,我想在blazor应用程序中实现一个RFID阅读器 传统上,DotNetCore应用程序在服务器端运行。但是有了blazor clientside这可能吗 blazor是否支持Active X 更新: 假设您指的是通过本地通信端口(COM、USB、蓝牙等)使用与常见RFID和NFC硬件一起工作的桌面PC.NET程序集,则不可能 然而,几年后,如果浏览器供应商增加了对API的支持,那么您可以从代码中使用这些API 一些RFID硬件供应商(包括系统集成商和实际的硬件OEM)提供基于基础
- 使用浏览器内JavaScript API的Internet/LAN网站或PWA:
- 直连(包括PAN/蓝牙)RFID+NFC读卡器硬件:
- 蓝牙:可能,它取决于硬件和浏览器支持。(还请注意,尽管共享“蓝牙”品牌,但蓝牙LE和“正常”蓝牙有很大不同)
- USB/COM:目前没有,也没有其他浏览器支持它
- 具有基于HTTP的web服务的基础结构扫描仪/读卡器:是,前提是您可以使用
/fetch
、XMLHTTPRequest
或EventSource
访问它们WebSocket
- 直连(包括PAN/蓝牙)RFID+NFC读卡器硬件:
- 使用Blazor中的C#代码和.NET库的Internet/LAN网站或PWA(因此不从Blazor中调用浏览器JavaScript API)
- 直连(包括PAN/蓝牙)RFID+NFC读卡器硬件:否(因为Blazor中不提供操作系统服务/系统调用)
- 具有基于HTTP的web服务的基础结构扫描仪/读卡器:是,前提是您可以使用
访问它们HttpClient
- 使用Cordova/PhoneGap或Electron的设备应用程序(移动或桌面):
- 直接连接(包括PAN/Bluetooth)RFID+NFC阅读器硬件:可能,取决于Cordova、PhoneGap或Electron环境提供的额外API
- 具有基于HTTP的web服务的基础结构扫描仪/读卡器:是,前提是您可以使用
/fetch
、XMLHTTPRequest
或EventSource
访问它们WebSocket
- 在用户计算机上安装了服务进程的桌面计算机,该计算机通过仅限本地主机的HTTP侦听器与web应用程序交互:
- 是。见下面我的原始答案
- 请注意,此解决方案意味着服务流程可以直接与web应用程序通信,而无需web浏览器应用程序
mscorlib.dll
、System.dll``和其他程序集,这些程序集将删除所有涉及浏览器中不可用的平台服务的操作,而会抛出新的PlatformNotSupportedException
——因此,如果您尝试使用.NET中的文件系统API(System.IO.File
等)然后会出现异常/错误
在PC上的任何图灵完整编程环境(如Blazor和WebAssembly)中,您可以执行任何想要的信息处理任务,但可以执行任何在现实生活中发生的程序活动(例如IO、进行系统调用、控制硬件设备)必须通过系统调用通过操作系统,.NET系统调用在CLR内部发生(通常使用MethodImplOptions.InternalCall
方法和P/Invoke([DllImport]
)方法)-这根本不是Blazor CLR制作的-尽管有些API被重新映射到本机JavaScript,例如Console.WriteLine
被映射到Console.log
至于ActiveX——15年来,没有浏览器支持不受限制的、非沙盒的ActiveX控件。ActiveX已经死了。浏览器也已经放弃了对Java小程序的支持
可能的解决办法:
也就是说,如果您可以在客户端计算机上安装自己的程序,那么您就可以让您的web应用程序(即使它托管在公共Internet网站上)通过本地HTTP服务器(包括WebSocket)与客户端程序通信从本地浏览器发出的fetch
或XMLHttpRequest
请求访问(幸运的是没有外部连接)。这就是Dell Computers网站“查找我的计算机的服务标签”的方式功能有效:Dell电脑预装了一个小型web服务器,用于侦听环回请求并使用服务标签进行回复(我认为请求确实需要签名,这样第三方网站就不能做同样的事情来获取访问者的Dell服务标签)
127.0.0.1:12345
,并执行RFID/NFC操作以响应传入的请求web的支持