موبائل ڈیویلپمنٹ میں ڈیٹا سیریالائزیشن — یہ کیا ہے، فارمیٹ اور کام کا اصول

مصنف: IT Sectr اشاعت: 2026-03-08 مطالعے کا وقت: 8 منٹ

سیریالائزیشن کسی آبجیکٹ یا ڈیٹا ساخت کو ایک مسلسل فارمیٹ میں تبدیل کرنے کا عمل ہے جو نیٹ ورک ٹرانسمیشن یا فائل میں ذخیرہ کرنے کے لیے موزوں ہوتا ہے۔ الٹ عمل، ڈی سیریالائزیشن، ڈیٹا کو اسکی اصلی حالت میں بحال کرتا ہے۔ MDN Web Docs کے مطابق، کسی بھی بین العملیہ مواصلات کے لیے سیریالائزیشن ضروری ہے۔ سیریالائزیشن REST API، کیشنگ اور ایپلیکیشن کمپوننٹس کے درمیان ڈیٹا کے تبادلے کی بنیاد ہے۔

اہم نکات

  • سیریالائزیشن — ترسیل یا ذخیرہ کے لیے کسی آبجیکٹ کو ڈیٹا سٹریم میں تبدیل کرنا
  • JSON — REST API اور ویب مواصلات کے لیے اہم متن فارمیٹ
  • Protobuf — زیادہ سے زیادہ کارکردگی اور کمپیکٹی کے ساتھ ایک بائنری فارمیٹ
  • XML — انٹرپرائز اور Android ڈیویلپمنٹ کے لیے تصدیق کے ساتھ ایک سخت فارمیٹ
  • فارمیٹ کا انتخاب کارکردگی اور مطابقت کی ضروریات پر منحصر ہے

سیریالائزیشن کیا ہے؟

سیریالائزیشن RAM میں موجود کسی آبجیکٹ کو بائٹس یا حروف کی ایک لینیر سیکوئنس میں تبدیل کرنے کا عمل ہے جسے نیٹ ورک پر منتقل کیا جا سکے، فائل میں محفوظ کیا جا سکے، یا کسی دوسرے عمل کو دیا جا سکے۔ سیریالائزیشن کے بغیر، نیٹ ورک مواصلات، حالت برقراری اور بین العملیہ بات چیت ناممکن ہوگی۔

سیریالائزیشن میں دو متضاد عمل شامل ہیں۔ آگے کا عمل (سیریالائزیشن) ڈیٹا کو ترسیلی فارمیٹ میں پیک کرتا ہے۔ الٹ عمل (ڈی سیریالائزیشن) ڈیٹا کو واپس آبجیکٹ میں بحال کرتا ہے۔ ڈی سیریالائزیشن سیکیورٹی کے لیے اہم ہے: غلط انپٹ ڈیٹا ایپلیکیشن میں کمزوریاں پیدا کر سکتا ہے۔

موبائل ایپلیکیشن ڈیویلپمنٹ میں، سیریالائزیشن ہر جگہ استعمال ہوتا ہے: سرور پر درخواستیں بھیجنا اور جوابات پر کارروائی کرنا، سکرین گھومنے پر ایپلیکیشن کی حالت محفوظ کرنا، ڈسک پر ڈیٹا کیش کرنا، اور Intent (Android) یا Segue (iOS) کے ذریعے سکرینوں کے درمیان ڈیٹا منتقل کرنا۔

سیریالائزیشن کے اہم کام

  • نیٹ ورک مواصلات — کلائنٹ اور سرور کے درمیان ڈیٹا منتقلی
  • حالت برقراری — ایپلیکیشن ڈیٹا محفوظ کرنا اور بحال کرنا
  • کیشنگ — آف لائن رسائی کے لیے درخواستوں کے نتائج محفوظ کرنا
  • کراس پلیٹ فارم — مختلف زبانوں میں سسٹمز کے درمیان ڈیٹا کا تبادلہ
  • لاگنگ — لاگز میں لکھنے کے لیے آبجیکٹس کا سیریالائزیشن

اہم سیریالائزیشن فارمیٹ

