زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم

در گذشته آفلاین است ، امروز آنلاین بودن یک امر ضروری است. حداقل برای دنیای تجارت مدرن. ارائه محصولات و خدمات با نام تجاری ، سفارش و تحویل آنلاین ، حفظ پایگاه مشتری ، برقراری ارتباط با مشتریان و موارد دیگر - همه اینها بدون حضور اینترنت غیرممکن است. اگر به یک برنامه کاربردی احتیاج دارید ، باید هم Front-end (رابط وب) و Back-End (back-end برنامه خود) داشته باشید. و اگر می خواهید بدون دخالت برنامه نویس ، محتوای برنامه خود را ویرایش کنید ، به یک پنل مدیریت خوب نیاز دارید.

در حالی که Front-end در برنامه های کاربردی تلفن همراه با استفاده از فناوری هایی مانند X-Code و Java ایجاد می شود ، Back-end ، که پایگاه داده و تمام منطق برنامه در آن ذخیره می شود ، نیاز به دانش حرفه ای از یک زبان برنامه نویسی سمت سرور دارد. مثال خوب PHP است که احتمالاً محبوب ترین زبان برنامه نویسی است که برای توسعه تقریباً هر سمت سرور مورد استفاده قرار می گیرد. این رهبر مسلم است.

کاربردهای زیادی برای PHP وجود دارد: وب سایت های ثابت و پویا + سیستم های مدیریت محتوای سفارشی ، رسانه های اجتماعی ، سیستم های CRM تخصصی ، نرم افزار تجارت الکترونیکی و موارد دیگر. البته قطعات و کنترل پنل های رایگان یا ارزان سرور نیز وجود دارد. با این حال ، در بسیاری از موارد آنها سطح لازم برای راحتی ، سفارشی سازی و به روزرسانی لازم را ارائه نمی دهند.

برنامه نویسان ما با فن آوری ها کار می کنند تا طیف گسترده ای از راه حل ها را برای اهداف ، نیازها و نیازهای مختلف تجاری بدست آورند. ما نیازهای سیستم را برای هر پروژه بصورت جداگانه تجزیه و تحلیل می کنیم و نرم افزارهای مختلف سرور تخصصی را برای عملکرد بهینه برنامه موبایل خود اعمال می کنیم.

اگر به دنبال تیمی هستید که بتواند شما را به هوشمندانه ترین و مقرون به صرفه ترین راه حل برای ساختن یک برنامه از ابتدا یا بازسازی یک مورد موجود برای یک تجربه کاربری مناسب سوق دهد ، دیگر به دنبال آن نباشید. Appsmob آماده است تا به شما کمک کند بهترین راه حل را برای شما پیدا کنید.

توسعه سمت سرور برنامه

مقدمه

حضور اینترنتی در مشاغل امروز به یک ضرورت تبدیل شده است. بدون این ، ایجاد تعامل تمام عیار با مشتریان غیرممکن است. غالباً برای حل این مشکل ، آنها به ایجاد برنامه های سرور مشتری یا مشتری متوسل می شوند. هر یک از آنها از یک مشتری و یک Back-end تشکیل شده است. اصطلاح آخر مربوط به سمت سرور برنامه است. اگر در آینده نیاز دارید که به طور مستقل محتوای برنامه تلفن همراه را تغییر دهید ، باید Back-end با کیفیتی ویژه بالا ایجاد شود. Appomart اجرای وظایف محوله را مطابق با الزامات تضمین می کند. بنابراین ، هنگام سفارش ایجاد برنامه های سرور ، می توانید از نتیجه مناسب اطمینان داشته باشید.

Back-end برای چیست؟

توسعه برنامه های مشتری-سرور شامل دو بخش است. اولین ، Front-end ، درخواست های کاربران را می پذیرد. از صفحه نمایش دستگاه های تلفن همراه مشتری قابل مشاهده است. دوم ، برنامه سرور ، درخواستهای دریافت شده را پردازش می کند و به عنوان یک صفحه اداری عمل می کند. بانک اطلاعاتی ، منطق برنامه در اینجا ذخیره می شوند. بدون این ، هیچ برنامه سرور مشتری کار نمی کند. در حقیقت ، Back-end قلب برنامه است. این اطلاعاتی است که وظیفه پردازش درخواست مشتری ، سرعت برنامه را به عهده دارد. بنابراین ، مهم است که به معماری برنامه سرور تا کمترین جزئیات فکر شود ، به طوری که حتی خدمات بسیار پر بار هموار و سریع کار می کنند.

چگونه یک زبان برنامه نویسی انتخاب کنیم؟

در هنگام تهیه تکلیف فنی (بخشی از مستندات کاری پروژه) ، معمار سیستم دیتابیس و پیوندها را طراحی می کند ، اشیاء و خصوصیات آنها را تشریح می کند ، همچنین روش های لازم سرور را ایجاد می کند (درخواست هایی که توسط برنامه های موبایل که به سرور مراجعه می کنند).

اهمیت مستندات و پروژه های متروکه

Appomart اغلب توسط مشتریانی انجام می شود که به دلایلی یا دلایل دیگری توسط پیمانکاران دیگر رها شده اند. و ما پروژه شخص دیگری ، حتی بعضاً نادرست را نیز می گیریم ، حسابرسی خود را انجام داده و تجدید نظر و پشتیبانی بعدی را انجام می دهیم. در فرآیند مطالعه کد منبع و مطالب دریافت شده از مشتری ، با این واقعیت روبرو هستیم که بسیاری از توسعه دهندگان عمداً روشهای سرور را به منظور اتصال مشتری به خودشان مستند نمی کنند ، به دلیل هزینه های غیرقابل تحمل کار برای انتقال پروژه برای پشتیبانی از توسعه دهنده دیگر ، به دلیل کمبود اسناد برای سمت سرور. و بعضی اوقات فقط به دلیل عدم حرفه ای بودن. این واقعیت متأسفانه نه تنها غم انگیز بلکه گسترده است. مشتری در این حالت باید برای تهیه مستندات برای پروژه موجود و همچنین ممیزی کد منبع هزینه پرداخت کند ، قبل از آنکه بتواند عملکرد ، راحتی و مصلحت پشتیبانی پروژه را قضاوت کند. کارمندان Appomart همواره اسناد الکترونیکی روشهای برگشت را با فرمت پشتیبانی شده توسط Postman و Swagger برای مرجع بعدی حفظ می کنند.

