تصميم واجهة خدمة WCF. التصميم الإجرائي مقابل الكائن

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

  •  29-09-2019
  •  | 
  •  

سؤال

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

نظرًا لأن خدمتنا سيتم استخدامها من .NET و Java ، يقول البعض أنه من الصعب الاندماج مع الخدمة إذا كان لديه تصميم OO. يعتقد الآخرون أن الخدمات صاري لا تستخدم نهج OO. يقول البعض أن OO على ما يرام تماما. ونتيجة لذلك ، لا يوجد اكتئاب واضح عليه.

توفر WCF طريقة سهلة لاستخدام كلا التصميمات ولكن ما هو الأفضل؟

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

المحلول

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

أقرب WCF Barralel إلى هذه الخدمات القائمة على الجلسة ، حيث يتم التحكم في عمر كل مثيل خدمة من قبل العميل.

إذا كنت تريد أن يتم استدعاء هذه الخدمة بواسطة Java ، فسيتعين عليك استخدام Basichttpbinding ، لأن هذا يستخدم بروتوكول خدمة الويب الكلاسيكي.

لا يوفر هذا الربط الدعم للخدمات القائمة على الجلسة ، لذلك لا يمكنك حرفيًا استخدام الخدمات القائمة على الجلسة.

لذلك ، لا يمكنك تطبيق نموذج "الموجهة نحو الكائن" فيما يتعلق بالخدمة نفسها.

نصائح أخرى

أنت توضح سؤالك الأصلي بالقول: "سؤالي حول طرق الخدمة هل يجب أن يتلقوا أنواعًا معقدة بدلاً من المعلمات القياسية؟"

يجب أن تسأل نفسك ما يلي:

أ) هل هناك أي فرصة لاستخدام الخدمة من قبل عملاء غير OO؟ دنو ، دفعة كوبول؟ حتى إذا كانت شركتك قد تم توحيدها على OO Tech (Java/.NET) ، فهناك أي فرصة لاستخدام هذه الخدمة المحددة في المستقبل من قبل بعض الكيان الخارجي (العميل ، موقع PHP ، أيا كان)

ب) هل قمت بالفعل بإنشاء العديد من هذه الخدمة في الماضي (لذلك أنت متأكد تمامًا من عدم وجود مشكلات متسلسلة/تسلسل/تفضيل مع أنواع معقدة ، أو على الأقل تدرك ما يمكنك استخدامه بأمان)؟

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

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