سیریالائزیشن فارمیٹ متنی اور بائنری میں تقسیم ہوتے ہیں۔ متنی فارمیٹ (JSON، XML) انسانی پڑھنے کے قابل ہوتے ہیں اور دیکھنے کے لیے کسی آلے کی ضرورت نہیں ہوتی۔ بائنری فارمیٹ (Protobuf، FlatBuffers، MessagePack) زیادہ کمپیکٹ اور تیز ہوتے ہیں لیکن ڈی سیریالائزیشن کے بغیر نہیں پڑھے جا سکتے۔ فارمیٹ کا انتخاب کارکردگی اور ڈیباگنگ کی سہولت کے درمیان ایک سمجھوتہ ہے۔

JSON، XML اور Protobuf کے علاوہ، مخصوص فارمیٹ بھی موجود ہیں: Google کا FlatBuffers گیمز اور AR کے لیے، MessagePack — JSON کا ایک کمپیکٹ بائنری متبادل، Apache کا Avro Kafka میں بڑے ڈیٹا کے لیے، YAML — تحریروں کے تعاون کے ساتھ ایک ترتیب کا فارمیٹ۔

فارمیٹ قسم اسکیما حجم بہاؤ
JSON متن اختیاری درمیانہ درمیانہ
XML متن XSD بڑا کم
Protobuf بائنری لازمی چھوٹا زیادہ
FlatBuffers بائنری لازمی چھوٹا انتہائی
MessagePack بائنری نہیں چھوٹا زیادہ
Avro بائنری JSON Schema چھوٹا زیادہ

موبائل ڈیویلپمنٹ میں سیریالائزیشن

موبائل پلیٹ فارمز پر سیریالائزیشن کی اپنی خصوصیات ہیں: محدود ٹریفک، کمزور پروسیسر، اور سکرین گھومنے پر حالت محفوظ کرنے کی ضرورت۔ Android پر Gson، Moshi، Kotlinx Serialization استعمال ہوتے ہیں۔ iOS پر — Codable، JSONSerialization، PropertyListEncoder۔ صحیح لائبریری کا انتخاب ایپلیکیشن کی کارکردگی کو شدید متاثر کرتا ہے۔

Kotlinx Serialization Kotlin Multiplatform Mobile کے لیے JetBrains کی ایک جدید لائبریری ہے۔ یہ JSON، Protobuf، CBOR اور کسٹم فارمیٹ کو سپورٹ کرتی ہے۔ کوڈ جنریشن Kotlin Serialization پلگ ان کے ذریعے کمپائل ٹائم پر ہوتا ہے، جو ریفلیکشن کا استعمال کیے بغیر اعلی کارکردگی کو یقینی بناتا ہے۔

Kotlinx Serialization (Kotlin Multiplatform)

Kotlinx Serialization لائبریری کلاسس کے لیے @Serializable اینوٹیشن اور سیریالائزر جنریٹ کرنے کے لیے کمپائلر پلگ ان استعمال کرتی ہے۔ یہ اعلی کارکردگی اور ٹائپ سیکیورٹی کو یقینی بناتا ہے۔ پہلے سے طبع فارمیٹ JSON ہے، لیکن دیگر فارمیٹ اضافی ماڈیولز کے ذریعے سپورٹ کیے جاتے ہیں۔

kotlin
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString

@Serializable
data class Project(
    val id: Int,
    val name: String,
    val platforms: List<String>,
    val active: Boolean
)

val json = Json {
    prettyPrint = true
    ignoreUnknownKeys = true
    encodeDefaults = true
}

fun main() {
    val project = Project(1, "MobileApp",
        listOf("Android", "iOS"), true)

    // سیریلائزیشن
    val jsonString = json.encodeToString(project)

    // ڈی سیریلائزیشن
    val restored = json.decodeFromString<Project>(jsonString)
}

iOS پر Codable (Swift)

Codable پروٹوکول Swift کا بلٹ ان سیریالائزیشن میکانیزم ہے۔ یہ Encodable (سیریالائزیشن) اور Decodable (ڈی سیریالائزیشن) پروٹوکولز کو مضموم کرتا ہے۔ JSONEncoder اور JSONDecoder خود بخود نیسٹڈ سٹرکچرز، ایرے، آپشنل ویلیوز، اور CodingKeys کے ذریعے کسٹم کیز کو ہینڈل کرتے ہیں۔

swift
import Foundation

