WCF لتطبيق الوضع المحلي ووضع الشبكة - بالإضافة إلى سؤال حول ملف تعريف عميل .NET

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

سؤال

أقوم بإنشاء تطبيق WinForms حيث سأحتاجه للعمل "محليًا" (تمامًا مثل Microsoft Word، وحفظ الملفات وفتحها من نظام الملفات) وأيضًا في بيئة متعددة المستخدمين (الاتصال بخادم في الشبكة، عبر TCP/IP).

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

  • العرض التقديمي (نماذج ويندوز)
  • خدمة
  • الدخول الى البيانات

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

عندما يكون التطبيق في بيئة شبكة، أرغب في استضافة نفس خدمة WCF في عملية "خدمة Windows/NT" في جهاز آخر، وسيتواصل العرض التقديمي معها باستخدام نفس وكيل WCF كما هو الحال في الوضع المحلي.

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

من الناحية النظرية هذا يبدو جيدا.ومع ذلك، أود أن أعرف رأيك في هذا الأمر برمته.هل من الممارسات السيئة استخدام WCF بهذه الطريقة مع وجود الخادم والعميل في نفس العملية؟هل يمكنك رؤية طريقة بديلة/أفضل للقيام بذلك؟

سؤال آخر (ربما لا علاقة له بالموضوع) هو:هل يمكنني استضافة واستهلاك خدمة WCF في نفس نماذج Windows القابلة للتنفيذ إذا كنت أقوم بوضع علامة على تثبيت .NET Framework Client Profile؟

أقدر تعليقاتك :)

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

المحلول

أود أن أقول إنها ليست ممارسة سيئة على الإطلاق استضافة الخادم والعميل في نفس العملية - وهذا ما يسمى الاتصال بين العمليات!:-)

بالنسبة للسيناريو المحلي، سأستخدم ربط NetNamedPipe - بسرعة فائقة، للاتصال "على الجهاز" فقط.

بالنسبة لسيناريو الشبكة المحلية (LAN)، ما عليك سوى التبديل إلى NetTcpBinding - وهو سريع جدًا وفعال أيضًا.

ينبغي أن تعمل مثل السحر.

وفق هذه الصفحة في ملف تعريف عميل .NET Framework، يجب دعم كل WCF تقريبًا في ملف تعريف العميل:

ميزات WCF بدعم من ملف تعريف العميل .NET Framework

يتم دعم ميزات Windows Communication Foundation التالية بواسطة ملف تعريف العميل .NET Framework:

* All of WCF is supported except for Cardspace and web hosting.
* Remoting TCP/IP channels are supported.
* Asmx (Web Services) are not supported.

مارك

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