微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无需外部数据库即可跟踪用户的操作

如何解决无需外部数据库即可跟踪用户的操作

长话短说:我们正在寻找一种方法来记录用户在我们的 .NET 网站上的进度,最好是将资产存储在应用程序层。我们需要能够下载存储的数据(可以是csv、txt、db等)。

我们正在为一个大学项目制作一个小型教育游戏。参与者将访问为该项目制作的网站,被要求填写一份表格、玩游戏并填写另一份表格。因为为这个项目设置一个全新的服务器可能有点矫枉过正,我正在寻找更简单的无服务器替代方案,特别是因为该网站仅用于该项目,而不是长期使用。

我有两个可能的解决方案:

  1. 在实验结束时,发送一封包含参与者结果的电子邮件
  2. 使用嵌入式数据库

一个选项是“简单”选项,但它可能会受到外部因素的影响,例如失去互联网连接,因为在发送电子邮件之前用户的进度必须临时存储在应用程序中(最有可能在 SessionStorage或饼干)。 第二种选择的问题是,我们担心我们误解了嵌入式数据库的用例,我们想澄清一下。来自嵌入式数据库的教程,例如sqlite,内嵌的数据库好像是在用户的电脑上创建的,而不是在应用层面,以后可以自己读取。

嵌入式数据库是否适用于我们的场景?有没有其他方法可以在应用程序中包含一些“静态”文件,可以在多个会话之间修改和保留? 我们最熟悉 ASP.NET Web Forms,但我们不介意使用 NET Core,因为我们仍处于项目的早期阶段。

如果有一些第三方服务器提供商,这将使服务器设置变得更加容易,我们也对此感兴趣,但它必须是免费的,因为这是一个大学项目。

解决方法

您的用户计算机上没有任何基于 Web 的应用程序的文件。事实上,作为一名 Web 开发人员,我无法选择您计算机上的任何内容来上传。如果我可以这样做,那么当您访问我的网站查看一些可爱的猫图片时,我的代码将在您的硬盘上翻找银行信息、称为“密码”的 Excel 表格,甚至窃取您所有的 Outlook 联系人。>

所以不,您计算机上的 sqLite 数据库或任何文件都是 100% 的限制。

我正在寻找更简单的无服务器替代方案,

