سؤال

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

كان نهجنا الأول ، هو الحصول على مشروع واحد مع SQLSessionFactory وجعل جميع تطبيقات الخدمة تستخدم هذا المشروع للوصول إلى البيانات. هذا يعني أن المشروع يعتمد على جميع الخدمات (اضطررنا إلى فصل الخدمة وإقلاعها للتخلص من تبعية الدائرة) لكائنات البيانات ، ويحتوي على جميع خرائط SQL. ستكون الميزة مثيلًا واحدًا لـ SQLSessionFactory في أي وقت ، وتكوين واحد لإدارته. على الرغم من استخدام خدمة واحدة مثل Junits ، أو بعض الأدوات الأخرى ، يتم تحميل جميع خرائط SQL بغض النظر ، وجميع الخدمات هي التبعية.

هناك طريقة أخرى تتمثل في وجود كل خدمة لها تكوين IBATIS الخاص بها ومثال SQLSessionFactory. هذا من شأنه أن يتجنب الحاجة إلى MECCA من التبعية على مشروع الوصول إلى البيانات ، ولكن يعني عدة مثيلات من SQLFactory على webapp.

أنا أحب النهج الثاني ، على الرغم من أنني أرى جيدًا وسيئًا في كليهما.

ماذا كنت ستفعل؟ ما الذي تضيفه أو تسلبه من حجتي؟

الرجاء المساعدة !!!

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

المحلول

على الرغم من أنني أعتقد أن قوة حجتك الأولى تشير إلى ضعف الخدمية بشكل عام ، أعتقد أنه إذا كنت تفعل SOA ، فإنها تهزم الغرض كله بعد ذلك جعل جميع الخدمات مترابطة عن بعضها البعض.

إذا كنت تقوم بعمل SOK ، فأنت تقبل المفاضلة التي لا يمكن استخدام الموارد غير الفعالة من أجل فصل المكونات وعزلها.

نصائح أخرى

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

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

إذا كان بإمكان كلا الحلين تطبيقًا ، فربما يكون لديك جميع خدماتك تعمل على نفس JVM. في رأيي ، يجب أن تفكر في تشغيل المكونات في JVMs منفصلة. بنية مكونات الخدمة الحقيقية هي واحدة حيث يكون لديك العديد من المكونات (EJBs على سبيل المثال) التي تعمل في بيئة متجمعة وتتحدث مع بعضها البعض في مأوى مقترن بشكل فضفاض (من خلال JMs على سبيل المثال ، أو خدمات الويب أو RMI ، إلخ). كل مكون مستقل وربما يعمل في خادم بعيد.

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

إنه بعد كل شيء ، سؤال حول ما يحتاجه تطبيقك حقًا.

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