چگونه قبل از امضای قرارداد پیمانکار را بررسی کنیم؟

ما از شما می خواهیم که یک پیمانکار را به دقت انتخاب کنید ، و نه تنها بر قیمت وسوسه\u200cانگیز بلکه در لیست اسنادی که با پروژه دریافت خواهید کرد ، و همچنین شرایط انتقال کد منبع و پوشش کد با توضیحات ، طرح\u200cهای پایگاه داده (از جمله آن Mongo DB یا MySQL) توجه کنید. ) کلید موفقیت ، به عنوان یک قاعده ، به مستندات کاری صالح تبدیل می شود ، که به وضوح الزاماتی را برای مواد منتقل شده پس از اتمام هر مرحله از کار نشان می دهد.

ویژگی های توسعه

پی اچ پی برای سمت سرور

ایجاد سمت سرور برنامه ها (برای اینکه با سرورها به عنوان "سخت افزار" یا رایانه ها اشتباه نگیرید ، از آنجا که در مورد طرف نرم افزار صحبت می کنیم) به مهارت های تخصصی و دانش خاصی از زبان برنامه نویسی که در سمت سرور استفاده می شود نیاز دارد. اگر نمونه هایی از برنامه های سرور مشتری را مشاهده کنید ، می بینید که PHP محبوب است. این رهبر بلامنازع در توسعه برنامه های سرور است. بیش از نیمی از سایتهای جهان به این زبان در یک پیکربندی یا دیگری نوشته شده اند. PHP برای توسعه و نگهداری آسان است ، و همچنین چارچوب های خاصی برای سرعت بخشیدن به توسعه PHP وجود دارد.

چارچوب

Framework (بستر نرم افزاری) - برای سازماندهی و افزایش سطح انتزاع مورد استفاده قرار می گیرد و این باعث می شود پروژه انعطاف پذیر و مقیاس پذیر شود. با این وجود ، باید فهمید که چارچوب باید براساس یک تحلیل عمیق از مستندات کاری پروژه ، بطور صحیح انتخاب شود ، بدون آن امکان تولید یک محصول با کیفیت غیرممکن است.

دلفی ، جاوا ، پایتون

زبان های دیگری نیز وجود دارد که برای ایجاد Back-end استفاده می شود. بنابراین ، برنامه های سرور ایجاد شده در محیط دلفی بسیار گسترده است. با کمک آن ، برنامه اشکال زدایی پیشرفته را دریافت می کند ، همچنین می توان با ایجاد برنامه های منحصر به فرد در محیط ، ایجاد بصری فراهم شده است و این باعث می شود تا یک رابط کاربری زیبا ، شفاف و راحت ایجاد شود. برنامه های سرور جاوا نیز محبوبیت زیادی کسب کرده اند. اینها به راحتی تکمیل می شوند ، به راحتی بر روی هر سیستم عامل اجرا می شوند و از امنیت مناسبی برخوردار هستند. پایتون زبان محبوب دیگری است. با کمک آن ، برنامه های سرور به سرعت ، به سادگی و بدون هزینه های جدی ایجاد می شوند.

گسترش

ایجاد برنامه های مشتری-سرور در محیط شرکت مورد تقاضا است. اغلب چنین برنامه هایی برای گروه های کاری یا ایجاد سیستم های اطلاعاتی در شرکت استفاده می شود. اکثریت قریب به اتفاق برنامه های کاربردی موبایل برای حفظ ارتباط با مشتری نیز از معماری مشابهی برخوردار هستند. محبوبیت این امر به این دلیل است که استفاده از قابلیت های سرور به شما امکان می دهد در عین کاهش بار در شبکه ، از کنترل و یکپارچگی سیستم اطمینان حاصل کنید.

ما یک برنامه کلاینت سرور برای Android ، iOS با کیفیت بالا و به موقع ایجاد خواهیم کرد

توسعه کلید در دست

برنامه نویسان Appomart باتجربه و واجد شرایط برای انجام وظایف با طیف گسترده ای از سطح هستند. ما در اجرای شبکه های اجتماعی ، پروژه های تجاری پر بار یا نرم افزاری برای راه اندازی های کوچک به همان اندازه خوب هستیم. در صورت لزوم ، ما بخشی از برنامه را که با Android ، iOS مطابق با نیازها و نیازهای موجود اجرا می کند ، مشتری را ایجاد می کنیم.

بازگشت به عقب در Appomart

برنامه نویسان ما با فن آوری های مختلف کار می کنند و به همان اندازه این کار را انجام می دهند. در Appomart می توانید یک برنامه سرور مشتری را در Java ، PHP و Node.JS سفارش دهید. الزامات سیستم برای اطمینان از عملکرد مطلوب برنامه برای هر پروژه بطور جداگانه تجزیه و تحلیل می شود. بیایید از ابتدا برنامه های کاربردی سرویس دهنده سرویس دهنده ، Java ، PHP و Node.JS را ایجاد کنیم یا یکی از موارد موجود را برای پشتیبانی از پیشرفت ها و به روزرسانی ها در نظر بگیریم. اگر شما علاقه مند به ایجاد یک قسمت جدید سرور یا پشتیبانی از یک موجود هستید - درخواست دریافت یک محاسبه دقیق از هزینه کار و گزینه های همکاری را ترک کنید.

نزولی مشتری های تلفن همراه سرور است.

الزامات اضافی به مشخصات برنامه بستگی دارد:
مقیاس پذیری سرور - برای SaaS ، برنامه های کاربردی اجتماعی ، که در حالت ایده آل ، جریان زیادی از بازدید کنندگان انتظار می رود ، این شرط الزامی است. برای برنامه های تجاری که در آن تعداد محدودیت هایی در تعداد کاربران وجود دارد یا تعداد آنها پیش بینی شده است ، این ویژگی لازم نیست.
تعامل: تعدادی از برنامه ها باید با مکانیسم اطلاع رسانی ارائه شوند - برنامه (کاربر) را در مورد وقوع برخی از رویدادها آگاه سازید ، پیام را به کاربر ارسال کنید. به عنوان مثال ، این ویژگی باید توسط یک سیستم صرافی یا یک توزیع کننده تاکسی اتوماتیک در اختیار داشته باشد.
API open: فرض بر این است که توسعه دهندگان شخص ثالث می توانند از طریق پروتکل مستند از عملکرد سیستم استفاده کنند. از این گذشته ، مشتری می تواند یک موبایل یا یک برنامه سرور خارجی باشد.
ملزومات دیگر ...

