ما هو الخيار الأفضل للاتصال بين العمليات في .NET؟[مغلق]

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

  •  01-07-2019
  •  | 
  •  

سؤال

هل يجب أن أستخدم "توجيهات الإخراج المسماة" أو .NET Remoteing للاتصال بعملية جارية على جهازي؟

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

المحلول

WCF هو الخيار الافضل.انه يدعم عدد من آليات النقل المختلفة (مشتمل اسم الشيئ أنابيب) ويمكن أن يكون التكوين مدفوعًا بالكامل.أوصي بشدة بإلقاء نظرة على WCF.

هنا مدونة تقوم ب WCF مقابل مقارنة الأداء عن بعد.

اقتباس من المدونة:

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

قسم MSDN لـ WCF

نصائح أخرى

إذا كان ذلك على جهاز واحد، فإن Named Pipes تمنحك أداءً أفضل ويمكن تنفيذها باستخدام البنية التحتية البعيدة وكذلك WCF.أو يمكنك فقط استخدامها مباشرة System.IO.Pipes.

إذا كنت تقصد الاتصال بين العمليات، فقد استخدمت .NET Remoteing دون أي مشكلة حتى الآن.إذا كانت العمليتان على نفس الجهاز، يكون الاتصال سريعًا جدًا.

من المؤكد أن الأنابيب المسماة أكثر كفاءة، ولكنها تتطلب تصميم بروتوكول تطبيق أساسي على الأقل، وهو ما قد لا يكون ممكنًا.يتيح لك الاتصال عن بعد استدعاء الأساليب البعيدة بسهولة.

يوفر الاتصال عن بعد في .NET Framework 2.0 قناة اي بي سي للاتصال بين العمليات داخل نفس الجهاز.

إذا كنت تستخدم .NET Framework 3.0 أو أعلى، فسأستخدم WCF.باستخدام WCF، يمكنك استخدام ارتباطات مختلفة تعتمد على المفاضلة بين الأداء/التشغيل البيني/إلخ.التي تحتاجها.

إذا لم يكن الأداء مهمًا وكنت بحاجة إلى التشغيل المتداخل مع تقنيات خدمة الويب الأخرى، فستحتاج إلى استخدام ربط WS-HTTP.بالنسبة لحالتك، يمكنك استخدام WCF إما مع ربط net-tcp أو ربط توجيه الإخراج المسمى.إما أن تعمل.

وجهة نظري الشخصية هي أن نهج WCF أكثر نظافة حيث يمكنك القيام بالخدمات المستندة إلى العقود والتركيز على الرسائل، وليس الكائنات (أقوم بتعميم هنا بناءً على نماذج البرمجة الافتراضية لـ WCF/.NET Remoteing).لا أحب إرسال الكائنات عبر السلك لأن الكثير من المعلومات الدلالية تُفقد أو تكون غير واضحة.عندما يكون كل ما تفعله هو إرسال رسالة كما تفعل مع WCF، يصبح من الأسهل فصل مخاوفك بين الاتصال والفئات/البنية التحتية التي تتكون منها عقدة واحدة.

يوفر WCF أيضًا المرونة.بمجرد تغيير بعض التكوينات (الربط)، يمكنك الحصول على نفس الخدمة على جهاز آخر بدلاً من IPC على نفس الجهاز.لذلك تظل التعليمات البرمجية الخاصة بك مرنة.

.Net Remoteing ليس بروتوكولًا في حد ذاته.يتيح لك اختيار البروتوكول الذي تريد استخدامه:الصابون والأنابيب المسماة وما إلى ذلك.

تم دمج .net عن بعد في .net للقيام بالاتصالات الداخلية للعملية.إذا استخدمت ذلك، فسوف يستمرون في دعمه وربما تحسينه في الإصدارات المستقبلية.لا تمنحك الأنابيب المسماة وعدًا بإجراء تحسينات في الإصدارات المستقبلية من .net

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