2011-04-12 94 views
0

中調用我有一個ASMX Web服務這需要幾個簡單的類型作爲輸入,調用一個Oracle存儲過程從中得到響應,然後通過這個響應返回給調用者。數限制的時間內

我想輸入到服務,並假設它們是有效的,並且所需的操作已成功完成,我想以某種方式存儲輸入(以一種有效的方式,因此不會觸及數據庫)達成約定的時間跨度,然後拒絕任何嘗試使用相同數據調用該服務,直到該時間段過期。我希望這是明確的。

因此,通過僞碼的方式...

[WebMethod] 
public Response DoThings(int someInt, string someString, DateTime someDateTime) 
{ 
    if(!Stored(someInt, someString, someDateTime)) 
    { 
     var response = new OracleRepository().CallStoredProcedure(someInt, someString, someDateTime); 
     StoreInputs(someInt, someString, someDateTime); 

     return response; 
    } 
    else return Response.TryLater; 

} 

private void StoreInputs(int someInt, string someString, DateTime, someDateTime) 
    { 
    Store(int someInt, string someString, DateTime, someDateTime); 
    } 

private bool Stored(int someInt, string someString, DateTime, someDateTime) 
    { 
    //some code to find out if the data is stored 
    } 

我不是一個完整的初學者,但我很新的C#,所以不太知道從哪裏開始。任何幫助將不勝感激。

謝謝。

+0

好吧,如果我理解你的問題,最好你不想擊中同一數據多次服務器,看起來像[輸出緩存](http://support.microsoft.com/kb/318299)給我。如果你的** someInt,someString,someDateTime **可以揭示更多,你會看到更好的答案。 – 2011-04-12 08:32:04

回答

2

使用HttpContext.Current.Cache你應該能夠緩存你的存儲過程調用的結果,然後在下一個請求中查詢它的數據,如果發現返回數據而不是做一個新的存儲過程調用。

上的緩存類。新增方法對數據最大年齡看參數:http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx

+0

這正是我所追求的。主席先生,非常感謝。 – Greg 2011-04-12 15:55:06