فرمان
در حالت ایده آل ، ترکیب تیم پروژه برای توسعه سیستم می تواند به شرح زیر باشد:
مدیر پروژه: مدیریت ، كنترل پروژه ، تعامل مستقیم با مشتری.
توسعه دهنده برنامه سرور: توسعه سرور منطق تجارت ، بانک اطلاعاتی ، پروتکل شبکه.
توسعه دهنده برنامه سرور: توسعه یک برنامه وب ، رابط کاربری برای پیکربندی و مدیریت یک برنامه سرور.
توسعه دهنده برنامه مشتری برای Android؛
توسعه دهنده برنامه مشتری iOS؛
توسعه دهنده برنامه مشتری برای ...
تستر: برنامه های سرپرست و برنامه های مشتری را آزمایش می کند.

خواننده توجه متوجه خواهد شد که اگر یک برنامه سرور را با یک رابط گرافیکی بنویسید ، به عنوان مثال در HTML5 ، می توانید پس انداز کنید. در این حالت ، توسعه برنامه های مشتری لازم نیست - مرورگر رابط کاربری را فراهم می کند. این مقاله به چنین موردی نمی پردازد ، در مورد توسعه برنامه های "بومی" (بومی) برای دستگاه های تلفن همراه است.

من در یک تیم با کادر کامل کار کرده ام ، اما واقع بین خواهم بود - همیشه منابع انسانی و بودجه به شما امکان نمی دهد چنین تیمی را جمع کنید. و گاهی اوقات نقش ها باید با هم ترکیب شوند: مدیر پروژه + توسعه دهنده برنامه سرور ، توسعه دهنده برنامه مشتری + تستر.

فن آوری ها ، ابزارها ، کتابخانه ها
برای توسعه سرور برای مشتری های تلفن همراه ، من معمولاً از پشته های زیر فناوری های "رایگان" استفاده می کنم:
Apache Tomcat یک ظرف سرویس است.
MySQL - DBMS؛
براندازی یک سیستم کنترل نسخه است.
Maven - چارچوبی برای ساخت خودکار پروژه؛
JUnit - فراهم می کند؛
Apache Log4j - کتابخانه ورود به سیستم؛
جنکینز - سیستم ادغام مداوم.
Hibernate - ORM (تنظیمات ، پیکربندی ویژگی ها ، پرونده های xml و حاشیه نویسی).
hibernate-generic-dao - پیاده سازی DAO از گوگل ، پیاده سازی روش های اساسی برای کار با داده های پایگاه داده ، اجرای فیلتر و مرتب سازی در روش ها را ساده می کند.
- اجرای احراز هویت و مجوز (امنیت) ، ظرف خدمات و لوبیا (پیکربندی در پرونده های xml و در حاشیه نویسی) ، ما همچنین در هنگام ایجاد آزمایشات استفاده می کنیم.

بسته به مشخصات سیستم و شرایط مورد نیاز آن ، من یکی از 2 گزینه را برای اجرای پروتکل تبادل داده استفاده می کنم.
هنگامی که کراس پلت فرم ، سرعت ، سادگی ، کارایی ، مقیاس پذیری ، API باز مورد نیاز است ، من جرسی را می گیرم - اجرای سرویس های وب REST (خدمات وب RESTful). این کتابخانه به شما امکان می دهد از سریال سازی داده های JSON و / یا XML استفاده کنید. پیکربندی REST از طریق حاشیه نویسی انجام می شود. برای مبادله با دستگاه های تلفن همراه ، فرمت JSON به این دلیل صورت گرفته است که اجرای ساده تری در سمت مشتری دارد (به همین دلیل ، ما از خدمات "کلاسیک" وب استفاده نمی کنیم) ، ترافیک کمتری ایجاد می شود. جرسی به شما امکان می دهد تا متناسب با "نگاه" مناسب ترین JSON تنظیم کنید.
در غیر این صورت ، اگر به کراس پلت فرم ، سرعت بالا ، سادگی ، کارایی ، تعامل ، نیاز دارید ، پس از آن من استفاده می کنم
Apache MINA چارچوبی برای ساختن برنامه های شبکه است ،
Google protobuf یک کتابخانه رمزگذاری و رمزگشایی داده ساختار یافته است. ساختار داده ها توسط پرونده های هدر * .proto تعیین می شود ، کامپایلر کلاسهای جاوا را از آنها تولید می کند (همچنین امکان تولید برای سایر زبان های برنامه نویسی نیز وجود دارد: C ++ ، Objective-C ، و غیره. که ویژگی cross-platform را فراهم می کند).
java.util.concurrent - ما از بسته استاندارد استفاده می کنیم.
این گزینه قابل اندازه گیری است ، اما این باید با در نظر گرفتن منطق تجارت ، در مرحله طراحی در سطح معماری ارائه شود.

بگذارید با استفاده از مثال انتخاب فن آوری ها برای یک سرویس واقعی SaaS ، یک کار فرضی را در نظر بگیریم - "حراج خدمات" Auknem "، که به افراد امکان می دهد برای انجام خدمات یا کارهای مورد نیاز ، نظمی را سفارش دهند ، و سازمان ها نیز به نوبه خود ، پیشنهادات خود را برای آنها بگذارند. همه نیازهای اساسی را بطور پیش فرض در نظر می گیریم. با توجه به اینکه ثبت نام در این سامانه رایگان و رایگان است ، قطعاً اضافه کردن مقیاس پذیری برای آنها ضروری است. تعامل چیست؟ این امر بسیار عالی خواهد بود که به پیمانکاران (مجریان) در مورد ایجاد سفارشات جدید اطلاع دهید و به مشتریان در مورد پیشنهادهای دریافت شده در همان لحظه در برنامه و نه فقط از طریق پست الکترونیکی آگاه شوید. بر این اساس ، ما برای پیاده سازی Apache MINA ، protobuf Google استفاده می کنیم. ما به ویژگی بعدی نگاه می کنیم - API را باز کنید. این سرویس در دسترس عموم است ، بنابراین فرض کنیم توسعه دهندگان خارجی ممکن است علاقه مند به ادغام با آن باشند. صبر کن! نه خیلی ساده پروتکل مبتنی بر Apache MINA کاملاً وابسته به اجرای است و ادغام بدون دانستن تفاوت های ظریف به هیچ وجه شفاف نیست. در چنین شرایطی مجبور خواهید بود وزن خود را از کدام فاکتور مهمتر کرده و انتخاب کنید.

