TDLib (مكتبة قاعدة بيانات Telegram) هي مكتبة مشتركة بين الأنظمة الأساسية لإنشاء عملاء Telegram. يمكن استخدامه بسهولة من أي لغة برمجة تقريبًا.
سمات
الأمثلة والوثائق
التبعيات
مبنى
الاستخدام في مشاريع CMake C++
استخدامها في مشاريع جافا
الاستخدام في مشاريع .NET
الاستخدام مع لغات البرمجة الأخرى
رخصة
يتمتع TDLib
بالعديد من المزايا. ومن الجدير بالذكر TDLib
هو:
عبر الأنظمة الأساسية : يمكن استخدام TDLib
على Android وiOS وWindows وmacOS وLinux وFreeBSD وOpenBSD وNetBSD وillumos وWindows Phone وWebAssembly وwatchOS وtvOS وvisionOS وTizen وCygwin. يجب أن تعمل أيضًا على أنظمة *nix الأخرى بأقل جهد أو بدونه.
متعدد اللغات : يمكن استخدام TDLib
بسهولة مع أي لغة برمجة قادرة على تنفيذ وظائف C. بالإضافة إلى ذلك، فهو يحتوي بالفعل على روابط Java أصلية (باستخدام JNI
) وروابط .NET (باستخدام C++/CLI
و C++/CX
).
سهل الاستخدام : يعتني TDLib
بجميع تفاصيل تنفيذ الشبكة والتشفير وتخزين البيانات المحلية.
أداء عالي : في Telegram Bot API، يتعامل كل مثيل TDLib
مع أكثر من 25000 روبوت نشط في وقت واحد.
موثقة جيدًا : جميع أساليب TDLib
API والواجهات العامة موثقة بالكامل.
متسق : يضمن TDLib
تسليم كافة التحديثات بالترتيب الصحيح.
موثوق : يظل TDLib
مستقرًا على اتصالات الإنترنت البطيئة وغير الموثوقة.
آمن : يتم تشفير جميع البيانات المحلية باستخدام مفتاح التشفير المقدم من المستخدم.
غير متزامن تمامًا : لا تحظر الطلبات المقدمة إلى TDLib
بعضها البعض أو أي شيء آخر، ويتم إرسال الاستجابات عندما تكون متاحة.
راجع برنامجنا التعليمي للبدء للحصول على وصف لمفاهيم TDLib الأساسية.
نلقي نظرة على الأمثلة لدينا.
راجع منشئ تعليمات إنشاء TDLib للحصول على إرشادات مفصلة حول كيفية إنشاء TDLib.
راجع وصف واجهات JSON وC++ وJava و.NET الخاصة بنا.
راجع مخطط td_api.tl أو وثائق HTML التي تم إنشاؤها تلقائيًا للحصول على قائمة بجميع أساليب وفئات TDLib
المتوفرة.
يعتمد TDLib
على:
مترجم متوافق مع C++14 (Clang 3.4+،GC 4.9+، MSVC 19.0+ (Visual Studio 2015+)، Intel C++ Compiler 17+)
OpenSSL
زليب
gperf (الإنشاء فقط)
CMake (3.0.2+، الإصدار فقط)
PHP (اختياري، لإنشاء الوثائق)
إن أبسط طريقة لإنشاء TDLib
هي استخدام منشئ تعليمات بناء TDLib الخاص بنا. ما عليك سوى اختيار لغة البرمجة ونظام التشغيل المستهدف لتلقي تعليمات البناء الكاملة.
بشكل عام، تحتاج إلى تثبيت كافة تبعيات TDLib
، وإدخال الدليل الذي يحتوي على مصادر TDLib
وتجميعها باستخدام CMake:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
لإنشاء TDLib
على أجهزة ذات ذاكرة منخفضة، يمكنك تشغيل البرنامج النصي SplitSource.php قبل تجميع كود مصدر TDLib
الرئيسي وتجميع الأهداف المطلوبة فقط:
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --target prepare_cross_compiling cd .. php SplitSource.php cd build cmake --build . --target tdjson cmake --build . --target tdjson_static cd .. php SplitSource.php --undo
في اختباراتنا، يتطلب clang 6.0 مع libc++ أقل من 500 ميجابايت من ذاكرة الوصول العشوائي لكل ملف، بينما يستخدم الإصدارGC 4.9/6.3 أقل من 1 جيجابايت من ذاكرة الوصول العشوائي لكل ملف.
بالنسبة لمشروعات C++ التي تستخدم CMake، فإن أفضل طريقة هي إنشاء TDLib
كجزء من مشروعك أو تثبيته على مستوى النظام.
هناك العديد من المكتبات التي يمكنك استخدامها في مشروع CMake الخاص بك:
Td::TdJson, Td::TdJsonStatic — إصدار ديناميكي وثابت لواجهة JSON. يحتوي هذا على واجهة C بسيطة، لذا يمكن استخدامه بسهولة مع أي لغة برمجة قادرة على تنفيذ وظائف C. راجع وثائق td_json_client لمزيد من المعلومات.
Td::TdStatic — مكتبة ثابتة بواجهة C++ للاستخدام العام. راجع وثائق ClientManager وClient لمزيد من المعلومات.
على سبيل المثال، قد يبدو جزء من ملف CMakeLists.txt بالشكل التالي:
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
أو يمكنك تثبيت TDLib
ثم الرجوع إليه في CMakeLists.txt الخاص بك مثل هذا:
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
راجع المثال/cpp/CMakeLists.txt.
يوفر TDLib
واجهة Java الأصلية من خلال JNI. لتمكينه، حدد الخيار -DTD_ENABLE_JNI=ON
إلى CMake.
راجع المثال/Java على سبيل المثال لاستخدام TDLib
من Java وتعليمات البناء والاستخدام التفصيلية.
يوفر TDLib
واجهة .NET أصلية من خلال C++/CLI
و C++/CX
. لتمكينه، حدد الخيار -DTD_ENABLE_DOTNET=ON
لـ CMake. يدعم .NET Core C++/CLI
فقط منذ الإصدار 3.1 وعلى نظام التشغيل Windows فقط، لذلك إذا تم استخدام .NET Core الأقدم أو كانت هناك حاجة إلى إمكانية النقل، فيجب استخدام واجهة TDLib
JSON من خلال P/Invoc بدلاً من ذلك.
راجع المثال/csharp على سبيل المثال لاستخدام TDLib
من C# وتعليمات البناء والاستخدام التفصيلية. راجع المثال/uwp على سبيل المثال لاستخدام TDLib
من تطبيق C# UWP وتعليمات البناء والاستخدام التفصيلية لـ Visual Studio Extension "TDLib for Universal Windows Platform".
عند إنشاء TDLib
مع تمكين خيار TD_ENABLE_DOTNET
، تتم إزالة وثائق C++
من بعض الملفات. تحتاج إلى التحقق من هذه الملفات لإرجاع وثائق C++
مرة أخرى:
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
يوفر TDLib
واجهات C++ وJava و.NET أصلية فعالة. ولكن بالنسبة لمعظم حالات الاستخدام، نقترح استخدام واجهة JSON، والتي يمكن استخدامها بسهولة مع أي لغة برمجة قادرة على تنفيذ وظائف C. راجع وثائق td_json_client للحصول على وصف تفصيلي لواجهة JSON أو مخطط td_api.tl أو وثائق HTML التي يتم إنشاؤها تلقائيًا للحصول على قائمة بجميع أساليب وفئات TDLib
المتاحة.
تلتزم واجهة TDLib
JSON بالإصدارات الدلالية والإصدارات التي لها نفس رقم الإصدار الرئيسي تكون ثنائية ومتوافقة مع الإصدارات السابقة، ولكن يمكن أن تختلف واجهة برمجة تطبيقات TDLib
الأساسية باختلاف الإصدارات الثانوية وحتى التصحيحية. إذا كنت بحاجة إلى دعم إصدارات TDLib
مختلفة، فيمكنك استخدام قيمة خيار version
للعثور على إصدار TDLib
الدقيق لاستخدام أساليب API المناسبة.
راجع example/python/tdjson_example.py للحصول على مثال لهذا الاستخدام.
تم ترخيص TDLib
بموجب شروط ترخيص Boost Software. راجع LICENSE_1_0.txt لمزيد من المعلومات.