我正在阅读一个在 VS 2010 vb.net 上创建的网站项目,他们在同一项目中实现了 webservice.asmx,以便在 javascript 方法中调用。换句话说:webservice 不是作为 API 实现的,它是一个 webservice.asmx,我可以在其中添加调用数据库的方法,并且这些方法在 javascript 函数中使用。我的问题是:
- 从 JavaScript 调用网络服务而不是回发到服务器并在那里检索数据的重要性是什么?
- session 怎么样? Web 服务是否可以查看用户的 session ?我问这个问题是因为我可以查看一些填充为以下内容的 session :
HttpContext.Current.Session("UserID") = userId
。 - 如果可以捕获并填充用户页面的 session ,是否可以访问同一用户的 asp 页面中的控件?为什么?
我对这个 Web 服务有点困惑,我所知道的是 Web 服务运行在服务器上,并在应用程序中用作 API...这是我第一次使用用相同的语言编写的 Web 服务和网站项目,谢谢。
最佳答案
1
调用 WebService 比执行 PostBack 快得多,因此,如果您只想对网站进行部分更新,则 WebService 是一个不错的选择(如果您从头开始创建项目,则可以使用 Web API 而不是 ASMX WebService)。当然,你必须将结果集成到客户端的网页中。如果您希望异步请求导致 UI 发生更改,您还可以使用 UpdatePanel在 ASPX 页面上。
将 WebService 托管在与 Web 前端相同的应用程序中也很常见,以避免 CORS问题。
2
如果您在 WebMethod 上设置 EnableSession
,WebService 也可以访问用户的 session 。属性为真。请参阅this question一些陷阱。
3
由于对 WebService 的请求是一个单独的请求,因此它无法直接访问服务器上的页面控件(以 C#/VB.NET 代码读取),但您可以使用以下命令更改客户端上的 HTML 文档树JavaScript。
如果您需要在页面和 WebService 之间共享服务器上的代码,则应在帮助程序/业务逻辑类中创建由页面和 WebService 调用的单独方法。
举个例子,如果页面和 WebService 都需要从数据库获取数据,您可以将用于数据库访问的代码从 ASPX 页面移动到一个单独的类中(这对于许多其他页面来说是一个好主意)原因)并在 ASPX 页面和 WebService 中使用该类。
关于javascript - Web服务和网站在同一个项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40990225/