Nest.JS PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ کلین آرکیٹیکچر کو نافذ کرنا۔ عمودی تلاش۔ عی

Nest.JS کے ساتھ کلین آرکیٹیکچر کو نافذ کرنا

یہ مضمون ان شائقین کے لیے ہے جو صاف، توسیع پذیر، اور زیادہ اہم بات یہ ہے کہ ریفیکٹر ایبل کوڈ لکھنے کی کوشش کرتے ہیں۔ اس سے اندازہ ہوگا کہ Nest.JS کلین کوڈ لکھنے میں ہماری مدد کیسے کر سکتا ہے اور یہ کون سا بنیادی فن تعمیر استعمال کرتا ہے۔

Nest.JS کے ساتھ صاف ستھرے فن تعمیر کو نافذ کرنے کے لیے ہمیں پہلے یہ سمجھنے کی ضرورت ہوگی کہ یہ فریم ورک کیا ہے اور یہ کیسے کام کرتا ہے۔

Nest یا Nest.JS TypeScript کے ساتھ بنائی گئی موثر، توسیع پذیر Node.js ایپلی کیشنز (سرور سائیڈ) بنانے کا ایک فریم ورک ہے۔ یہ ایکسپریس یا فاسٹیفائی کا استعمال کرتا ہے اور ڈویلپرز کو اپنے کوڈ کے اندر کافی مقدار میں ماڈیولز (تھرڈ پارٹی) استعمال کرنے کے قابل بنانے کے لیے تجرید کی سطح کی اجازت دیتا ہے۔

آئیے مزید گہرائی میں کھودیں کہ یہ صاف ستھرا فن تعمیر کیا ہے۔ 

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

1. ماڈل: اس میں آبجیکٹ فائل ہوگی جو DB میں رشتہ/دستاویزات کے ساتھ نقشہ بناتی ہے۔

2. کنٹرولر: یہ درخواست کا ہینڈلر ہے اور کاروباری منطق کے نفاذ اور تمام ڈیٹا ہیرا پھیری کا ذمہ دار ہے۔

3. دیکھیں: اس حصے میں وہ فائلیں ہوں گی جن کا تعلق ڈیٹا کی نمائش سے ہے، یا تو HTML فائلیں یا کچھ ٹیمپلیٹنگ انجن فائلیں۔

ایک ماڈل بنانے کے لیے، ہمیں اسے بنانے کے لیے ORM/ODM ٹول/ماڈیول/لائبریری کی ضرورت ہے۔ مثال کے طور پر، اگر آپ ماڈیول کو براہ راست استعمال کرتے ہیں، تو آئیے 'sequelize' کہتے ہیں، اور پھر اسے اپنے کنٹرولر میں لاگ ان کو لاگو کرنے اور اپنے بنیادی کاروباری منطق کو 'sequelize' پر منحصر کرنے کے لیے استعمال کریں۔ اب، ڈاون دی لائن، آئیے کہتے ہیں کہ 10 سال بعد، مارکیٹ میں ایک بہتر ٹول ہے جسے آپ استعمال کرنا چاہتے ہیں، لیکن جیسے ہی آپ اس کے ساتھ سیکوئلائز کو تبدیل کریں گے، آپ کو اس سے بچنے کے لیے کوڈ کی بہت سی لائنوں کو تبدیل کرنا پڑے گا۔ توڑنے. اس کے علاوہ، آپ کو تمام خصوصیات کو ایک بار پھر جانچنا پڑے گا تاکہ یہ چیک کیا جا سکے کہ آیا یہ کامیابی کے ساتھ تعینات ہے یا نہیں جس سے قیمتی وقت اور وسائل بھی ضائع ہو سکتے ہیں۔ اس چیلنج پر قابو پانے کے لیے، ہم SOLID کے آخری اصول کا استعمال کر سکتے ہیں جو کہ Dependency Inversion Principle ہے، اور اس طرح کی گڑبڑ سے بچنے کے لیے انحصار انجیکشن نامی تکنیک کا استعمال کر سکتے ہیں۔

اب بھی الجھن میں ہے؟ میں تفصیل سے بیان کرتا ہوں۔

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

آئیے نیچے دیے گئے خاکے سے اسے سمجھنے کی کوشش کرتے ہیں۔

ماخذ: صاف آرکیٹیکچر مخروط 

آپ دیکھ سکتے ہیں کہ ہم نے اپنے فن تعمیر کو 4 تہوں میں تقسیم کیا ہے۔

1. ادارے: اس کے بنیادی طور پر، ادارے وہ ماڈل (انٹرپرائز رولز) ہیں جو آپ کے انٹرپرائز کے قواعد کی وضاحت کرتے ہیں اور بتاتے ہیں کہ ایپلی کیشن کیا ہے۔ یہ پرت وقت کے ساتھ مشکل سے بدلے گی اور عام طور پر خلاصہ ہوتی ہے اور براہ راست قابل رسائی نہیں ہوتی۔ مثال کے طور پر، ہر ایپلیکیشن کا ایک 'صارف' ہوتا ہے۔ صارف کو کن تمام فیلڈز کو اسٹور کرنا چاہیے، ان کی اقسام، اور دیگر اداروں کے ساتھ تعلقات ایک ہستی پر مشتمل ہوں گے۔

