创建 Web 服务以从 C# ASP.NET Web 窗体应用程序访问类对象公共方法

Create web service to access class object public methods from C# ASP.NET webforms application

提问人:Jeff King 提问时间:1/10/2023 最后编辑:marc_sJeff King 更新时间:1/10/2023 访问量:81

问:

在我的 C# ASP.NET webforms 应用程序中,有一些数据访问类具有插入/删除数据库记录的公共方法。在浏览器会话期间,某些用户活动会触发这些事件。

为了不重新发明轮子并避免重复代码,我想实例化这些类对象并从应用程序外部调用这些方法,可能使用 Web 服务 使用 SQL Server 代理作业按月计划从 SQL Server 存储过程调用。

Web 服务是否可以以这种方式使用这些数据访问公共方法?

C# asp.net Web 服务

评论

0赞 MD Zand 1/10/2023
是的,它是。查看 .Net 6 中的最小 API。codemag.com/Article/2201081/Minimal-APIs-in-.NET-6

答:

1赞 Albert D. Kallal 1/10/2023 #1

当然,您可以在 Web 表单中采用一些 Web API 和 Web 方法。

然后,100 美元的问题是您打算从另一个站点还是同一站点调用这些 Web 服务?

我的意思是,在“大多数”情况下,如果这是同一个网站,那么就没有理由去听所有这些歌舞,因为代码隐藏无论如何都可以直接使用该类,并且不需要 messay Web 方法或客户端 JavaScript。

当然,如果一个人希望“美化”给定的网页,减少回传的数量?当然,无论如何,您都可以对这些 Web 方法采用 ajax 调用。

您可以使用 Web 服务创建单独的页面 (url),也可以简单地将一些 Web 方法添加到现有网页。

我经常这样做(将 Web 方法放在 say 网页中),因为在您将使用/想要调用此类 Web 方法的同一网页中隐藏此类代码是有意义的。

而且你有很多方法可以调用/使用这样的 Web 方法。

它们内置支持 SOAP 调用(XML,现在很少使用)或 jQuery.AJAX,并且它们支持开箱即用的 XML 和 JSON,并且无需任何额外的编码即可完成。

即使您希望使用带有查询参数的 URL(因此,这将是一个 REST 调用,并且所有这 3 个选项都有效,并且无需更改 Web 方法即可工作)。

从 SQL Server 存储过程调用

哎哟!!!- 在那之前,我们做得很好!!

我不知道 SQL Server 有任何用于调用 Web 服务和 Web 方法的规定。那么,一个网站隐藏了一些代码,甚至是使用一些 SQL Server 数据的代码?当然,没什么大不了的,但是让 SQL Server 调用一些 Web 服务的介绍?咕噜咕噜,不,据我所知,这并不常见,甚至不支持。

当然,您可以做的是采用一些 .net 代码,并创建用 .net 代码编写的 SQL Server 存储过程(这将使您使用 SQL Server 的 Web 服务调用)。 换句话说,必须更改某些 SQL Server 权限(以允许 T-SQL 调用/使用 .net 代码)。这当然是一个不错的选择,并且是使用 c#(或 vb.net)编写 SQL Server 存储过程代码的一种方式。

因此,在大多数情况下,SQL Server 及其代码语言 (T-SQL) 当然不允许也没有任何方法从网站调用/使用/使用 Web 方法。

但是,如果将 CLR 代码引入该 SQL Server(并假设它支持该选项)(某些托管站点不允许将 CLR 代码用于 SQL Server)。SQL Azure 很长一段时间都没有,但我相信最近,他们现在允许这样做,但这是一个安全风险)。

Web 服务是否有可能以这种方式使用这些数据访问公共方法?

如果您创建并公开了一些 Web 方法?当然,但这是一个与使用此类 Web 方法的 SQL 服务器不同的问题。

但是,是的,您可以添加/拥有/创建/使用/享受您创建并添加到 Web 表单站点的 Web 方法吗?是的,创建此类 Web 方法的选项与大多数 Web 系统非常相似。你当然必须创建+编写+设置这样的Web方法,但答案是肯定的,你当然可以。

如前所述,您可以使用 JavaScript、jQuery(我最常使用的)调用/使用/使用此类 Web 方法,或者如果该客户端代码在当前网页中?

那么除了js和jQuery之外,你还可以使用所谓的“页面方法”。这只是调用/使用这些 Web 方法的一种“更”干净的方式,但所有 3 种选择(js、jQuery、js 和 web 方法)都可用。

我要去喝杯咖啡休息一下,但我会回来发布一个最简单的例子,说明如何为 Web 表单创建 Web 方法——它与后来的其他 asp.net 风格没有太大区别。

评论

0赞 Jeff King 1/10/2023
我很欣赏详细的回复。有很多东西需要解读,但让我先从 SQL Server 部分开始 - 我找到了这个链接 (c-sharpcorner.com/blogs/how-to-call-web-service-using-sql),它显示了如何从存储过程调用服务。我还没有深入研究以确认其有效性,但这是一个开始。