قم بتوصيل جهاز محمول بقاعدة البيانات دون كتابة رمز الخادم

مرحبا يا هبر! أريد أن أشارك تجربتي باستخدام منصة Foresight للجوال .

إذا كانت لديك مهمة تخزين البيانات عن بُعد دون كتابة الخادم الخاص بك ، فإن أول ما يتبادر إلى الذهن هو أداة قاعدة بيانات Firebase Realtime Database . يعرف معظم القراء ما هو على المحك ، ولكن بالنسبة للباقي فسأوضح ذلك. باستخدام قاعدة بيانات Firebase ، يمكنك تخزين البيانات عن بعد في نموذج NoSql.


صورة من firebase


من مزايا استخدام:

  • بدعم من جوجل
  • لا حاجة لكتابة أي رمز ، على الجانب الأساسي
  • عمل سريع
  • مجانا تصل إلى 5GB
  • التكامل مع خدمة مصادقة Firebase مع عدد كبير إلى حد ما من موفري التراخيص
  • دعم لنظام التشغيل android ، ios ، الوحدة ، إلخ.
  • متزامن في الوقت الحقيقي: عند تحديث البيانات في قاعدة البيانات ، يتم تحديثها في العميل

من السلبيات:

  • عند تجاوز الحدود المحددة للمساحة وتحميل الخادم ، يتعين عليك الدفع
  • لا توجد وسيلة لتخصيص بنية التخزين

FMP + بوستجرس


الآن أريد أن أخبرك عن أداة بديلة يجب علي استخدامها.

سأذهب من بعيد. في مكان ما ، لدي خادم PostreSQL مرفوع به قاعدة بيانات. في قاعدة البيانات ، لدي جدول به ثمار:



ما هو PostreSQL كيفية العمل معها يمكن قراءتها هنا .

مهمتي هي الحصول على هذا الجدول على الهاتف في أسرع وقت ممكن مع كتابة التعليمات البرمجية الأقل وضمان الأمن في كل مرحلة.

فيما يلي جدول my_table_fruits في pgAdmin4 :



بعد ذلك ، أجد الإجراءات في شجرة pgAdmin4. أنا أكتب الإجراء الخاص بي للحصول على الجدول:



سيطلق على الإجراء fruit_get_by_color وسيمنحني ثمارًا بلون معين من جدول my_table_fruits.

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



يمكنك أيضًا قراءة المزيد حول الإعدادات في الوثائق.

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

أقوم بإنشاء بيئة جديدة في شجرة البيئة ، على سبيل المثال ، سوف أسميها Leonid_environment. داخل البيئة ، أقوم بإنشاء مشروع ، على سبيل المثال ، Leonid_project. أذهب إلى المشروع وأنشئ مصدر بيانات هناك ، في حالتنا PostgreSQL. أقوم بإدخال معلمات الخادم وقاعدة البيانات التي يتم تخزين جدولي بها:



أذهب داخل مصدر البيانات وانقر فوق "استيراد". أدخِل اسم المصدر باسم الإجراء الذي أدخلته في PostgreSQL ، وفي هذه الحالة الفواكه_get_by_color. بالنسبة لعميل الهاتف المحمول ، يمكنك التوصل إلى اسم مختلف ، ولكن ليس بالضرورة. سوف اسميها fruit_get_by_color_for_android:



بعد النقر على زر "استيراد" ، سوف ترى منصة FMF "الإجراء" الخاص بنا والمعلمات التي يجب نقلها هناك.



على وجه الخصوص ، سترى أنه يجب علينا اجتياز المعلمة fruit_color:



بعد ذلك ، انتقل إلى علامة التبويب "مستخدمي واجهة برمجة التطبيقات" وقم بإنشاء مستخدم. أنشأت مستخدمًا باسم مستخدم ليونيد وكلمة مرور 123123:



من هذه اللحظة ، يمكنك الذهاب إلى Android Studio للحصول على هذه البيانات على هاتفك المحمول.

Fmp + android


أنا بصدد إنشاء مشروع جديد. جنبا إلى جنب مع النظام الأساسي ، يتم توزيع إطار للعمل معها. اسحب الإطار إلى ملف → وحدة الاستيراد → * .aar



في المشروع ، أعلن عددًا من الثوابت التي ألصق فيها عنوان الخادم ، وكذلك اسم البيئة التي اخترعتها واسم المشروع وتسجيل الدخول وكلمة المرور واسم المورد من FMP:

private static final String MY_URL = "http://mobilefmp.dev.fs.world"; private static final VersionAPI MY_VERSION_API = VersionAPI.V_1; private static final String MY_ENVIRONMENT = "Leonid_environment"; private static final String MY_PROJECT = "Leonid_project"; private static final String MY_VERSION = "v1"; private static final String MY_LOGIN = "Leonid"; private static final String MY_PASSWORD = "123123"; private static final String MY_RESOURCE = "fruits_get_by_color_for_android"; 

