Webservice和网站在同一个项目中

时间:2016-12-06 07:44:05

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

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

  1. 从javascript调用webservice而不是回发到服务器并从那里检索数据表格的重要性是什么?
  2. 会话怎么样? Web服务是否可以查看用户的会话?我问这个问题是因为我可以查看一些填充的会话:HttpContext.Current.Session("UserID") = userId
  3. 如果可以捕获并填充用户页面的会话,是否可以访问同一用户的asp页面中的控件?为什么?
  4. 我对这个web服务有点困惑,我知道webservice在服务器上运行并在应用程序中用作API ...这是我第一次使用web服务和网站编写项目,谢谢。

1 个答案:

答案 0 :(得分:2)

1

调用WebService比使用PostBack快得多,因此如果您只想对网站进行部分更新,WebService是一个很好的选择(如果您从头开始创建项目,那么& #39; d使用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中使用该类。