آلية البث جيدة لتطبيقات صافي محاسبين للإعلان عن مواقعها واصدار جديد؟

StackOverflow https://stackoverflow.com/questions/1821513

سؤال

وأود أن توفير عدد كبير من التطبيقات صافي محاسبين وسيلة خفيفة الوزن ليعلن التي يتم استخدامها. هدفي هو أن تتبع المستخدمين الذين قد يستفيدون من الدعم الاختيار الإضافية و / أو تذكير للترقية.

وهذا هو على شبكة محاسبين. فمن المؤكد أن هناك اتصال IP بين جميع الآلات، وربما UDP. (ولكن ربما ليس المتعدد).

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

وسيكون أيضا من الجميل أن تسمح تعدد المستمعين، والذي هو سبب آخر وأنا أفكر البث بدلا من استدعاء الخدمة.

هل هناك نوع من أطلق وانس آلية البث أتمكن من استخدام آمن وفعال لهذا؟

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

المحلول

وهناك بالتأكيد العديد من الخيارات لهذا، ولكن واحد هو أن من السهل جدا لتنفيذ وتلبي المعايير الخاصة بك هو <وأ href = "http://msdn.microsoft.com/en-us/library/aa480512.aspx" يختلط = "نوفولو noreferrer"> دعوة غير متزامن الخدمة الإلكتروني .

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

نصائح أخرى

وفعلت شيئا من هذا القبيل، ولكن ليس بالضبط "braodcast"

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

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

إذا رفع ليست قضية (أي لا توجد الحالات التي تستخدم نسخة قديمة هي أحسن)، يمكنك أن تفعل ما فعلته مع شيئا من هذا القبيل:

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

var current = new FileInfo(local);
var latest = new FileInfo(remote);

if (!current.Exists)
    latest.CopyTo(local);

var currentVersion = FileVersionInfo.GetVersionInfo(local);
var latestVersion = FileVersionInfo.GetVersionInfo(remote);

if (latest.CreationTime > current.CreationTime || latestVersion.FileVersion != currentVersion.FileVersion)
    latest.CopyTo(local, true);

Process.Start(local)

ولدي أيضا البرنامج نفسه تحقق لمعرفة ما إذا كان التحديث يحتاج تحديث (كما المحدث لا يمكن تحديث نفسها بسبب اقفال ملف)

وبعد بعض التجارب، ولقد تم الحصول على نتائج جيدة باستخدام Win32 <لأ href = "http://msdn.microsoft.com/en-us/library/aa365576(VS.85).aspx" يختلط = "نوفولو noreferrer "> mailslots .

وليس هناك مسؤول تمكن المجمع، ولكن وظائف بسيطة لاستخدام عبر PInvoke، كما هو موضح في الأمثلة مثل <وأ href = "http://www.codeproject.com/KB/miscctrl/CSharp_MailSlots.aspx" يختلط = "نوفولو noreferrer"> هذا واحد .

وباستخدام 'المجال' MAILSLOT يوفر آلية البث الحقيقية، والسماح تعدد المستمعين وأي شرط لخادم المعروفة.

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