struct AppConfig: Codable {
    let appName: String
    let version: String
    let features: [String]
    let isProduction: Bool
}

let config = AppConfig(
    appName: "MyApp",
    version: "2.1.0",
    features: ["push", "analytics", "offline"],
    isProduction: true
)

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]

guard let data = try? encoder.encode(config) else { return }
let jsonString = String(data: data, encoding: .utf8)

کارکردگی اور فارمیٹ کا موازنہ

سیریالائزیشن فارمیٹس کی کارکردگی کو تین میٹرکس سے ماپا جاتا ہے: پیغام کا حجم، سیریالائزیشن کی بہاؤ، اور ڈی سیریالائزیشن کی بہاؤ۔ موبائل ایپلیکیشنز کے لیے، تینوں اہم ہیں: حجم ٹریفک اور لوڈ ٹائم کو متاثر کرتا ہے، بہاؤ انٹرفیس کی ری ایکٹیویٹی اور ایپلیکیشن کے اسٹارٹ ٹائم کو متاثر کرتی ہے۔

Protobuf اور FlatBuffers بائنری نمائندگی کے کارن بہترین نتائج دکھاتے ہیں۔ FlatBuffers اس لیے ممیز ہے کہ اسے الگ سے ڈی سیریالائزیشن کے مرحلے کی ضرورت نہیں — ڈیٹا تبدیل کے بغیر سیدھے بائنری بفر سے پڑھا جاتا ہے، جو اسے کم سے کم لیٹنسی کی ضروریات والے گیمز اور AR ایپلیکیشنز کے لیے موزوں بناتا ہے۔ JSON، کمزور کارکردگی کے باوجود، اپنی سادگی اور آلمیت کی کارن REST API کے لیے سب سے مقبول فارمیٹ بنا ہوا ہے۔

منظرنامہ تجویز کردہ فارمیٹ وجہ
REST API JSON آلمیت، پڑھنے کی اہلیت، سپورٹ
مائیکرو سروسز Protobuf کمپیکٹی، بہاؤ، gRPC
گیمز / AR FlatBuffers Zero-copy، کم سے کم لیٹنسی
بڑا ڈیٹا Avro Kafka اور Hadoop کے ساتھ مطابقت
ترتیب YAML تحریریں، پڑھنے کی اہلیت
Android لے آؤٹ XML پلیٹ فارم کا معیار

بینچ مارک ٹیسٹنگ

1000 صارف آبجیکٹس کے ڈیٹاسیٹ پر عملی ٹیسٹ دکھاتے ہیں: Protobuf 12 KB کے پیغام بناتا ہے (JSON — 85 KB، XML — 120 KB)۔ سیریالائزیشن کا وقت: Protobuf — 2 ms، JSON — 8 ms، XML — 25 ms۔ یہ اعداد بائنری فارمیٹس کو ہائی لوڈ سسٹم اور محدود ٹریفک والے موبائل ایپلیکیشنز کے لیے ترجیح دیتے ہیں۔

ڈیٹا سیریالائزیشن کی مثالیں

مثالیں ایک ہی آبجیکٹ کو مختلف فارمیٹس میں سیریالائزیشن کا مظاہرہ کرتی ہیں۔ یہ حجم اور پڑھنے کی اہلیت کا بصوری موازنہ کرنے میں مدد کرتا ہے۔ ایک ہی User آبجیکٹ کو JSON، XML اور Protobuf میں سیریالائز کیا جائے گا — صاف ظاہر ہے کہ JSON، XML سے زیادہ کمپیکٹ ہے، اور Protobuf سب سے زیادہ کمپیکٹ اور ناقابل مطالعہ ہے۔

ایک آبجیکٹ تین فارمیٹس میں

JSON — کم سے کم سنٹیکس، قول میں کیز، مختلف اقسام کی قیمتیں۔ 80 حروف پر مشتمل ہے۔ پڑھنے کی اہلیت زیادہ، بصری ساخت واضح۔ ان API کے لیے موزوں جہاں ڈیویلپمنٹ اور ڈیباگنگ کی بہاؤ اہم ہے۔

