سؤال

أود أن أعرف كيف يمكنني توصيل المكاتب عن بُعد بقاعدة بيانات مركزية.

هذا هو السيناريو:

مكتب مع العديد من المستخدمين الذين يعملون على تطبيق سطح المكتب Windows

يحصل هذا التطبيق على بياناته من قاعدة البيانات في خادم Office.

الآن واحد أو أكثر من عن بعد (المكاتب ، المتاجر ، أيا كان) يحتاج إلى الوصول إلى نفس البيانات.

كيف نستطيع إنجاز هذا؟

في بعض الأحيان نحتاج في الوقت الحقيقي

في بعض الأحيان لا يكون هذا مهمًا.

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

المحلول

يمكنك الاستخدام بسهولة DataSnap أو remobjects لالتفاف وفضح قاعدة البيانات الحالية كخادم من الدرجة المتوسطة ثم اكتب العملاء ضدها. للاتصال بهذا ، أقترح بشدة وجود اتصال VPN بين أجهزة التحكم عن بعد الخاص بك والطبقة الوسطى. وبهذه الطريقة ، لا داعي للقلق بشأن تأمين رابط الاتصالات ... ما لم تكن البيانات التي تنقلها بيانات منخفضة المخاطر (لا تستحق أي شيء).

سترغب في أن تصبح على دراية tclientdataset. يمنحك القدرة على تشغيل أنظمةك عن بُعد دون الوصول إلى قاعدة البيانات الرئيسية ، وكذلك تقليل كمية حركة المرور التي يتم شحنها عبر السلك (يمكنك التصفية وفرزها محليًا).

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

نصائح أخرى

بسبب الأمان ، تحتاج إلى نوع من الطبقة الوسطى بين العميل وقاعدة البيانات. من الخطير للغاية فضح قاعدة البيانات مباشرة إلى الإنترنت. تستخدم الكثير من التطبيقات الصابون في هذا السيناريو ، لأنه تم تبنيه على نطاق واسع. تقوم بتقديم خدمة SOAP ، وتحديد البروتوكول والوظائف والعميل ثم يستدعي ذلك. الخيارات الأخرى هي أنك تقوم بتقديم خدمة / خادم قائم على قسط من الراحة يقوم بنفس الشيء ، أو حتى صنع طبقة TCP / IP عادي. لذلك أنت خيارات:

  1. خدمة الصابون كطبقة متوسطة
  2. BEST HTTP القائمة على الطبقة الوسطى
  3. طبقة الوسطى المستندة إلى XML RPC
  4. طبقة متوسطة TCP /IP نقية
  5. اتصال VPN للعملاء

إذا قمت بإجراء اتصال VPN من العميل ، فيمكنك الوصول المباشر إلى قاعدة البيانات ، ولكن من المحتمل أن يكون هذا الأمر متاحًا للعملاء بشكل خاص إذا لم يكونوا من شركتك. من المحتمل أن أذهب الشخصي مع 2 أو 3 ، لكن لمجرد أنني لا أحب الصابون كثيرًا. معظم إذا طلب ذلك يفضل الصابون على ما أعتقد.

تعديل:

بما أنني أرى هذه المكاتب عن بُعد ، يمكنك النظر في اتصال VPN دائم. معظم أجهزة التوجيه هذه الأيام قادرة على هؤلاء. ثم يمكن أن يعمل تطبيقك بنفس الطريقة عن بُعد كما هو الحال.

هناك 3 طرق حلول ممكنة:

  1. اكتب تطبيق سطح المكتب العادي ونشر هذا التطبيق باستخدام الخدمات الطرفية (خدمات سطح المكتب عن بعد) أو Citrix XenApp (أو اجعله قاعدة ويب)
  2. (إعادة) تصميم تطبيقك للعمل أكثر (بطيئة و/أو غير موثوقة) اتصال WAN)
  3. قم بتنفيذ نوع من النسخ المتماثل لقاعدة البيانات وتنفيذ قاعدة بيانات منفصلة (خادم) في كل مكتب

أحد المعايير لاختيار ما يجب تبنيه هو سرعة اتصالك وموثوقيتها وتكلفةها بين المكاتب البعيدة والخادم المركزي. إذا كانت السرعة كافية ، فإن الموثوقية على ما يرام والتكاليف مسطحة VPN هي الطريق للذهاب. لن يتطلب الأمر تغييرات على التطبيق الخاص بك (إذا لم تتم كتابته لتنزيل قاعدة البيانات بأكملها ...) فسيتعامل أيضًا مع المصادقة وشرح بياناتك. إذا لم يكن VPN خيارًا ، فيمكنك استخدام أحد التقنيات البعيدة في إجابة العداء ، ولكنها عادةً ما تتطلب إعادة تصميم (وإعادة كتابة) التطبيق ، فإن هذا النموذج يختلف قليلاً عن تطبيق العميل/الخادم "الكلاسيكي". عادةً ما لا تواجه HTTP (S) أي مشاكل مع جدران الحماية ، ولكن عادة ما تحتاج إلى أن تكون عديمية ولا تدعم عمليات الاسترجاعات وتوليد شهادات احتياجات الأمن ونشرها. يعد العمل الآخر مع البروتوكولات الأخرى (أي DCOM ، DBExpress DataSnap) أكثر مرونة ، ولكن قد يكون أكثر تعقيدًا لإعداد و/أو تأمين بشكل صحيح. إذا لم يكن الاتصال سريعًا وموثوقًا بدرجة كافية ، أو باهظ الثمن ، فقد تحتاج إلى ذاكرة التخزين المؤقت المحلية المتزامنة مع الخادم البعيد بشكل صحيح - وقد لا يكون من السهل تحقيقه ، اعتمادًا على احتياجات التطبيق.

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