نتیجه
من علاقه مند می دانم هنگام تهیه سرور دستگاه های تلفن همراه یا سیستم های مشابه از چه فناوری ها ، کتابخانه هایی استفاده کرده اید؟ همه چیز تغییر می کند ، هیچ چیز برای همیشه دوام نمی یابد ، در هر سطح گزینه هایی با مزایا و معایب خاص خود وجود دارد: MySQL -

بسیاری از مدرن است برنامه های کاربردی برای سیستم عامل های تلفن همراه (iOS ، Android ، و غیره) به طور همزمان با یک سرور کار می کند. برنامه ای با داده های قدیمی منافع خود را از دست می دهد. بنابراین ، مهم است که اطمینان حاصل شود که داده های سرور به دستگاه به طور مداوم به روز می شود. این مربوط به برنامه های آفلاین است که باید بدون اینترنت کار کنند. برای برنامه های کاملاً آنلاین که بدون اینترنت کار نمی کنند (یا بی فایده است) (به عنوان مثال Foursquare ، Facebook) ویژگی هایی وجود دارد که خارج از محدوده این مقاله است.

با استفاده از مثال یکی از برنامه های آفلاین ما ، به شما می گویم که برای هماهنگ سازی داده ها از چه رویکردهایی استفاده کرده ایم. در نسخه های اول ما توسعه داده ایم الگوریتم های ساده و در آینده با تجربه ، آنها را بهبود بخشیدیم. توالی مشابهی در مقاله ارائه شده است - از رویه های واضح و ساده تا کارهای پیچیده تر.

لازم به توضیح است که مقاله با انتقال داده ها فقط از یک جهت سروکار دارد: از سرور به دستگاه. در اینجا سرور منبع داده است.

مفاد کلی برای همه رویکردها

به عنوان مثال ، ما یک فهرست "ظروف" را به یک دستگاه در نظر خواهیم گرفت. فرض خواهیم کرد که دستگاه درخواست url "/ service / ظروف / بروزرسانی" را انجام داده است ، مبادله از طریق پروتکل http با فرمت JSON انجام می شود ( www.json.org) سرور دارای جدول "ظروف" با فیلدهای زیر است: شناسه (شناسه ضبط) ، نام (نام ظرف) ، به روز شده (لحظه به روزرسانی ظرف ، بهتر است بلافاصله از منطقه زمانی پشتیبانی کنید ، "YYYY-MM-DDThh: mm: ssTZD" ، به عنوان مثال ، "1997 -07-16T19: 20: 30 + 01: 00 ") ، حذف شده است (نشانه ضبط حذف شده).

اظهار نظر در مورد حضور آخرین قسمت. به طور پیش فرض ، مقدار آن 0 است. در برنامه ای که اشخاص بین مشتری و سرور هماهنگ می شوند ، حذف داده های فیزیکی از سرور توصیه نمی شود (برای جلوگیری از خطا). بنابراین ، is_deleted \u003d 1 برای ظروف حذف شده تنظیم شده است. وقتی موجودی با is_deleted \u003d 1 وارد دستگاه می شود ، از دستگاه حذف می شود.

با هر رویکردی که در زیر مورد بررسی قرار خواهد گرفت ، سرور مجموعه ای از اشیاء را به دستگاه های JSON باز می گرداند (ممکن است خالی باشد):

[
(شناسه: ، نام: به روز شده: ، isDelected: },…
]

مثال پاسخ سرور:

