سؤال

أنا أعمل حاليًا على مشروع بمتطلبات محددة.لمحة موجزة عن هذه هي كما يلي:

  • يتم استرداد البيانات من خدمات الويب الخارجية
  • يتم تخزين البيانات في SQL 2005
  • يتم التعامل مع البيانات عبر واجهة المستخدم الرسومية على شبكة الإنترنت
  • خدمة Windows التي تتواصل مع خدمات الويب لا تقترن بواجهة مستخدم الويب الداخلية الخاصة بنا، إلا عبر قاعدة البيانات.
  • يجب أن يكون الاتصال بخدمات الويب قائمًا على الوقت ويتم تشغيله من خلال تدخل المستخدم على واجهة مستخدم الويب.

يتم النموذج الحالي (ما قبل الإنتاج) لتشغيل اتصالات خدمة الويب عبر جدول قاعدة البيانات الذي يخزن طلبات التشغيل الناتجة عن التدخل اليدوي.لا أرغب حقًا في الحصول على آليات تشغيل متعددة، ولكنني أرغب في أن أكون قادرًا على ملء جدول قاعدة البيانات بالمشغلات بناءً على وقت المكالمة.كما أرى أن هناك طريقتين لتحقيق ذلك.

1) قم بتعديل جدول التشغيل لتخزين معلمتين إضافيتين.واحد "هل هذا قائم على الوقت أو إضافة يدويًا؟" وحقل لا لبس لتخزين تفاصيل التوقيت (التنسيق الدقيق الذي سيتم تحديده).إذا كان مشغلًا تم إنشاؤه يدويًا، ضع علامة عليه على أنه تمت معالجته عند إطلاق المشغل، ولكن ليس إذا كان مشغلًا مؤقتًا.
أو
2) قم بإنشاء خدمة Windows ثانية تقوم بإنشاء المشغلات أثناء التنقل على فترات زمنية محددة.

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

سأكون ممتنًا إذا تمكن أي شخص من توفير بضع دقائق لمساعدتي في تحديد الطريق الذي يجب أن أسلكه (أحد هذين الطريقين، أو ربما الطريق الثالث، غير المدرج).

هل كانت مفيدة؟

المحلول

لماذا لا تستخدم مهمة SQL بدلاً من خدمة Windows؟يمكنك تغليف جميع أكواد "المشغل" الخاصة بقاعدة البيانات في الإجراءات المخزنة.بعد ذلك، يمكن لواجهة المستخدم ووظيفة SQL الخاصة بك استدعاء نفس الإجراءات المخزنة وإنشاء المشغلات بنفس الطريقة سواء كان ذلك يدويًا أو على فترات زمنية.

نصائح أخرى

الطريقة التي أرى بها الأمر هي هذه.

لديك خدمة Windows، والتي تلعب دور المجدول ويوجد فيها بعض الفئات التي تتصل ببساطة بخدمات الويب وتضع البيانات في قواعد البيانات الخاصة بك.

لذلك، يمكنك استخدام هذه الفئات مباشرةً من WebUI أيضًا واستيراد البيانات بناءً على مشغل WebUI.

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

يمكنك حتى تحويل الكود بالكامل إلى ملف exe والذي يمكنك بعد ذلك جدولته باستخدام برنامج جدولة Windows.واستدعاء نفس exe عندما يقوم المستخدم بتشغيل الإجراء من واجهة مستخدم الويب.

@فايبهاف

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

*أليست هذه هي الطريقة التي يتم بها دائمًا إعاقة الحل "الأفضل" من الناحية الفنية بسبب عوامل خارجية؟

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