XML — ہر عنصر کھولنے اور بند کرنے والے ٹیگ میں لپٹا ہوتا ہے۔ 150 حروف پر مشتمل ہے۔ پڑھنے کی اہلیت درمیانی، ساخت سخت۔ دستاویزات کے ورک فلو اور XSD تصدیق کی ضرورت والے سسٹم کے لیے موزوں ہے۔

Protobuf — بائنری، اس ڈیٹا کے لیے 32 بائٹس۔ ناقابل مطالعہ — دیکھنے کے لیے ڈی سیریالائزیشن درکار ہے۔ کم سے کم حجم اسے ہائی لوڈ سسٹم اور موبائل ایپلیکیشنز کے لیے موزوں بناتا ہے۔

json
{
  "id": 42,
  "name": "IT Sectr",
  "email": "team@itsectr.com",
  "role": "admin",
  "active": true
}
xml
<user>
    <id>42</id>
    <name>IT Sectr</name>
    <email>team@itsectr.com</email>
    <role>admin</role>
    <active>true</active>
</user>

سیریالائزیشن کے بہترین طریقے

بہترین طریقے عام غلطیوں سے بچنے اور پروجیکٹ کے لیے صحیح سیریالائزیشن حکمت عملی چننے میں مدد کرتے ہیں۔ ان سفارشات پر عمل کرنے سے کارکردگی، سیکیورٹی اور کوڈ کی برقراری میں بہتری آتی ہے۔

موبائل ڈیویلپمنٹ کے لیے سفارشات

  1. منظرنامے کے مطابق فارمیٹ چنیں — REST API کے لیے JSON، gRPC اور مائیکرو سروسز کے لیے Protobuf
  2. Java Serializable سے بچیں — سست اور غیر محفوظ میکانیزم، Kotlinx Serialization یا Moshi استعمال کریں
  3. نامعلوم کیز کو نظرانداز کریں — ماڈل میں غیر موجود فیلڈز کو چھوڑنے کے لیے پارسر ترتیب دیں
  4. ڈی سیریالائز کردہ ڈیٹا کیش کریں — ایک ہی ڈیٹا کو بار بار پارس کرنے سے بچیں
  5. انپٹ ڈیٹا کی تصدیق کریں — ڈی سیریالائزیشن کے دوران حدود اور اقسام کی جانچ کریں

سیکیورٹی اور سیریالائزیشن

سیریالائزیشن سیکیورٹی ایک انتہائی اہم پہلو ہے، خاص کر کے ناقابل اعتماد ذرائع سے ڈیٹا کو ڈی سیریالائز کرتے وقت۔ ڈی سیریالائزیشن حملے ریموٹ کوڈ ایگزی کیوشن (RCE) کا سبب بن سکتے ہیں، جو ویب اور موبائل ایپلیکیشنز میں سب سے خطرناک کمزوریوں میں سے ایک ہے۔ سب سے مشہور ماملے Java Serializable اور Python pickle سے متعلق ہیں۔

Protobuf اور JSON میں ایسے حملوں کے خلاف بلٹ ان تحفظ ہے، کیونکہ وہ صرف ڈیٹا کے ساتھ کام کرتے ہیں، من مانے آبجیکٹس کے ساتھ نہیں۔ دوسری طرف، Java Serializable classpath میں موجود کسی بھی کلاس کو بحال کر سکتا ہے، جو اسے بیرونی ذرائع سے ڈیٹا وصول کرنے کے لیے خطرناک بناتا ہے۔ Android پر، معیاری Java Serialization کے بجائے Kotlinx Serialization یا Moshi استعمال کرنے کی سفارش کی جاتی ہے۔

اضافی سیکیورٹی اقدامات: انپٹ ڈیٹا کے حجم پر ایک حد مقرر کریں، ڈی سیریالائزیشن سے پہلے اسکیما کی تصدیق کریں، HTTP ہیڈرز سے Content-Type پر بھروسہ نہ کریں، مجاز کلاسیس کے لیے ایک الاٗ لسٹ استعمال کریں۔ سیریالائزیشن لائبریریوں کو بایقاعدگی سے اپڈیٹ کرتے رہیں، کیونکہ کمزوریاں وقتاً فوقتاً دریافت اور ٹھیک کی جاتی ہیں۔

اکثر پوچھے جانے والے سوالات

سیریالائزیشن اور مارشلنگ میں کیا فرق ہے؟