[
(شناسه: 5625 ، نام: "نان" ، به روز شده: "2013-01-06 06:23:12" ، isDelected: 0) ،
(شناسه: 23 ، نام: "سمولینا پخته شده" ، به روز شده: "2013-02-01 14:44:21" ، isDelected: 0) ، (

نام: "سوپ ماهی" ،

به روز شده: "2013-08-02 07:05:19" ،

اصول به روزرسانی داده ها در یک دستگاه

  1. اگر عنصری که در دستگاه موجود است وارد شده و isDeleted \u003d 0 باشد ، آن را به روز می کند
  2. اگر عنصری وارد شده باشد که در دستگاه نباشد و isDeleted \u003d 0 باشد ، آن را اضافه می کند
  3. اگر عنصری که در دستگاه قرار دارد آمده و isDelected \u003d 1 باشد ، حذف می شود
  4. اگر عنصری وارد شده باشد که در دستگاه نباشد و isDeleted \u003d 1 باشد ، هیچ کاری انجام نمی شود

رویکرد 1: همیشه همه چیز را همگام کنید

این ساده ترین روش است. دستگاه لیستی از ظروف را از سرور درخواست می کند و سرور کل لیست را ارسال می کند. هر وقت کل لیست می آید طبقه بندی نشده اند

درخواست مثال: null یا "()"

مزایای:

  • منطق سرور ساده است - ما همیشه همه چیز را می دهیم
  • منطق دستگاه ساده است - همیشه همه چیز را رونویسی می کنیم

معایب:

  • اگر این لیست را اغلب بخواهید (هر 10 دقیقه) ، ترافیک اینترنت زیاد خواهد بود
  • اگر لیست به ندرت (روزی یک بار) درخواست شود ، اهمیت داده ها نقض می شود

منطقه برنامه:

  • برای برنامه های کم ترافیک
  • انتقال داده های بسیار نادر در حال تغییر (لیست شهرها ، دسته بندی ها)
  • انتقال تنظیمات برنامه
  • در ابتدای پروژه برای اولین نمونه اولیه یک برنامه تلفن همراه

رویکرد 2: فقط به روزرسانی را همزمان کنید

دستگاه لیستی از ظروف را که از همگام سازی قبلی به روز شده است ، درخواست می کند. لیست به ترتیب "به روز شده" به ترتیب صعودی (اختیاری ، اما راحت) طبقه بندی می شود. دستگاه مقدار "به روز شده" را برای جدیدترین ظرف ارسال شده ذخیره می کند و در صورت درخواست بعدی ، آن را به پارامتر "lastUpdated" به سرور می فرستد. سرور لیستی از ظروف جدیدتر از "lastUpdated" (به روز شده\u003e lastUpdated) می فرستد. در اولین درخواست به سرور "lastUpdated" \u003d تهی.

درخواست مثال: (آخرین تاریخ به روز: "2013-01-01 00:00:00")

در نمودار: "last_updated" مقداری است که در دستگاه ذخیره می شود. معمولاً یک جدول جداگانه در دستگاه ایجاد می شود تا این مقادیر "last_updated" برای هر موجودیت (ظرف ، شهر ، سازمان و غیره) ذخیره شود.

این روش برای همگام سازی لیست های خطی ساده با همان قوانین ورود برای همه دستگاه ها مناسب است. برای هماهنگ سازی انتخابی تر ، به "رویکرد 5: هماهنگ سازی با دانش موجود در دستگاه" مراجعه کنید.

این رویکرد معمولاً بیشتر نیازها را پوشش می دهد. فقط داده های جدید به دستگاه می آید ، شما می توانید حداقل در هر دقیقه همگام سازی کنید - ترافیک اندک خواهد بود. با این حال ، مشکلات مربوط به محدودیت های دستگاه های تلفن همراه وجود دارد. اینها حافظه و پردازنده هستند.

رویکرد 3: در دسته ها همگام سازی کنید

دستگاه های تلفن همراه رم کم هستند. اگر 3000 فهرست در دایرکتوری وجود داشته باشد ، تجزیه کردن یک رشته json بزرگ از سرور به اشیاء موجود در دستگاه ممکن است باعث کمبود حافظه شود. در این حالت ، برنامه 3000 این بشقاب را خراب یا ذخیره نمی کند. اما حتی اگر دستگاه قادر به هضم چنین رشته ای باشد ، عملکرد برنامه در لحظه های هماهنگ سازی در پس زمینه کم خواهد بود (تأخیر در رابط ، پیمایش صاف و غیره نیست.) بنابراین لازم است لیست را در بخش های کوچکتر درخواست کنید.

برای این کار ، یک پارامتر دیگر ("مقدار") عبور می کند ، که اندازه آن را تعیین می کند. لیست باید مرتب شده بر اساس قسمت "به روز شده" به ترتیب صعودی باشد. این دستگاه ، مشابه رویکرد قبلی ، ارزش "به روز شده" آخرین واحد ارسال شده را به یاد می آورد و آن را به قسمت "lastUpdated" منتقل می کند. اگر سرور دقیقاً به همان تعداد اشخاص ارسال شده باشد ، دستگاه همگام سازی خود را ادامه می دهد و دوباره یک درخواست را انجام می دهد ، اما با "lastUpdated" به روز شده. اگر سرور موجودیت کمتری ارسال کرده باشد ، به این معنی است که داده جدید بیشتری ندارد و همگام سازی به پایان می رسد.

در نمودار: "last_updated" و "مقدار" مقادیر ذخیره شده هستند برنامه تلفن همراه ... "Last_item" - آخرین موجودیت (ظرف) ارسال شده از سرور. جدیدتر از این مقدار است که لیست بعدی درخواست می شود.

درخواست مثال: (آخرین تاریخ به روز: "2013-01-01 00:00:00" ، مقدار: 100)

مزایای:

  • دستگاه به اندازه توانایی پردازش داده ، همان داده را دریافت می کند. اندازه خدمت با آزمایش های عملی تعیین می شود. موجودات ساده را می توان همزمان 1000 همگام سازی کرد. اما همچنین اتفاق می افتد که اشخاص دارای تعداد زیادی زمینه و منطق پیچیده پردازش ذخیره سازی به طور معمول بیش از 5 قطعه همزمان نمی شوند.

معایب:

  • اگر 250 ظرف با همان به روز شده وجود داشته باشد ، سپس با مقدار \u003d 100 ، 150 مورد آخر به دستگاه ها ارسال نمی شود. این وضعیت کاملاً واقعی است و در روش زیر توضیح داده شده است.

رویکرد 4: زمان بندی درست دسته ای

در رویکرد قبلی ، این امکان وجود دارد که اگر جدول شامل 250 ظرف با همان "به روز شده" (به عنوان مثال "2013-01-10 12:34:56") باشد و اندازه آن 100 باشد ، در آن صورت فقط 100 رکورد اول آمده است. 150 باقیمانده سخت گیر خواهند شد (به روز شده\u003e lastUpdated). چرا این اتفاق می افتد؟ در صورت درخواست 100 رکورد اول ، lastUpdated بر روی "2013-01-10 12:34:56" تنظیم می شود و درخواست بعدی شرط آن را خواهد داشت (به روز شده\u003e "2013-01-10 12:34:56"). حتی نرم کردن شرایط (به روز شده\u003e \u003d "2013-01-10 12:34:56") کمکی نخواهد کرد ، زیرا دستگاه سپس بی نهایت صد رکورد اول را درخواست می کند.

وضعیت با همان "به روز شده" چندان نادر نیست. به عنوان مثال ، هنگام وارد کردن داده از یک فایل متنی ، قسمت "به روز شده" در حال حاضر تنظیم شده است. واردات پرونده با هزاران خط می تواند کمتر از یک ثانیه طول بکشد. همچنین ممکن است اتفاق بیفتد که کل دایرکتوری همان "به روز شده" را داشته باشد.

برای برطرف کردن این مشکل ، شما باید از یک قسمت از ظرف استفاده کنید که حداقل در یک لحظه بی نظیر باشد ("به روز شده"). قسمت "id" در کل جدول بی نظیر است ، بنابراین باید علاوه بر این از آن در هماهنگی استفاده کنید.

بنابراین ، اجرای این رویکرد به این شکل به نظر می رسد. سرور لیست مرتب شده بر اساس "به روز شده" و "شناسه" را برمی گرداند ، و دستگاه ها با استفاده از "lastUpdated" و پارامتر جدید "lastId" داده را درخواست می کنند. در سرور ، شرایط انتخاب پیچیده تر است: ((به روز شده\u003e lastUpdated) یا (به روز شده \u003d lastUpdated و شناسه\u003e lastId)).

در نمودار: "last_updated" ، "last_id" و "مقدار" مقادیری هستند که در برنامه موبایل ذخیره می شوند. "Last_item" - آخرین موجودیت (ظرف) ارسال شده از سرور. جدیدتر از این مقدار است که لیست بعدی درخواست می شود.

رویکرد 5: همگام سازی با دانش موجود در دستگاه

رویکردهای قبلی این واقعیت را در نظر نمی گیرند که سرور واقعاً نمی داند که چگونه داده ها با موفقیت ذخیره شدند. دستگاه به دلیل خطاهای غیر قابل توضیح نمی تواند برخی از داده ها را ذخیره کند. بنابراین ، خوب خواهد بود که تأییدیه از دستگاه دریافت کنیم که تمام (یا نه همه) ظروف حفظ شده است.

علاوه بر این ، کاربر برنامه می تواند برنامه را به گونه ای تنظیم کند که فقط به بخشی از داده ها نیاز داشته باشد. به عنوان مثال ، یک کاربر می خواهد ظرف 2 شهر از 10 شهر همگام سازی ظرف ها را انجام دهد.

ایده رویکرد به شرح زیر است. سرور اطلاعات مربوط به ظروف موجود در دستگاه (در یک جدول جداگانه "store_item_list") را ذخیره می کند. این فقط می تواند لیستی از جفت های "id - به روز شده" باشد. این جدول شامل همه لیست های جفت ظرف "شناسه به روز شده" برای همه دستگاه ها است.

دستگاه اطلاعات مربوط به ظروف موجود در دستگاه (لیست جفت های "id" به روز شده) را به همراه درخواست همگام سازی به سرور می فرستد. در صورت درخواست ، سرور بررسی می کند که کدام ظروف باید روی دستگاه باشد و اکنون کدام ها هستند. سپس اختلاف به دستگاه ارسال می شود.

چگونه سرور تعیین می کند که ظروف باید روی دستگاه باشد؟ در ساده ترین حالت ، سرور درخواستی را انجام می دهد که لیستی از جفت های "شناسه به روز شده" از همه ظروف را برگرداند (به عنوان مثال ، شناسه SELE ، ظروف از به روز شده). در نمودار ، این کار با روش "WhatShouldBeOnDeviceMethod ()" انجام می شود. این نقطه ضعف رویکرد است - سرور مجبور است محاسبه کند (گاهی اوقات پرس و جو های sql سنگین را ایجاد می کند) آنچه باید در دستگاه باشد.

چگونه سرور مشخص می کند که ظروف روی دستگاه چیست؟ برای این دستگاه در جدول "store_item_list" پرس و جو ایجاد می کند و لیستی از جفت های "id - به روز شده" دریافت می کند.

با تجزیه و تحلیل این دو لیست ، سرور تصمیم می گیرد که چه چیزی باید به دستگاه ارسال شود و چه چیزی باید حذف شود. در نمودار ، این "delta_item_list" است. بنابراین ، درخواست شامل "lastUpdated" و "lastId" نیست ، وظیفه آنها توسط جفت "id - به روز شده" انجام می شود.

چگونه سرور از ظروف موجود در دستگاه اطلاع دارد؟ در درخواست به سرور ، پارامتر جدید "موارد" اضافه می شود ، که شامل لیستی از شناسه ظروف ارسال شده به دستگاه در آخرین هماهنگ سازی ("device_last_stored_item_list") می باشد. البته ، شما می توانید لیستی از موارد خاص همه ظروف موجود در دستگاه را ارسال کنید و الگوریتم را پیچیده نکنید. اما اگر 3000 ظرف در دستگاه وجود داشته باشد و همه آنها در هر زمان ارسال شود ، در این صورت هزینه ترافیک بسیار بالا خواهد بود. در اکثر قریب به اتفاق هماهنگ سازی ها ، پارامتر "موارد" خالی خواهد بود.

سرور باید دائماً "ذخیره شده_یتم_ لیست" خود را با داده هایی که از دستگاه در پارامتر "موارد" به دست آمده است ، به روز کند.

مکانیزمی را برای پاک کردن داده های سرور در store_item_list پیاده سازی کنید. به عنوان مثال ، پس از نصب مجدد برنامه روی یک دستگاه ، سرور فرض می کند که دستگاه هنوز به روز است. بنابراین ، هنگام نصب برنامه ، دستگاه باید به نوعی سرور را مطلع کند تا بتواند store_item_list را برای این دستگاه پاک کند. در برنامه ما ، یک پارامتر اضافی "cleCache" \u003d 1 را در این مورد ارسال می کنیم.

نتیجه

جدول خلاصه مشخصات این رویکردها:

یک رویکرد حجم ترافیک(5 - بزرگ) شدت کار توسعه(5 - بالا) استفاده از حافظه دستگاه(5 - بالا) صحت اطلاعات در دستگاه(5 - بالا) می توانید یک دستگاه خاص را انتخاب کنید
1 همه چیز همیشه هماهنگ است 5 1 5 5 نه
2 فقط به روز شده است 1 2 5 3 نه
3 هماهنگ سازی در دسته ها 1 3 1 3 نه
4 هماهنگ سازی صحیح در دسته ها 1 3 1 3 نه
5 هماهنگ سازی با آگاهی از آنچه در حال حاضر روی دستگاه است 2 5 2 5 آره

"صحت اطلاعات در دستگاه" این احتمال است که دستگاه شامل تمام داده هایی است که توسط سرور ارسال شده است. در مورد رویکردهای شماره 1 و 5 ، اطمینان 100٪ وجود دارد که دستگاه تمام داده های مورد نیاز خود را دارد. در موارد دیگر ، چنین تضمینی وجود ندارد. این بدان معنا نیست که از رویکردهای دیگر نمی توان استفاده کرد. این درست است که اگر برخی از داده ها در دستگاه از بین رفته باشد ، رفع آن از روی سرور امکان پذیر نخواهد بود (و حتی بیشتر از آن برای اطلاع از آن در سمت سرور).

شاید با وجود تعرفه نامحدود اینترنت و وای فای رایگان ، مشکل محدود کردن ترافیک ایجاد شده توسط یک برنامه تلفن همراه کمتر مورد توجه قرار گیرد. اما در حالی که شما باید به انواع ترفندها بروید ، رویکردهای هوشمندانه تری داشته باشید که می تواند هزینه های شبکه را کاهش داده و عملکرد برنامه را افزایش دهد. همیشه کار نمی کند بسته به شرایط ، گاهی اوقات "ساده تر ، بهتر" است. امیدوارم از این مقاله ، بتوانید رویکردی را انتخاب کنید که مفید واقع شود.

توصیف های کمی از هماهنگ سازی سرورها در اینترنت و دستگاه های تلفن همراه ... علاوه بر این ، برنامه های بسیاری وجود دارد که مطابق با این طرح کار می کنند. برای علاقه مندان ، یک زن و شوهر از لینک.

شرکت ما خدماتی را برای ایجاد سمت سرور برنامه های تجاری موبایل و سرویس های وب مشتری ارائه می دهد که در محیط های پر بار فعالیت می کنند. هنگام تهیه هر پروژه ، ما سعی می کنیم رویکرد فردی را به کار گیریم تا محصول حاصل به بهینه ترین راه حل برای اهداف خاص مشتری تبدیل شود.

اگر از یک برنامه پیچیده استفاده می کنید که داده ها را روی یک سرور ذخیره و یا پردازش می کند ، یک Back-end در پشت آن قرار دارد - یک بسته نرم افزاری که در یک وب سرور میزبانی شده و با یک برنامه کار می کند ، که در این حالت Front-end نام دارد. برنامه ای که روی سرور قرار دارد می تواند همزمان با تعداد زیادی مشتری کار کند ، این امر الزاماتی را برای سرعت بالا و ایمنی عملکرد آن تحمیل می کند.

سمت سرور برنامه اغلب به زبان PHP نوشته شده است که محبوب ترین زبان برای چنین راه حل هایی است. برای اجرای وظایف ساده سرور ، می توانید از سیستم های استاندارد استفاده کنید ، اما برای موارد خاص تر ، شما نیاز دارید که راه حل یا افزودنی های خود را بر روی سیستم های استاندارد توسعه دهید.

اصول توسعه سرور برای یک برنامه موبایل

برنامه نویسان ما با فناوری هایی کار می کنند که به ما امکان می دهند طیف گسترده ای از راه حل ها را برای هر نوع کار ، حتی بسیار زیاد و مناطق مختلف ، پیاده سازی کنیم. ما همچنین برای کارهای جداگانه راه حلهای جداگانه سرور ایجاد می کنیم.

کنترل سازمانی

هر پروژه توسط یک گروه جداگانه از متخصصان مسئول تمام مراحل توسعه و تحویل به موقع پروژه ایجاد می شود.

برنامه نويسي

طراحی معماری سرور مهمترین مرحله در فرآیند ایجاد پایگاه داده و تشکیل الگوریتم های لازم است.

آزمایش کردن

قسمت نرم افزار باید بدون خطا و خرابی کار کند. این همان چیزی است که آزمایشکنندگان سیستم آزمایش می کنند.

پشتیبانی فنی

کارمندان ما پشتیبانی فنی کاملی از برنامه ها دارند که به شما امکان می دهد نواقص را سریع برطرف کرده و به روزرسانی کنید.

ویژگی های توسعه

به منظور توسعه صحیح سمت سرور برنامه ، مهارت و دانش خاصی از زبان برنامه نویسی مورد استفاده در سرور لازم است. همانطور که نشان می دهد عمل ، برنامه های مشتری-سرور در PHP ایجاد می شوند. او رهبر بلامنازع در این زمینه است. بیش از نیمی از سایتهای جهان به زبان پی اچ پی نوشته شده اند ، برای توسعه و پشتیبانی مناسب است.

چارچوب

این بستر نرم افزاری به شما امکان می دهد پروژه خود را مقیاس پذیرتر و انعطاف پذیر تر کنید. با این وجود ، چارچوب باید تا حد امکان صحیح انتخاب شود ، بنابراین ، تجزیه و تحلیل عمیق از مستندات کاری پروژه مورد نیاز است ، که متعاقبا به توسعه یک محصول با کیفیت بالا کمک خواهد کرد.

زبان های دیگری نیز وجود دارد که برای توسعه Back-end استفاده می شود. به عنوان مثال ، برنامه های سرور ایجاد شده در محیط Delphi محبوب هستند. با توجه به آن ، برنامه اشکال زدایی بهبود یافته است. علاوه بر این ، تهیه برنامه های منحصر به فرد در آن آسان تر است ، ایجاد بصری را فراهم می کند. همه اینها باعث می شود تا یک رابط کاربری واضح و راحت ایجاد شود.

برنامه های سرور جاوا کمتر محبوب هستند. آنها می توانند بدون مشکل مکمل شوند ، به راحتی بر روی سیستم عامل های مختلف اجرا شوند و از امنیت بالایی برخوردار باشند.

یکی دیگر از زبانهای متداول. این کمک می کند تا برنامه های سرور را به راحتی ، سریع و ارزان ایجاد کنید.

تقریباً همه شرکت های مدرن دفاتر مجازی خود را دارند. وب سایت می تواند به صورت کارت ویزیت یا پرتال یا فروشگاه آنلاین با امکان سفارش دهی باشد.

فرایندهای تجاری در این حالت به سرورهای وب بستگی دارند ، یعنی توانایی آنها در مقاومت در برابر حملات ، تلاشهای هک کردن و تأثیرات منفی خارجی و همچنین عملکرد کافی برای بسیاری از درخواستهای همزمان.

مراحل توسعه خدمات وب

هنگام ایجاد برنامه های کاربردی برای بخش های مختلف بازار ، کار خود را بر اساس یک اصل واحد سامان می دهیم - کل مراحل را به مراحل جداگانه می شکنیم ، پیشرفت و نتایج آن به مشتریان گزارش می شود. بنابراین ، یک سرور برای یک برنامه تلفن همراه به روشی مشابه توسعه می یابد.

1. توسعه یک ایده

حداکثر 2 هفته

در این مرحله بنیادی ایجاد می شود که ایده ای راجع به آنچه گذاشته می شود و در کدام جهت توسعه خواهد یافت.

2. ارزیابی پروژه

2-3 هفته

متخصصان ما زمان و هزینه کار را ارزیابی می کنند ، سپس یک پیشنهاد اولیه برای توسعه تهیه می شود.

3. شرایط مرجع و قرارداد

حداکثر 2 هفته

پس از بحث و گفتگو با مشتری در مورد همه تفاوت های ظریف و تهیه مشخصات فنی دقیق ، توافقی تهیه و امضا می شود.

4- توسعه رابط

2-3 هفته

طراحان در ایجاد واسط های مورد نیاز برای نوشتن ماژول های نرم افزاری نقش دارند.

6. تست

2-3 هفته

بررسی جامع راه حل نرم افزاری حاصل توسط آزمایش کنندگان با استفاده از مجموعه ای از ابزارهای مناسب انجام می شود.

7. تکمیل پروژه

حداکثر 2 هفته

در یک بازه زمانی توافق شده ، یک سرویس وب آماده و کاملاً آزمایش شده به مشتری تحویل داده می شود.

تیم ما

از طریق تجزیه و تحلیل فعالیتهای تجاری و نیازهای مشتریان ، محصولات واقعی زندگی را ایجاد می کنیم که به حل انواع مشکلات تجاری کمک می کند. استفاده از فن آوری های مدرن طیف گسترده ای از امکانات را برای اجرای نرم افزار سرور فراهم می کند ، که عملکرد بالا برنامه های مربوط به موبایل را تضمین می کند. تیم ما توسط:

مدیران پروژه

این کارمندان با مشتریان و توسعه دهندگان در تعامل هستند و ارتباط بین آنها را تضمین می کنند. آنها اجرای هر دو اقدامات از قبل برنامه ریزی شده و پیشرفت های لازم را کنترل می کنند.

طراحان

در کارشان ، متخصصان ما الزامات ایجاد رابط برای سیستم عامل های iOS و Android را در نظر می گیرند ، بنابراین برنامه های منتشر شده به درستی روی دستگاه های مختلف کار می کنند.

توسعه دهندگان

به منظور بهینه سازی عملکرد برنامه های کاربردی موبایل ، برنامه نویسان نیازهای سیستم خود را تجزیه و تحلیل کرده و نرم افزار تخصصی سرور ایجاد می کنند.

آزمایش کنندگان

آزمایش دقیق تضمین کیفیت محصول نهایی و ضمانت ایمنی داده های ذخیره شده و پردازش شده است. این متخصصان از ابزارهای متنوعی و روش کارآمد استفاده می کنند.

چه خدماتی ایجاد می کنیم

چه در یک نرم افزار داخلی و چه در یک برنامه مستقل تعبیه شده ، یک سرویس وب برای انجام وظایف مربوط به تبلیغات ، تجزیه و تحلیل ، برنامه ریزی و ارتقاء مشاغل خدمت می کند. در این راستا ، لازم است تصمیم بگیرید که کدام نوع از راه حل بهینه خواهد بود.

پروژه های اطلاعاتی

طراحی شده برای متناسب کردن مطالب متنوع.

سایتهای موضوعی

تقریباً تمام صفحات آنها به یک موضوع اختصاص داده شده است. تقاضا برای آنها هنوز هم بسیار زیاد است.

سایتهای خبری

در مورد اخبار مختلف در یک یا چند موضوع ، منعکس کننده مناطق اصلی زندگی است.

وبلاگها

محبوبیت این منابع دائما در حال افزایش است. آنها مانند سایتهای خبری ، این یا آن اطلاعات را به جامعه اینترنت منتقل می کنند ، اما در این مورد ، نویسندگان نظر شخصی خود را ابراز می کنند.

پروژه های اجتماعی

اینها شامل تخصصی اجتماعی است. شبکه ها ، انجمن ها ، انجمن ها و غیره

انجمن ها

برای بحث در مورد اخبار مختلف ، کالاها / خدمات و غیره ایجاد شده است آنها می توانند هم از لحاظ تمرکز و هم متنوع باشند.

شبکه های اجتماعی

این منابع مخاطب چند میلیونی دارند. وظیفه اصلی آنها فراهم کردن امکان برقراری ارتباط آنلاین از طریق پیام های متنی / صوتی و ارتباط تصویری به کاربران اینترنت است.

سرویسهای مختلف وب

امروزه گسترده ، آنها به چندین نوع تقسیم می شوند.

کاتالوگ ها

خدمات پستی

تمام ویژگی ها و مزایای ایمیل از جمله مشاهده ، ارسال ، ویرایش نامه ها و اسناد و غیره را در اختیار کاربران قرار دهید.

موتورهای جستجو

آنها برای جستجوی سایتها و اطلاعات مختلف در مورد درخواست های خاص استفاده می شوند.

تابلو اعلانات

این منابع وب هستند که شهروندان تبلیغات خود را برای فروش و خرید و خدمات در موضوعات مختلف ارسال می کنند.

سایت های میزبانی

برای ذخیره موقت فایلها طراحی شده است. برخی از آنها امکان بررسی داده ها را قبل از بارگیری فراهم می کنند.

سوالات متداول

در زیر ما به سؤالاتی که اغلب توسط متخصصان ما مطرح می شود پاسخ می دهیم. اگر در اینجا اطلاعات مورد علاقه خود را پیدا نمی کنید ، لطفاً سؤال خود را در این مورد مطرح کنید فرم ، و ما قطعاً به آن پاسخ خواهیم داد.

چه مدت طول می کشد برای ساخت برنامه و سرور وب؟

به طور متوسط \u200b\u200b، این کار از 9 تا 20 هفته به طول می انجامد. همه اینها به پیچیدگی کار مورد نظر بستگی دارد.

زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم