سؤال

لقد خلق ويب و عندما كنت ترغب في استخدام أساليب لا مثيل ذلك في إجراء استدعاء الأسلوب و أنا أخيرا التخلص منها ، ومع ذلك أعتقد أيضا أنها يمكن أن تكون بخير إنشاء خدمة ويب في "الفراغ خاصة Main_Load(object sender, EventArgs e)" الحدث.

الشيء هو أنه إذا كنت تفعل ذلك الطريقة الأولى يجب إنشاء خدمة ويب في كل مرة كنت في حاجة واحدة من الطرق ولكن في طريقة أخرى يجب أن تبقى خدمة ويب اتصال في كل وقت عندما كنت استخدامها في نموذج على سبيل المثال.

أود أن أعرف أي من هذه الممارسات هي أفضل أو إذا كان هناك طريقة أفضل للقيام بذلك

استراتيجية 1

private void btnRead_Click(object sender, EventArgs e)
{
    try
    {
        //Show clock
        this.picResult.Image = new Bitmap(pathWait);

        Application.DoEvents();

        //Connect to webservice
        svc = new ForPocketPC.ServiceForPocketPC();
        svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
        svc.AllowAutoRedirect = false;
        svc.UserAgent = Settings.UserAgent;
        svc.PreAuthenticate = true;
        svc.Url = Settings.Url;
        svc.Timeout = System.Threading.Timeout.Infinite;

        svc.CallMethod();
         ...
    }
    catch (Exception ex)
    {
        ShowError(ex);
    }
    finally
    {
        if (svc != null)
            svc.Dispose();
    }
}

الاستراتيجية 2

private myWebservice svc;

private void Main_Load(object sender, EventArgs e)
{
    //Connect to webservice
    svc = new ForPocketPC.ServiceForPocketPC();
    svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
    svc.AllowAutoRedirect = false;
    svc.UserAgent = Settings.UserAgent;
    svc.PreAuthenticate = true;
    svc.Url = Settings.Url;
    svc.Timeout = System.Threading.Timeout.Infinite;
}

private void btnRead_Click(object sender, EventArgs e)
{
    try
    {
        //Show clock
        this.picResult.Image = new Bitmap(pathWait);

        Application.DoEvents();
        svc.CallMethod();
         ...
    }
    catch (Exception ex)
    {
        ShowError(ex);
    }
}

private void Main_Closing(object sender, CancelEventArgs e)
{
    svc.Dispose();
}
هل كانت مفيدة؟

المحلول

ذلك يعتمد على كيفية غالبا ما كنت تنوي استدعاء خدمة ويب.إذا كنت تنوي أن تكون داعيا باستمرار تقريبا ، فإنه ربما يكون من الأفضل استخدام الأسلوب #2.ومع ذلك ، إذا كان ذلك لن يكون الحصول على ما يسمى تماما في كثير من الأحيان, كنت أفضل حالا باستخدام الأسلوب #1 فقط إنشاء ذلك عندما كنت في حاجة إليها.

نصائح أخرى

الآن أنا جعلت حل جهاز محمول ويتحول إلى استخدامها على غير النظامية مرات ، فإنه يمكن أن تستخدم في 10 دقائق, 1 ساعة و 4 ساعات جدا متغير ، يبدو أن أفضل aproach الاستراتيجية الأولى.

في العام الماضي ذهبنا في المشروع حيث كنا webservices, والحقيقة هي أننا مثيل لدينا webservices في Sub New() إجراءات تشغيله بشكل جيد جدا, ومع ذلك ، في بعض الأحيان ادعى بعض المستخدمين في الولايات المتحدة أنها استيقظت من كراسيهم و عندما عاد و حاول الاستمرار على تطبيق حصلوا على مهلة رسالة الخطأ و أنهم اضطروا إلى إعادة تسجيل الدخول مرة أخرى.

لقد ظننت أنه ربما كان ذلك حسنا ربما لأن المستخدمين خرجت لفترة طويلة جدا من المقاعد, ولكن مرة واحدة في عرض التطبيق مع المديرين التنفيذيين حدث بالضبط نفس السيناريو و أنا شخصيا لا أحب هذا السلوك لهذا السؤال.

شكرا على الإجابة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top