2016-12-06 34 views
0

我正在閱讀在VS 2010 vb.net上創建的網站項目,他們在同一個項目中實現了一個webservice.asmx,以便在javascript方法中調用該項目。換句話說:在web服務而不是API實現的,它是一個webservice.asmx在那裏我可以添加方法來調用數據庫,這些方法是在JavaScript中functions.My問題的有:在同一個項目中的Webservice和網站

  1. 什麼是重要的從JavaScript調用Web服務,而不是回發到服務器和檢索數據形式嗎?
  2. 會議情況如何? Web服務是否可以查看用戶的會話?我在問這個問題,因爲我可以查看一些會議填寫爲:HttpContext.Current.Session("UserID") = userId
  3. 如果可以捕獲並填充用戶頁面的會話,是否有可能訪問同一用戶的asp頁面中的控件?爲什麼?

我對這個web服務有點困惑,我知道的是web服務運行在服務器上,並在應用程序中用作API ...這是我第一次使用寫入的web服務和網站在同一個項目中,謝謝。

回答

2

調用WebService的比做一個回傳快很多,所以如果你想只做你的網站的部分更新,一個WebService是使用(如果您想要創建項目一個不錯的選擇從頭開始,您將使用Web API而不是ASMX WebService)。當然,你必須將結果集成到客戶端的網頁上。如果您想要導致UI更改的異步請求,則還可以在ASPX頁面上使用UpdatePanel

將WebService託管在與Web前端相同的應用程序中以避免CORS問題也很常見。如果您在WebMethod屬性設置爲true EnableSession

web服務還可以訪問該用戶的會話。有些陷阱見this question

隨着請求WebService的是一個單獨的請求時,它並沒有在服務器上直接訪問頁面的控件(閱讀C#/ VB.NET代碼),但你可以改變HTML文檔樹上的客戶端通過使用JavaScript。

如果你需要的網頁和WebService的之間共享服務器上的代碼,你應該建立在由兩個頁面和WebService的叫幫手/業務邏輯類單獨的方法。爲了舉個例子,如果頁面和WebService都需要從數據庫中獲取數據,你需要將用於數據庫訪問的代碼從ASPX頁面移動到一個單獨的類中(這對於很多人來說是個好主意其他原因),並在ASPX頁面和WebService中使用該類。

+0

謝謝你的回覆,關於問題n3你能給我一個例子或鏈接嗎?因爲我遇到了一個問題:我一直在使用繼承另一個類的類,現在我有義務調用使用此繼承類的方法的webservice方法,但我不知道如何,另外我需要禁用可見性並填充一些標籤... –

+0

不客氣。我希望n3的樣本有所幫助。 – Markus

相關問題