يرجى ملاحظة أننا نشير على وجه التحديد إلى FMP ، وليس مباشرة إلى PostgreSQL. بعد ذلك ، قم بإنشاء كائن HyperHive وقم بملء المتغيرات المعلنة:

 hyperHive = new HyperHiveState(getApplicationContext()) .setHostWithSchema(MY_URL) .setApiVersion(MY_VERSION_API) .setEnvironmentSlug(MY_ENVIRONMENT) .setProjectSlug(MY_PROJECT) .setVersionProject(MY_VERSION) .buildHyperHive(); 

ثم تحتاج إلى أداء إذن. للقيام بذلك ، قم بتمرير اسم المستخدم وكلمة المرور إلى طريقة auth ():

 boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk(); 

عندما يكون هذا صحيحًا ، يمكنك الاستعلام عن محتويات الجدول ، وهو ما سنفعله. في كائن tableStreamCallParams ، نمرر المعلمة fruit_color في شكل json وأدخل القيمة الصفراء له. دعني أذكرك بأننا قمنا بإنشاء جدول فواكه وقمنا بإنشاء إجراء في PostreSQL يأخذ معلمة لون كمدخلات. كان هذا ضروريًا لإدخال هذه المعلمة على الجهاز:

  TableStreamCallParams tableStreamCallParams = new TableStreamCallParams(); String data = "{\"fruit_color\": \"yellow\"}"; tableStreamCallParams.setData(data); String status = hyperHive.requestAPI.tableStream(MY_RESOURCE, tableStreamCallParams).execute(); 

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



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

يمكن قراءة جميع الخطوات التي وصفتها في الوثائق . هناك أيضًا معلومات حول الاتصال بـ iOs وأنظمة التشغيل الأخرى.

أعطي رمز التفعيل الكامل .

لقد تقدمت بطلب من الخيط الرئيسي ولم تعالج الأخطاء لتقليل مقدار الشفرة.

FMP الوظيفية


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

سأخوض خطوات واسعة في الوظيفة الرئيسية لبرنامج FMP:

  • تخزين البيانات مؤقتًا على جانب النظام الأساسي وتلقي دلتا (وليس الجدول بأكمله ، ولكن تم تغيير الصفوف فقط)
  • تسجيل إجراءات المستخدم
  • التحكم في الوصول من قبل المستخدم ، مجموعة المستخدم ، معرف الجهاز
  • المصادقة من خلال LDAP
  • التكامل مع SMTP ، سيتريكس XenMobile ، ترقب
  • توقيع البيانات في المرجع المصدق CryptoPro
  • تخزين الملفات ليس جانب FMF
  • قاعدة البيانات المحلية على جانب FMP (لا يمكنك الاتصال بقاعدة بيانات خارجية ، ولكن إنشاء قاعدة بيانات محليًا ، كما هو الحال في Firebase)
  • الموصلات الخاصة بـ Firebase Cloud Messaging و Apple Push Notification و Windows Push Notification. إنشاء قوائم بريدية ودفع قوالب الإعلام

هناك أطر عمل لـ:

  • الروبوت
  • دائرة الرقابة الداخلية
  • UWP
  • ويندوز سي
  • سمكة الزعنفة الشراعية ، أورورا (سمكة الزعنفة الشراعية الروسية)

هناك موصلات إلى:


إيجابيات وسلبيات FMP


سأقدم إيجابيات وسلبيات التي أراها من وجهة نظري. اعتمادًا على تفاصيل وحجم المشروع ، أعتقد أنك لن توافق على كل شيء.

الايجابيات:

  • بدون كتابة رمز الخادم ، يمكنك الاتصال بخادم قاعدة البيانات
  • عدد كبير من الموصلات إلى مصادر أخرى
  • وجود أطر لمعظم أنظمة التشغيل المحمولة
  • خدمة الدعم الناطقة باللغة الروسية

سلبيات:

  • تكلفة
  • التوجه التجاري للعملاء
  • لا تجربة مجانية أو فترة

النتائج


كانت مقارنة نظام FMF مع قاعدة بيانات Firebase Realtime Database "بعيدة المنال" أردت على الأقل مقارنة شيء ما مع مطوري android و ios المألوفين. في الواقع ، PMF لديه وظيفة مختلفة قليلا والغرض. من بين المنافسين SAP Mobile Platform ، أول منصة متنقلة لـ IBM ، Optimum CDC.

في الختام ، أود أن أقول إن الأمر يستحق الاهتمام بمنتدى الإدارة المالية إذا كان لديك:

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

Source: https://habr.com/ru/post/ar463437/


All Articles