Bu [HttpPost]
eylem yöntemim var: Burada/Asenkron Denetleyici Kullanabilir miyim? (ASP.NET MVC 3)
[HttpPost]
public ActionResult AddReview(Review review)
{
repository.Add(review);
repository.Save();
repository.UpdateSystemScoring(review.Id); // call SPROC with new Review ID.
return View("Success", review);
}
Yani, temelde bir kullanıcı bir düğmeyi tıklatır, onu veritabanına eklerim (Entity Framework 4.0 üzerinden), değişiklikleri kaydeder ve sonra saklı yordamını kimlikle çağırırım. Bu alanın ikinci son satırı olan alan.
Bu sonra yapılmalıdır gözden geçirme kaydedilir (kimlik alanı sadece bir kez Kaydet kaydedilir adlandırılır ve EF değişiklikleri devam eder), ve bir sistem çapında hesaplamasıdır.
Kullanıcı açısından'ten itibaren, bu hesaplama işleminin yapılmamasına özen göstermiyor veya olmamalıdır.
Bu prosedür 0-20 saniye arasında bir zaman alabilir. Hiçbir şey döndürmez.
Bu bir asenkron denetleyici için bir aday mı?
İncelemeyi ekleyebileceğim bir yol var ve başka bir asenkron kontrolörün uzun süreli SPROC aramasını yönetmesine izin ver, böylece kullanıcı hemen Başarı sayfasına götürülebilir mi?
(kısmen bundan utanıyor) itiraf etmeliyim: Bu, mevcut bir sistemin yeniden yazılmasıdır ve orijinal sistemde (ASP.NET Web Formları), yukarıdaki görevi gerçekleştirmek için başka bir iş parçacığı başlattım - ASP.NET MVC 3'e aynı prensip uygulanıp uygulanamayacağını merak ediyorum.
Herzaman 'ı deneyin ve ASP.NET'te çoklu iş parçacıklarını önleyin, ancak kullanıcı deneyimi # 1 önceliği ve sayfanın zaman aşımını istemiyorum.
Peki bu mümkün mü? Başka fikirleri duymaktan da mutluyum. Ayrıca - burada tetikleyiciler kullanamıyorum, gerçekten neden çok fazla ayrıntıya girmeyi istemiyorum - ama yapamam.
Gerçekten mi? Bunu orijinal olarak önerdiğimde (sistemin orjinal versiyonunda) John Saunders tarafından çarmıha gerildim ve "ASP.NET'te okumaya" karar verdim. Ve evet - sonuç umurumda değil. SPROC hiçbir şey döndürmez - sadece verilerde değişiklik yapar. Yani - daha önce olduğu gibi bir iş parçacığı ateşlemeyi öneriyorsun? – RPM1984
Ve "iplik havuzundan değil" ne demek istiyorsun? Daha önce sadece yeni bir iş parçacığı() yapıyorum, bu yöntemi ayarladım, dizi paramlarını, vb. Geçirin. – RPM1984
@ RPM1984, ASP.NET hizmet istekleri için bir iş parçacığı havuzu kullanıyor. Bu havuzda önceden başlatılmış iş parçacıkları vardır ve bir istek geldiğinde ASP.NET bu havuzdan bir iş parçacığı çizer. Yeni bir konu oluşturmuyor çünkü bu pahalı olabilir. Yeni bir iş parçacığı yarattığınız için 'yeni iş parçacığı()' yapmak iyi. Ayrıca John Saunders'ın * çarmıha gerildiği * yazıya da işaret edebilir misin? –