【问题标题】:WinForms Server To Handle ASP.NET WebWinForms 服务器处理 ASP.NET Web
【发布时间】:2021-03-02 23:04:19
【问题描述】:

我即将将我的 Winforms 应用程序转换为 ASP.NET Web 应用程序。我唯一的问题是:

我的 Winforms 应用程序通过 TCP/IP 连接 (TCPClient) 连接到服务器,并通过我自己的自定义协议处理所有请求和命令(发送的字符串经过服务器端验证并发送回客户端)

我可以保留这台服务器来处理来自我的 ASP.Net Web 应用程序的请求(我打算使用相同的协议)吗?

我需要在服务器中更改什么吗?将 Winforms 应用程序迁移到 ASP.Net 应用程序有何不同?

你建议我使用 WebForms 还是 MVC?

【问题讨论】:

  • 不看服务器就不可能知道,但如果我做对了,服务器对winforms程序一无所知,它们都坚持协议,仅此而已。如果是这样的话,如果网站保持协议,服务器不会注意到差异,因此根本不需要更改。
  • 不,服务器知道只接受来自经过验证的握手代码的命令,如果本地变量loggedinuser,则匹配发出请求的人。除此之外,它只是发送给客户端的数据获取请求
  • 我明白了我真正要问的问题,在 ASP.Net Web 应用程序中使用 TCPClient 客户端类实用吗?
  • 这是一个复合问题,在 1 个特定答案中可以回答的范围很广。这不仅仅是一个不同的球场,而是一个不同的大陆。
  • @StavrosPehlivanidis 在 ASP.NET 网站中使用 TCPClient 与使用 winforms 程序没有区别。最终,它与您运行的框架完全相同。如果您使用 .NET Core 而不是普通的 .NET,您可能会看到细微的 API 差异,但事实仍然是可以以几乎相同的方式完成连接。事实上,这种情况并不少见。

标签: asp.net vb.net


【解决方案1】:

好吧,我们可能会在这里混淆一​​些东西。

您有一个 asp.net 应用程序。那么问题来了:

asp.net 网络表单应用程序

或

asp.net 网络表单网站

虽然以上两者相似?

嗯,在第一种情况下,Web 应用程序意味着您在 Web 部署之前编译您的代码,并且在大多数情况下,该站点被视为整个站点(Web 配置文件位于根目录等)。并且任何外部程序集等都在编译(或发布时)链接。通常,您不会编辑、设计和处理实际的网站文件。换句话说,保存您的项目的文件夹不能只是被拖到网络服务器文件夹中,它会起作用。

当然,这允许您为 pdf 文件或其他文件编写自定义处理程序。

因此您可以在 http 处理程序中添加 + 钩子。

当然,这也允许您构建自定义登录(身份验证提供程序)。

因此,您可以将 Web 应用程序想象成一个完整的应用程序 - 就像您为桌面应用程序拥有的所有源文件一样。然后你编译这整个大的东西,然后你编译成那个 .exe(或 .dll)。 然后,您必须通过网络将整个内容作为应用程序发布到网络服务器。

所以这是整个网站。诸如自定义登录提供程序、http 处理程序,甚至捕获 Session() 启动之类的事情都可以完成。