您必须使用 asp.net 系统运行 Web 服务器。 Web 服务器是让用户回发的东西。网页传送到网络服务器。 Web 服务器然后开始处理该页面。只有在此“往返”期间,您的 asp.net 代码(由 Web 服务器运行)才能运行。网页因此被处理,然后你的代码(c# 或 vb.net)运行。最终的网页呈现发生,然后网页被发送回用户浏览器。您编写的网络代码(背后的代码)永远不会与用户交互。它只与网页在服务器上的短暂时间交互,然后整个页面现在被发送回客户端浏览器。此时,用户可以再次与网页交互。你不能写这样一个无服务器的应用程序并期望使用asp.net

当然,现在可以以每月不到 10 美元的价格购买包含 SQL Server 的网络托管计划 - 所以我不确定这是哪里或为什么会出现问题。

但是这样的网站需要一个服务器,并且它们需要运行特定类型的网络服务器(IIS,或所谓的 Internet 信息服务)。或者我想您可以决定运行 Apache Web 服务器,但我不知道您可以在 Apache/Linux 上启动和运行 asp.net 站点的效果如何(显然这现在“有点”可能 - 但它是痛苦的我知道)。

那么它是 SQL 服务器(比如免费快速版),还是 MySQL,甚至是嵌入式数据库,例如 sqLite?它们 100% 保留在服务器上,您可以零手段读取/打开/触摸/弄乱客户端的文件。正如我所说,您甚至无法选择要在代码中上传的文件。只有在出现“上传文件”选择按钮时,用户才能选择要打开的文件 - 即使在此之后,您作为开发人员也无法触摸甚至更改该文件名。你会得到一个“东西”,让你上传用户选择的内容(但你永远不能编写代码来接触或抓取客户端计算机上的文件——如果可能的话,那么这个呈现的安全噩梦会破坏互联网第一天)。

当您使用 Visual Studio (VS) 创建 + 构建 asp.net 网站时?那么它也安装了一个完整的网络服务器。 VS 曾经使用内置的 Web 服务器作为 VS 的一部分。但是,由于 Web 技术正在快速发展,并且 Microsoft 正在更新 IIS(他们的 Web 服务器不断),因此要保持 VS 中内置的“小型”Web 服务器与它们的“大型”Web 服务器 100% 兼容变得非常不可能。商业级网络服务器。

因此,他们所做的就是为他们的 Web 服务器获取活跃的(和最新的)源代码,并且他们构建了一个“稍微”轻量级的 Web 服务器版本。那个“较轻”重量的 Web 服务器称为 IIS express - 这就是 VS 能够启动网页的方式。所以不要误会,当你在 VS 中按 F5 来测试/尝试/启动一个网页并运行它时?您正在使用在您的计算机上运行的 FULL BLOWN 网络服务器来完成这项工作。

有一些框架可以让您在浏览器中创建并运行整个桌面应用程序,但在这种情况下存在安全问题,并且每台客户端计算机都需要在每台计算机上安装软件才能正常工作(实际上,您正在安装桌面软件,就像安装任何好的旧桌面程序一样)。但是,再次使用此类系统意味着您要在每台计算机上安装软件才能使其正常工作 - 这在很大程度上意味着您放弃了使用基于网络的软件(无需安装桌面程序)的全部想法和优势。

对于asp.net的任何使用?您需要一个网络服务器,并且 VS 在您的计算机上安装并设置了一个完整的工作网络服务器才能使其工作。

现在,您可以使用 IIS express(VS 安装的那个)将页面服务器发送给网络上的每个人。您将不得不打开计算机上的端口,并处理 Web 配置文件。然而,这很难,因为 IIS express 和完整版之间的“主要”区别是什么?

主要区别在于成熟的 IIS Web 服务器拥有大量的配置屏幕、设置屏幕和管理屏幕,而 IIS 表示没有。然而,它们彼此之间是 100% 相容的。 IIS express 和成熟的 Web 服务器之间的这种 100% 兼容性是必需的,否则当您部署到实际生产的 IIS Web 服务器时,您怎么能真正知道您在计算机上的 asp.net 和 IIS express 中编写的内容将起作用托管您的网站?

所以要运行asp.net 网站?您需要 IIS,并且您需要安装在该机器上的 .dll 和代码库来支持您的 .net 代码的运行。 Web 服务器和您的 .net 代码之间的舞蹈是如何从用户那里接受网页、处理网页、运行代码,然后在处理后将网页的全新副本发送回客户端浏览器.此时,用户可以说输入一些数据,并在本地进行一些交互(JavaScript,或者现在的 Blazer 代码)。但是,任何提交按钮都会使所有重要的回发。该回发是将页面回发到 Web 服务器的“行为”。 Web 服务器接收该页面,然后开始处理背后的代码(包括您的 .net 代码),然后该页面再次发送回浏览器,并再次完成此“往返”过程。

所以不清楚为什么周五几瓶啤酒的价格你找不到低成本的托管网站。如前所述,您必须寻找一个 Windows 托管站点而不是 Linux 站点来运行 asp.net Web 应用程序。但如前所述,许多计划每月不到 10 美元。如前所述,您可以在您现在使用的计算机上运行 EXISTING IIS express 来使用 VS,但是用户随后将通过 IP 地址访问网站(除非他们可能登录到具有域的同一网络的用户) (然后他们可以使用计算机名称代替 IP 地址 - 但您当然没有可以输入的“URL”,除非该 URL 是 IP 地址。

那么就文件和嵌入式数据库之类的东西而言?您所谈论的所有文件和 100% 的文件都是 Web 服务器的独家使用。用户在任何情况下都不会真正触摸、点击、加载、使用 aspx 网页,事实上,即使他们在该网站上输入指向 html 页面的 URL? Web 服务器去获取网页,加载它,处理它,然后将网页发送到客户端浏览器。在零情况下,客户端用户永远无法直接触摸/加载/查看网页,并且在其中未经处理。网络服务器加载这些页面,然后将它们发送给客户端。

如前所述,您可以在浏览器中打开桌面上的静态网页,但因此,您没有交互式网页,也没有可以调用 + 使用 + 消费 .net 的网页您编写的代码和服务器 + 代码必须在往返之前处理该网页,并将整个页面发送回客户端。

因此,对于任何类型的回发,这意味着另一端的网络服务器必须“存在”才能接受该回发。

如果没有可运行的 Web 服务器,您甚至无法想象或考虑此类应用程序是可行的。没有这样的代码,您的浏览器中就无法存在任何类型的回发代码 - 这在很大程度上意味着您没有任何真正的方法来构建基于 Web 的应用程序。

因此,本月少喝 4 杯啤酒,那么您至少可以节省 2-3 个月的网络托管时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。