2011-04-12 111 views
1

我有一個使用Razor視圖引擎的ASP.Net項目,它目前使用WebMatrix.Data.Database.Open直接查詢各種數據庫。WebMatrix中查詢WCF服務的最佳方式是什麼?

我試圖遷移所有使用WCF的Web服務的直接數據庫訪問,以便獲得一致的業務邏輯。在這樣做的同時,我還啓用了WCF服務,使其成爲「httpGetEnabled」。這使我可以使用Excel宏來查詢同一個Web服務。

我的問題是,從Razor/WebMatrix頁面查詢這些Web服務的最佳方式是什麼?

我應該JSON啓用我的WCF服務並使用WebMatrix JSON幫助器嗎?或者我應該使用JQuery來獲取XML?

我會假設前者是最好的方法,但我如何使JSON啓用我的WCF服務?我記得看到一段視頻,它允許我爲WCF請求指定一個附加查詢參數來獲取JSON,但我無法再找到它。

任何想法或指針在正確的方向將不勝感激。

親切的問候。


編輯:

我最近看到了這對堆棧溢出: Client Side Binding using by Converting the WCF Services to JSON

在這之後,我去了周圍WebHttpBehavior提到的MSDN文章。我已經添加了「automaticFormatSelectionEnabled = true」到Web.config中的webHttp元素。此外,添加以下代碼,然後讓我來指定「格式= JSON」作爲查詢參數:

string formatQueryStringValue = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"]; 
if (!string.IsNullOrEmpty(formatQueryStringValue)) 
{ 
    if (formatQueryStringValue.Equals("xml", System.StringComparison.OrdinalIgnoreCase)) 
    { 
     WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Xml; 
    } 
    else if (formatQueryStringValue.Equals("json", System.StringComparison.OrdinalIgnoreCase)) 
    { 
     WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json; 
    } 
} 

我現在只需要找出如何使用WebMatrix的JSON助手得到的結果。 ..當我得到更多的信息時會更新。


編輯2

嗯,我不認爲幫助......現在,我可以從Web服務得到JSON,但JSON網絡助手似乎只幫助,如果你有一些JSON數據已經。我只是不確定如何獲取JSON數據,然後我可以使用JSON Helper將它轉換(解碼)爲一個類。

所以我想我現在的問題是,我如何獲得JSON數據,然後將它連接到WebMatrix/Razor以便在WebGrid中使用?

+0

你想調用從客戶端或服務器的服務? – SLaks 2011-04-12 14:02:01

+0

我真的沒有偏好,我想我只是想要做什麼被認爲是最好的做法... – Darren 2011-04-12 14:03:17

+0

這完全取決於你想做什麼。 – SLaks 2011-04-12 14:12:32

回答

0

從我看過的所有內容中,如果我沒有錯,你會想知道這種情況下的最佳做法。

從我所知道的最好的做法是不要讓你的網站通過wcf進行查詢。

爲什麼? -因爲它們都位於您的服務器上......沒有意義再創建一個連接來獲取數據。 他們都應該有直接連接到你的數據爲webmatrix .... 你會使用WCF的其他應用程序,如你創建的.exe存儲農場動物。

特別提示:您可以將WCF添加到您的ASP中。如果你仍然需要它,那麼不需要項目和訪問相同的數據庫。

+0

雖然我同意Wcf對於這個例子有點矯枉過正。我不確定你在服務器上的含義。網頁提出的任何請求都不會從服務器發出,而是從客戶端計算機發出。 – Jesse 2011-04-12 18:19:58

+0

對不起,如果我不清楚,有點多任務。將網頁劃分爲兩條不同路線的請求有什麼意義?組織他所有的代碼將會更加困難。他們都位於服務器上,不妨訪問一直在網站上提供的所有內容。 – 2011-04-12 19:46:04

+0

抱歉,延遲響應。我的問題是,Web服務已經存在,並具有我不想複製的業務邏輯。另外,它還連接到別處的傳統數據庫。最後,如果我無法控制Web服務呢?我已經在VS中添加了一個Web引用(我不確定你可以在WebMatrix接口中做什麼),但現在我得到一個錯誤,它無法在服務模型中找到端點...必須是一個更簡單的方法... – Darren 2011-04-27 13:02:52

相關問題