2. کیسز استعمال کریں: یہ ہمیں بتاتا ہے کہ ہم انٹرپرائز کے قوانین کو کیسے نافذ کر سکتے ہیں۔ آئیے ایک بار پھر صارف کی مثال لیتے ہیں۔ اب ہم جانتے ہیں کہ کس ڈیٹا پر آپریٹ کرنا ہے، استعمال کیس ہمیں بتاتا ہے کہ اس ڈیٹا پر کیسے کام کیا جائے، جیسے صارف کے پاس پاس ورڈ ہوگا جسے انکرپٹ کرنے کی ضرورت ہے، صارف کو بنانے کی ضرورت ہے، اور پاس ورڈ کسی بھی وقت تبدیل کیا جا سکتا ہے۔ مقررہ وقت، وغیرہ

3. کنٹرولرز/گیٹ ویز: یہ وہ چینلز ہیں جو انحصار انجیکشن کا استعمال کرتے ہوئے بیرونی ٹولز اور لائبریریوں کا استعمال کرتے ہوئے استعمال کے معاملات کو نافذ کرنے میں ہماری مدد کرتے ہیں۔

4. بیرونی اوزار: وہ تمام ٹولز اور لائبریریاں جو ہم اپنی منطق کو بنانے کے لیے استعمال کرتے ہیں اس پرت کے تحت آئیں گے جیسے۔ ORM، ای میلر، خفیہ کاری، وغیرہ۔

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

ٹھیک ہے، اب تک، آپ کو Nest.JS کا خلاصہ مل گیا اور آپ سمجھ گئے کہ صاف ستھرا فن تعمیر کیسے کام کرتا ہے۔ اب سوال یہ پیدا ہوتا ہے کہ ان دونوں کا آپس میں کیا تعلق ہے؟  

آئیے یہ سمجھنے کی کوشش کریں کہ Nest.JS کے 3 بلڈنگ بلاکس کیا ہیں اور ان میں سے ہر ایک کیا کرتا ہے۔

  1. ماڈیولز: Nest.JS کی ساخت اس طرح کی گئی ہے کہ ہم ہر خصوصیت کو ماڈیول کے طور پر دیکھ سکتے ہیں۔ مثال کے طور پر، کوئی بھی چیز جو صارف سے منسلک ہے جیسے کہ ماڈلز، کنٹرولرز، ڈی ٹی اوز، انٹرفیس وغیرہ، کو ماڈیول کے طور پر الگ کیا جا سکتا ہے۔ ایک ماڈیول میں ایک کنٹرولر اور فراہم کنندگان کا ایک گروپ ہوتا ہے جو انجیکشن قابل افعال ہیں جیسے خدمات، اورم، ای میلر، وغیرہ۔
  1. کنٹرولر: Nest.JS میں کنٹرولرز نیٹ ورک اور آپ کی منطق کے درمیان انٹرفیس ہیں۔ ان کا استعمال درخواستوں کو ہینڈل کرنے اور درخواست کے کلائنٹ کی طرف جوابات واپس کرنے کے لیے کیا جاتا ہے (مثال کے طور پر، API کو کال کریں)۔
  1. فراہم کنندگان (خدمات): فراہم کنندگان انجیکشن قابل خدمات/فعالیتیں ہیں جنہیں ہم کنٹرولرز اور دیگر فراہم کنندگان کو لچک اور اضافی فعالیت فراہم کرنے کے لیے انجیکشن لگا سکتے ہیں۔ وہ کسی بھی قسم کی پیچیدگی اور منطق کا خلاصہ کرتے ہیں۔

مختصر کرنے کے لئے،

  • ہمارے پاس ایسے کنٹرولرز ہیں جو انٹرفیس کے طور پر کام کرتے ہیں (صاف فن تعمیر کی تیسری پرت)
  • ہمارے پاس فراہم کنندگان ہیں جنہیں فعالیت فراہم کرنے کے لیے انجکشن لگایا جا سکتا ہے (صاف فن تعمیر کی چوتھی تہہ: ڈی بی، ڈیوائسز، وغیرہ)
  • ہم اپنے استعمال کے معاملے (دوسری پرت) کی وضاحت کے لیے خدمات اور ذخیرے بھی بنا سکتے ہیں۔
  • ہم DB فراہم کنندگان (پہلی پرت) کا استعمال کرتے ہوئے اپنے اداروں کی وضاحت کر سکتے ہیں

نتیجہ:

Nest.JS ایک طاقتور Node.JS فریم ورک ہے اور آج کل دستیاب سب سے مشہور ٹائپ اسکرپٹ ہے۔ اب جب کہ آپ کو اس فریم ورک میں کمی مل گئی ہے، آپ سوچ رہے ہوں گے کہ کیا ہم اسے صاف ستھرے فن تعمیر کے ساتھ پروجیکٹ ڈھانچہ بنانے کے لیے استعمال کر سکتے ہیں۔ ٹھیک ہے، جواب ہے - ہاں! بالکل۔ کیسے؟ میں اس مضمون کی اگلی سیریز میں وضاحت کروں گا۔ 

تب تک، دیکھتے رہیں!

کے بارے میں مصنف:

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

ہمارا تازہ ترین بلاگ پڑھیں: گولانگ-بیگو فریم ورک اور اس کی ایپلی کیشنز

وہ علم جو آپ کے ان باکس میں پہنچانے کے قابل ہے۔

ٹائم اسٹیمپ:

سے زیادہ منتر لیبز