【问题标题】:Webservice and website in the same projectWebservice和网站在同一个项目中
【发布时间】:2017-04-20 18:55:55
【问题描述】:

我正在阅读在 VS 2010 vb.net 上创建的网站项目,他们在同一个项目中实现了 webservice.asmx,以便在 javascript 方法中调用。换句话说:webservice不是作为API实现的,它是一个webservice.asmx,我可以在其中添加调用数据库的方法,这些方法用于javascript函数。我的问题是:

  1. 从 javascript 调用 Web 服务而不是回发到服务器并在那里检索数据表单的重要性是什么?
  2. 会话呢?网络服务是否可以查看用户的会话?我问这个问题是因为我可以查看一些填充为:HttpContext.Current.Session("UserID") = userId
  3. 如果可以捕获和填充用户页面的会话,是否可以访问同一用户的 asp 页面中的控件?为什么?

我对这个 web 服务有点困惑,我知道 web 服务在服务器上运行并在应用程序中用作 API ......这是我第一次使用同样编写的 web 服务和网站项目,谢谢。

【问题讨论】:

    标签: javascript c# asp.net vb.net web-services


    【解决方案1】:

    1

    调用 WebService 比 PostBack 快得多,因此如果您只想对网站进行部分更新,WebService 是一个不错的选择(如果您从头开始创建项目,您会使用 Web API 而不是 ASMX WebService)。当然,您必须将结果集成到客户端的 Web 页面中。如果您希望有导致 UI 更改的异步请求,您还可以在 ASPX 页面上使用UpdatePanel

    将 WebService 托管在与 Web 前端相同的应用程序中也很常见,以避免CORS 问题。

    2

    如果您将WebMethod 属性上的EnableSession 设置为true,WebService 也可以访问用户的会话。请参阅this question 了解一些陷阱。

    3

    由于对 WebService 的请求是一个单独的请求,它无法直接访问服务器上的页面控件(在 C#/VB.NET 代码中读取),但您可以通过使用更改客户端上的 HTML 文档树JavaScript。

    如果您需要在页面和 WebService 之间共享服务器上的代码,您应该在页面和 WebService 调用的帮助器/业务逻辑类中创建单独的方法。

    举个例子,如果一个页面和 WebService 都需要从数据库中获取数据,你可以将用于数据库访问的代码从 ASPX 页面移到一个单独的类中(这对于许多其他的原因)并在 ASPX 页面和 WebService 中使用该类。

    【讨论】:

    • 感谢您的回复,关于问题n3,您能给我一个例子或链接吗?因为我遇到了一个问题:我一直在使用一个继承另一个类的类,现在我不得不调用使用这个继承类的方法的 webservice 方法,但我不知道如何,另外我需要禁用可见性并填充一些标签...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多