当您进行网络发布时,您将获得一个标准网站,并删除文件夹和所有 SOURCE vb.net(或 c#)文件。就像编译和部署任何桌面应用程序一样 - 源代码和文件被删除。不用说,这种方法对于来自桌面环境的开发人员来说是“常见的”。

所以这个模型真的不能做任何子站点。您正在直接连接到 IIS Web 服务器。

网站? 这只是一组文件夹,您可以让 IIS 站点对其进行操作。事实上,有人可能会争辩说,在您发布一个 Web 应用程序之后,您会得到“大部分”与网站相同的东西。

但是这个模型很容易拼凑出一个只有 5 个页面的网站,然后将其部署到您的本地虚拟主机上?没有!!! - 不能那样做!

当然,原因是您没有处理现成的网站布局和文件。您必须将整个混乱编译成一个应用程序。

因此,就像部署桌面应用程序一样,您正在部署整个系统。

现在,如果您要拥有一个具有用户登录、密码并编写 IIS 将尊重和使用的自定义身份验证提供程序的站点?再一次,网站无法做到这一点。

因此,您再次需要一个支持登录挂钩的代码系统,并让您控制这些人可以看到和执行的操作。那么对于业务线应用呢?好吧,这将是一个完整的系统 - 因此您需要控制登录、母版页等。

那么根,配置文件,他们是如何登录到您的站点的?一切都必须恰到好处,并且该配置设置和文件是 Web 服务器的 BASE SITE 配置。您可以更改 authnetical 提供程序 - 包括自定义 http 句柄等。

所以这是一个完整的自定义网站。如前所述,这是发布类型的操作。

不过,asp.net 长期以来也支持所谓的网站。

那么网络是什么时候开始的?好吧,您只是将网页转储到一些文件夹中 - 可能是一些超链接可以跳转。但是很多开发人员开始以这种方式工作。因为您可以直接编辑文件并将它们保存回站点?那么在这种情况下不存在应用程序编译甚至网络发布的真正概念。它只是位于网络就绪格式的文件和一组简单的文件夹。

所以一个 asp.net 网站 = 只是文件夹和文件 - 没有发布。

现在进行一点小改动,毫无疑问,网站是不错的。更好的是,您可以说获取一组文件夹,然后将它们拖放到现有网站中 - 您并没有真正发布任何内容,所以就像过去一样,您只需编辑文件并将其复制到 Web 服务器文件夹中,它们就可以工作了。这当然是常见的公平 html 文件。 但是 IIS 也确实支持以这种方式使用 aspx 页面(文件)!

因为这只是一些带有网页的文件夹?然后你可以创建和构建一堆不同的文件夹——每个文件夹都有自己可爱的迷你网站。这意味着发布到您每月 8 美元的廉价 asp.net 托管是可能的。您不需要完整的 IIS 服务器和管理 IIS 服务器系统的能力。您所做的只是将文件复制到网站。不多也不少。结果,您没有使用 Session() 启动,甚至登录事件也不在您的控制之下(当然,除非您自己滚动并且不使用 IIS 安全性。

使用简单的文件和文件夹?然后您的 8 美元托管网站就可以使用了。

但是,即使不是大多数低成本的简单托管网站也不支持 asp.net 应用程序。

因此,您可以将 Web 发布视为替代托管服务提供商提供给您的基本 Web 应用程序系统。这也是为什么您不使用网站的完整 ASP.net 和 IIS 配置选项的原因(您的网络提供商控制并拥有它!!!)。

网站的一大好处是易于更改。如前所述,即使在实时网站文件上,您也可以指向 VS 直接编辑!!!确实没有发布的概念-您只是编辑文件并将它们保存到网站文件夹中。这对于一个小改动来说真的很好 - 网站会为你重新编译代码,对于一个大网站,你可以对后面的一小段代码和网页进行更改 - 只需复制该页面并代码到网站,你就完成了!!!

使用网络应用程序?您正在对任何和所有更改进行全面重新编译,重新发布到站点。 (好吧,好吧,你可以潜入并说编辑/更改网页上的一些标记,但在大多数情况下,任何与页面上的控件混淆的东西都会并且很容易破坏驱动该页面的已编译 .dll。

你建议我使用 WebForms 还是 MVC?

这是一笔大买卖。 MVC 甚至没有为您的网页提供视觉设计器(您只能查看和编写标记)。

整个 MVC 代码模型和整个事件模型是非常不同的。所以也许采用 MVC 是个好主意? (它是!),它几乎完全重写了您现有的网站 - 它们的工作方式与 asp.net webforms 应用程序非常不同。

通过 TCP/IP 连接 (TCPClient) 到服务器,并通过我自己的自定义协议处理所有请求和命令

如果您的意思是自定义 http 处理程序?不,网站不支持这一点,您必须创建一个网站应用程序。您不能通过在网站上放置一些网页的简单行为来更改较低级别的 http 处理程序和网络内容 - 您只能使用 Web 应用程序来做到这一点。您选择的身份验证提供程序也是如此 - 简单的网站不允许您构建自己的自定义提供程序(但您可以从头开始构建自己的登录系统 - 但您甚至无法享受自动安全网络的简单设置页面基于他们在给定安全角色中的成员身份。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多