سؤال

كنت مؤخرا قد سألت هذا السؤال: فضح XML أو الكائنات شكرا جميعا على الردود.

نقطة واحدة إلى توضيح.

  • API سوف يكون دائما الوصول إليها عن بعد (أيكخدمة) ، على الأرجح عبر webservices أو WCF.

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

  1. قواعد العمل يمكن أن تكون مكتوبة من قبل محللي الأعمال في Schematron.
  2. واجهة المكتوبة ضعيف ، ولكن سرعان ما يسمى البيانات التي يمكن التحقق من صحتها ضد البيانات وقواعد العمل.
  3. الخدمة التنفيذ سوف يكون أكثر بساطة.لن يكون هناك أي حاجة إلى إنشاء كائن المجال نموذج.
  4. مخطط XML يعرف بالفعل (لدينا قاموس البيانات من المخطط).
  5. باستخدام خدمات ويب التكنولوجيا يعني أن XML القائمة على API لن تحتاج إلى تغيير السيارات الجديدة 'أنواع' إضافة ، مثل

    void AddNewCar( string newCarXml )    
    string[] GetCars( /* some query conditions */ )
    

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

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

فما هو سؤالي ؟ أعطني الامم المتحدة defeatble, ولا جدل سبب لماذا ينبغي أن تذهب مع الكائنات.

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

المحلول

  • الأشياء يمكن أن أداء أفضل (التفكير ثنائي التسلسل هنا).
  • الكائنات يمكن أن يكون أقوى نوع بسيط التصديقات.
  • الكائنات تسمح لك لوضع قواعد التحقق من الصحة والأعمال أقرب إلى بنية بيانات التعريف.
  • الأشياء بطبيعتها تسمح لك لكتابة أبسط قواعد العمل و التحقق من الصحة ، لأن الكثير من مضمن في وجوه تعريف نفسها.
  • الكائنات يمكن أيضا تحديد السلوكيات.
  • .صافي يجعل من السهل أن تتحول الأجسام إلى Xml و العودة مرة أخرى عن طريق التسلسل ، وإعطاء معظم الكائنات من نفس المزايا xml.

نصائح أخرى

إذا كنت تبحث عن حجة لصالح XML (لا أنا ولا سيما لصالح XML) هي:

  • وفضح XML و توفير XSD هي النفس التفسيرية عندما يتعلق الأمر إلى البيانات.يمكنك تمرير جميع البيانات في هذا النموذج ، انها النفس توثيق و يمكن التحقق منها بشكل معقول ببساطة.

  • أستطيع أن أكتب مجموعة من آمن قانون ضد قاعدة بيانات أو نموذج التعليمات البرمجية وأنا يمكن تحرير البيانات في النفس الوارد وبطريقة آمنة إلى وحدات الأعمال الأخرى التي تتطلب الحد الأدنى من وثائق أخرى أو تفسير.

  • انه من السهل جدا أن تقرأ ذلك في كثير من الأحيان يمكنك أن تقرأ بسهولة كما يمكنك قراءة الوثائق أو تعليقات التعليمات البرمجية.

الحجج ضد ذلك على...إلى اسم أسوأ المجرمين:

  • مطول بشكل مفرط.
  • شبكة ضخمة من النفقات العامة.
  • تتطلب فهم إضافية التكنولوجيا ، وربما داع(?).
  • أكثر تعقيدا تفعل شيئا ، فرصة أكبر الأخطاء هناك.

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

كما قلت Xml يمكن استخدامها لتحديد استبدال نموذج كائن ولكن هذا نموذج كائن يحتاج إلى الخضوع نفس الشيكات في وقت التشغيل لضمان الموثوقية إلى حد ما.ولكن هذه معين محدود الحمل وقت التشغيل.

وقد قلت أن كل ما أريد أن أقوله هو أن الخيار النهائي هو لك.هل أنت على استعداد للتخلي عن السلامة (و في بعض الأحيان راحة البال) التي يوفرها "جامدة" نموذج كائن أو أنك سوف تكون أكثر راحة مع أكثر مرونة ولكن يمكن أن تبادل لاطلاق النار-نفسك في القدم الكائن النموذج ؟ XML يتطلب مزيدا من مبرمج الانضباط واليقظة (مما يجعلها واجبا استخدام IMHO).

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

عندما تكشف عادي XML, جميع العملاء الخاصة بك سوف تحتاج إلى كتابة رمز إلى إنشاء تحليل هذا XML.من السهل في بعض اللغات ، بيتا في الآخرين.

ولكن معظم اللغات خدمة ويب واجهات برمجة التطبيقات التي يمكن أن تتخذ wsdl/xsd وتوليد العميل الكامل مكتبة في ثوان.ومن المؤكد أنها سوف تضطر إلى كتابة ورسم الخرائط أداة الخريطة من الداخلية نموذج نموذج للتفاعل معك ولكن هذا أمر متوقع.

خدمة الويب الخاص بك سيتم التعامل مع كل موضوع<-->XML الاشياء داخليا (على العميل view), لن تحتاج للقلق حول والصابون كل ذلك.يمكنك تحديد واجهة الخاص بك:

void addCar(Car newCar);
Car getCar(String make, String model, String year);
void removeCar(...);
List<Car> getAllCars();

الأمر الذي يجعل الكثير من معانيها للعملاء الخاص بك.أنها انتزاع الخاص بك wsdl وتوليد العميل المكتبات في Java, C#, PHP, Python, الخ.

لا يوجد شيء يمنعك مضيفا:

int addCarXML(String carXML);
String getCarXML(int carID);

ولكن لماذا إضافة اثنين من مستويات من خدمة ويب الغبار المتراكم تحت السرير - أول wsdl ، ثم xsds عن مخطط XML...

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

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

هنا آخر عشوائية الفكر - استخدام أي منهما ;-p أنا أفكر في غيرها من أشكال تبادل.لقد فعلت الكثير من العمل مؤخرا مع بروتوكول مخازن - يوفر هذا العقد-الاستخدام الأول (طريق ".بروتو" التعريف) ، ولكن تم تصميم آمنة التمدد في الاعتبار - أييمكنك تصميم الأشياء تمر من خلال البيانات غير متوقعة من دون كسر أو فقدان.للأسف الرئيسية البروتوكول مخازن المواصفات لا تشمل في الواقع الميراث ، لكن تنفيذ (protobuf-net) فلك هذا عبر امتداد.

سواء كانت ناضجة بما فيه الكفاية يعتمد على السيناريو - اعتقدت أنها قد تكون ذات فائدة.بوصفها جانبا ، (protobuf-net) أيضا المقابس في WCF لراحة من قبل توالت RPC كومة ;-p

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