سیریالائزیشن ایک آبجیکٹ کو بائٹس کی سیکوئنس میں تبدیل کرتا ہے، جبکہ مارشلنگ اقسام اور ساخت کو محفوظ رکھتے ہوئے مختلف ایڈریس اسپیسز کے درمیان ڈیٹا منتقل کرتا ہے۔ مارشلنگ میں سیریالائزیشن عمل کے ایک حصہ کے طور پر شامل ہے، لیکن اس میں حوالہ اینکوڈنگ اور میموری مینجمنٹ بھی شامل ہو سکتا ہے۔

کون سا سیریالائزیشن فارمیٹ سب سے تیز ہے؟

Google کا FlatBuffers zero-copy ڈی سیریالائزیشن کے کارن زیادہ سے زیادہ بہاؤ فراہم کرتا ہے — ڈیٹا بدلنے کے بغیر سیدھے بائنری بفر سے پڑھا جاتا ہے۔ Protobuf دوسرے نمبر پر، JSON تیسرے نمبر پر ہے۔ XML عام فارمیٹس میں سب سے سست ہے۔

Android کے لیے کیا چنیں: Gson، Moshi یا Kotlinx Serialization؟

Kotlinx Serialization نئے Kotlin پروجیکٹس کے لیے بہترین چناؤ ہے: کمپائلر جنریشن، Kotlin Multiplatform کا تعاون، null safety۔ Moshi Java پروجیکٹس کے لیے ایک اچھا چناؤ ہے، Gson سے زیادہ کارکردگی رکھتا ہے۔ Gson شروع کرنے کے لیے سب سے سادہ لائبریری ہے لیکن سست ہے اور ریفلیکشن استعمال کرتی ہے۔

چکری حوالوں والے آبجیکٹ کو کیسے سیریالائز کریں؟

چکری حوالے سیریالائزیشن کے دوران لاتعداد تکرار کا سبب بنتے ہیں۔ حل: سیدھے آبجیکٹ حوالوں کے بجائے ID حوالے استعمال کریں، مخصوص سیریالائزیشن ایڈاپٹر لگائیں (مثال کے طور پر Jackson میں @JsonIgnore)، یا چکروں کو ختم کرنے کے لیے ڈیٹا ماڈل کو دوبارہ ڈیزائن کریں۔

کیا سیریالائزیشن ایپلیکیشن سیکیورٹی کو متاثر کرتا ہے؟

جی ہاں، خاص کر کے ناقابل اعتماد ڈیٹا کا ڈی سیریالائزیشن۔ ڈی سیریالائزیشن کی کمزوریاں ریموٹ کوڈ ایگزی کیوشن کا سبب بن سکتی ہیں۔ سفارشات: ناقابل اعتماد ذرائع سے ڈیٹا کو ڈی سیریالائز نہ کریں، ڈی سیریالائزیشن کے دوران کلاسیس کی الاٗ لسٹ استعمال کریں، اور کارروائی سے پہلے ڈیٹا اسکیما کی تصدیق کریں۔

خلاصہ

  • سیریالائزیشن آبجیکٹس کو ترسیل اور ذخیرہ کے لیے ڈیٹا سٹریم میں تبدیل کرتا ہے، ڈی سیریالائزیشن انہیں بحال کرتا ہے
  • JSON REST API کا معیار ہے، XML دستاویزات کے ورک فلو کے لیے، Protobuf مائیکرو سروسز اور ہائی لوڈ کے لیے
  • بائنری فارمیٹ (Protobuf, FlatBuffers) متن فارمیٹس سے 3–10 گنا زیادہ کمپیکٹ اور تیز ہیں
  • Android پر Kotlinx Serialization کی سفارش کی جاتی ہے، iOS پر — بلٹ ان Codable
  • ڈی سیریالائز کردہ ڈیٹا کی کیشنگ CPU بوجھ کم کرتی ہے اور ایپلیکیشن کو تیز کرتی ہے
  • ڈی سیریالائزیشن سیکیورٹی اہم ہے — انپٹ ڈیٹا کی تصدیق کریں اور الاٗ لسٹ استعمال کریں
  • فارمیٹ کا انتخاب پڑھنے کی اہلیت، کارکردگی اور مطابقت کے درمیان ایک سمجھوتہ ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں