Saya memiliki sebuah layanan web yang query data dari file json, tapi aku don't ingin layanan web untuk mengakses file setiap saat. I'm berpikir bahwa mungkin aku dapat menyimpan data di tempat lain (mungkin di memori) sehingga layanan web hanya bisa mendapatkan data dari sana waktu berikutnya's mencoba untuk query data yang sama. Saya agak mengerti apa yang harus dilakukan tapi aku'm hanya tidak yakin bagaimana untuk benar-benar melakukannya. Bagaimana kita bertahan data web service?
Update: Kedua saran, caching dan menggunakan variabel statis, terlihat baik. Mungkin aku harus menggunakan kedua sehingga saya bisa melihat salah satu yang pertama, dan jika itu's tidak ada di sana, gunakan kedua, jika itu's tidak ada di sana, maka saya'll melihat file json.
Memperluas pada Es^^Panas's ide, anda mungkin ingin untuk berpikir tentang di mana anda akan tembolok - baik cache isi dari file json di cache Aplikasi seperti:
Context.Cache.Insert("foo", _
Foo, _
Nothing, _
DateAdd(DateInterval.Minute, 30, Now()), _
System.Web.Caching.Cache.NoSlidingExpiration)
Dan kemudian menghasilkan hasil yang anda butuhkan dari yang ada pada setiap hit. Atau anda bisa cache webservice output pada definisi fungsi:
<WebMethod(CacheDuration:=60)> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
Info yang dikumpulkan dari Layanan XML Web Caching Strategi.
Echo klughing, jika anda JSON data isn't diharapkan untuk sering berubah-ubah, saya pikir cara paling sederhana untuk cache adalah dengan menggunakan statis koleksi beberapa jenis - mungkin DataTable.
Pertama, parse JSON data ke dalam Sistem.Data.DataTable, dan membuatnya statis di Web anda layanan kelas. Kemudian, mengakses objek statis. Data harus tinggal di cache sampai IIS mendaur ulang aplikasi anda renang.
public class WebServiceClass
{
private static DataTable _myData = null;
public static DataTable MyData
{
get
{
if (_myData == null)
{
_myData = ParseJsonDataReturnDT();
}
return _myData;
}
}
[WebMethod]
public string GetData()
{
//... do some stuff with MyData and return a string ...
return MyData.Rows[0]["MyColumn"].ToString();
}
}