سؤال

لم يسبق لي القيام به IPC على ويندوز قبل.حاليا انا النامية زوج من البرامج القياسية واجهة المستخدم الرسومية/CLI التطبيق خدمة ويندوز.التطبيق يجب أن أقول الخدمة وماذا تفعل.حتى على افتراض الاتصالات المحلية فقط, ما يمكن أن يكون أفضل طريقة التواصل عن اثنين من هذه العمليات ؟

حيث هو أفضل تعريفها بأنها أكثر قوة و أقل خطأ عرضة ، لا أكثر performant ولا أسهل إلى رمز.

أمثلة التعليمات البرمجية سوف يكون موضع ترحيب للغاية ولكن ليست المطلوبة :-)

ملاحظة أنا أسأل عن ما إلى استخدام معيار TCP socket, أنابيب الاتصال المسماة أو غيرها من وسائل الاتصال فقط.

وذلك بفضل!

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

المحلول

IPC في .صافي يمكن تحقيقه باستخدام:

WCF

باستخدام أنابيب الاتصال المسماة يتطلب .صافي 3.0 وما فوق.

التعليمات البرمجية المثال


الاتصال عن بعد

الأصلي IPC إطار صدر مع .Net framework 1.0.أعتقد الاتصال عن بعد لم يعد يجري تطويرها بنشاط ، ويتم تشجيع لك لاستخدام رأس المال العامل بدلا من ذلك

التعليمات البرمجية المثال

بين عملية الاتصال عن طريق الاتصال عن بعد - يستخدم tcp قناة

الموارد


Win32 RPC باستخدام csharptest-صافي RpcLibrary

جئت عبر المشروع مؤخرا أن لديه ملفوفة Win32 RPC library وخلق .صافي مكتبة الفئة التي يمكن استخدامها على المستوى المحلي أو عن بعد RPC

الصفحة الرئيسية مشروع: http://csharptest.net/projects/rpclibrary/

MSDN المراجع:

أيضا جوجل البروتوكول مخازن rpc العميل الذي يعمل على رأس المكتبة: https://code.google.com/p/protobuf-csharp-rpc/


WM_COPYDATA

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

الموارد

مآخذ

باستخدام بروتوكول مخصص (أصعب)

نصائح أخرى

المحلية فقط ، كان علينا النجاح باستخدام أنابيب الاتصال المسماة.يتجنب النفقات العامة من TCP و هو الى حد كبير (على الأقل .صافي) فعالة كما يمكن أن تحصل في حين وجود أيضا لائق API للعمل مع.

منذ كنت محدودة .Net 2.0 رأس المال العامل هو ربما ليس خيارا.هل يمكن استخدام .صافي الاتصال عن بعد مع الذاكرة المشتركة الكامنة آلية التواصل بين التطبيق المجالات على نفس الجهاز.باستخدام هذا النهج يمكنك بسهولة وضع العمليات الخاصة بك على مختلف الآلات محل بروتوكول الذاكرة المشتركة مع بروتوكول الشبكة.

الطريقة القياسية التواصل مع خدمة windows استخدام خدمة رموز التحكم.خدمات Windows يمكن الحصول على رموز من 0 إلى 255.0-127 محجوز النظام.128 إلى 255 يمكن أن تستخدم أوامر مخصصة.

إذا كنت بحاجة إلى إرسال كائنات معقدة إلى خدمة استخدام بيانات xml, ملف, tcp, http الخ.غيرها من إرسال أوامر التحكم مثل تحديث التكوين عملية البنود الخ هذه رموز التحكم ينبغي أن تستخدم.

هناك وظائف إضافية المتاحة مثل الاستعلام عن الخدمات.انظر خدمة Windows وثائق api.

http://arcanecode.com/2007/05/30/windows-services-in-c-sending-commands-to-your-windows-service-part-7/

أفضل رهان هو استخدام رأس المال العامل.سوف تكون قادرة على إنشاء خدمة المضيف في خدمة windows وفضح محددة بشكل جيد واجهة المستخدم الرسومية تطبيق يمكن أن تستهلك.WCF سوف تتيح لك التواصل عبر أنابيب الاتصال المسماة إذا اخترت ، أو يمكنك اختيار أي وسيلة اتصال أخرى protocal مثل TCP, HTTP, الخ.باستخدام WCF تحصل على أداة عظيمة دعم الكثير من المعلومات المتاحة.

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

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