سؤال

ونحن الشروع في خدمة الطبقة الوسطى الجديدة التي تسمح أنظمة العميل الداخلية لإنشاء وتحديث والاستعلام السجلات في بعض مخازن البيانات الأساسية. الخدمة سوف تجميع ما يصل الى 3 مخازن البيانات الأساسية منفصلة. لأغراض هذا السؤال نفترض:

وتخزين البيانات رقم 1: الملكية قاعدة بيانات XML
. تخزين البيانات رقم 2: قبالة الجرف قاعدة البيانات العلائقية
. تخزين البيانات رقم 3: تخزين ملف شقة (الملفات المخزنة كما ثنائي)

وسوف العملاء لا يعرفون (أو الرعاية) التي مخزن البيانات التي يتم الاستعلام / udpating. الخدمة الجديدة سوف تجعل هذا القرار. وسؤالي هو: هل تعرض API بلدي XML أو الأشياء؟ مثلا سوف API الجديد سيكون وسيلة إضافية. على افتراض أن نظامنا هو نظام تخزين السيارة، ثم طريقة إضافة للAPI قد تبدو مثل هذا:

AddNewCar( CarObject car )

و، أو أنها يمكن أن تبدو مثل هذا:

AddNewCar( string carXml )

والآن، على الرغم من أن تتم كتابة طريقة 2ND ضعيفة في الدخول، وعلى الفور التحقق من صحة XML ضد مخطط كحد أدنى.

وهذه الخدمة الجديدة سوف تكون مكتوبة في C # (لم تقرر بعد بشأن أي إصدار، ولكن ربما 3 / 3.5 مع WCF). عملاء API يمكن أن يكون C # / VBA / VB.Net / C ++ / جافا).

وأي مزيد من التفاصيل واسمحوا لي أن أعرف. بفضل


تحديث: لاحظ أن API كما سيتم تنشر XML على حافلة الرسالة. مثلا وعند إضافة سيارة جديدة يتم نشر XML السيارة بحيث يتم إخطار كل من يهمه الأمر في السيارات الجديدة.

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

المحلول

وانا اقول فضح API الكائن. وإن لم يكن للأسباب المذكورة في وظيفة أخرى فوق - أن تعريض XML الناتجة في شكل الثابتة التي هي أكثر صعوبة لتغيير

ويمكن القول، وهو API من الكائنات الأعمال كتابة بشدة من الصعب لتغيير كما XML - كلا سوف تتطلب إعادة تجميع وإعادة البناء. لذلك ليس هذا هو السبب لماذا يجب عليك تجاهل XML.

والسبب - IMNSHO - هو أن مستوى التجريد. على مستوى API، كنت تتحدث من حيث ما الكائنات الأعمال أو الخدمات التي يمكن أن تؤدي الإجراءات على ما الكائنات الأعمال الأخرى. ولذلك، يجب على API الحديث من حيث الكائنات الأعمال.

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

نصائح أخرى

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

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

You should create the API using objects and leverage WCF to provide an XML API if needed.

You should create an API using Objects, and then create a web service interface around that API (e.g., for Java you would use java2wsdl on your interface, and then wsdl2java to create a skeleton server-side implementation or client-side implementation, I'm sure that an equivalent methodology exists in WCF) that all the other systems can query.

As you have multi-language clients, I think a web service is your best choice, and (ignoring the business logic implementation) is only a few minutes of work on top of your API. You can distribute your wsdl or xsd files to all the client software's developers which they can then use to interface to your system simply and quickly.

Certainly the stongly typed approach will be easiest from an end-user-developer perspective which is what I would prefer. However, if ultimately everything is converted to Xml behind the scenes or you are unsure wich approach your clients will take, I'd definitely recommend you support both.

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