خدمة الويب على قيد الحياة إلى الأبد
-
09-06-2019 - |
سؤال
غالبًا ما أستخدم خدمة الويب بهذه الطريقة
public void CallWebservice()
{
mywebservice web = new mywebservice();
web.call();
}
لكن في بعض الأحيان أفعل هذا
private mywebservice web;
public Constructor()
{
web = new mywebservice();
}
public void CallWebservice()
{
web.call();
}
الطريقة الثانية تعجبني كثيرًا ولكن في بعض الأحيان تنتهي المهلة واضطررت إلى بدء التطبيق مرة أخرى، الطريقة الأولى أعتقد أنها تزيد من الحمل وهي ليست فعالة جدًا، في الواقع، في بعض الأحيان تُرجع المكالمة الأولى WebException - ConnectFailure (أنا لا أعرف لماذا).
وجدت مقالاً (مشاكل خدمة الويب (ضوء في نهاية النفق؟)) الذي يتجاوز المهلة الزمنية لتحويل خاصية KeepAlive إلى خطأ في وظيفة التجاوز GetWebRequest، إليك الرمز:
Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest
Dim webRequest As Net.HttpWebRequest = CType(MyBase.GetWebRequest(uri), Net.HttpWebRequest)
webRequest.KeepAlive = False
Return webRequest
End Function
السؤال هو، هل من الممكن تمديد مهلة خدمة الويب إلى الأبد، وأخيرًا، كيف يمكنك تنفيذ خدمات الويب الخاصة بك للتعامل مع هذه المشكلة؟
المحلول
إن الفئات التي تم إنشاؤها بواسطة Visual Studio لخدمات الويب هي مجرد وكلاء بحالة قليلة، لذا فإن إنشائها رخيص جدًا.لن أقلق بشأن استهلاك الذاكرة بالنسبة لهم.
إذا كان ما تبحث عنه هو طريقة لاستدعاء طريقة الويب في سطر واحد، فيمكنك ببساطة القيام بذلك:
new mywebservice().call()
هتافات