ආයුබෝවන් සගයන්.
නවීන මෘදුකාංග පද්ධති සැලසුම් කිරීමේ මූලධර්ම සාපේක්ෂව කුඩා පරිමාවකින් ගෙනහැර දැක්වීමට භාරගත් Tugberk Ugurlu ගේ ලිපියක පරිවර්තනයක් අද අපි ඔබේ සලකා බැලීම සඳහා ඉදිරිපත් කරමු. කතුවරයා තමා ගැන සාරාංශයක් ලෙස පවසන දේ මෙන්න:
2019 වන විට වාස්තු විද්යාත්මක රටා + සැලසුම් රටා වැනි දැවැන්ත මාතෘකාවක් හබ්රෝ ලිපියකින් ආවරණය කිරීම කිසිසේත් කළ නොහැකි බැවින්, අපි උරුග්ලු මහතාගේ පෙළ පමණක් නොව, ඔහු කාරුණිකව ඇතුළත් කළ සබැඳි රාශියක් ද නිර්දේශ කරමු. ඔබ එයට කැමති නම්, බෙදා හරින ලද පද්ධති සැලසුම් කිරීම පිළිබඳ වඩාත් විශේෂිත පෙළක් අපි ප්රකාශයට පත් කරන්නෙමු.
Snapshot
මුල සිටම මෘදුකාංග පද්ධතියක් සැලසුම් කිරීම වැනි අභියෝගවලට ඔබට කිසිදාක මුහුණ දීමට සිදු වී නොමැති නම්, එවැනි වැඩ ආරම්භ කිරීමේදී, සමහර විට ආරම්භ කළ යුත්තේ කොතැනින්ද යන්න පවා පැහැදිලි නැත. ඔබ මුලින්ම මායිම් ඇඳීමට අවශ්ය බව මම විශ්වාස කරමි, එවිට ඔබ සැලසුම් කිරීමට යන්නේ කුමක්ද යන්න පිළිබඳ වැඩි හෝ අඩු විශ්වාසයක් ඇති අතර, පසුව ඔබේ අත් පෙරළා එම සීමාවන් තුළ වැඩ කරන්න. ආරම්භක ලක්ෂ්යයක් ලෙස, ඔබට නිෂ්පාදනයක් හෝ සේවාවක් (ඔබ සැබවින්ම කැමති එකක්) ගෙන එය ක්රියාත්මක කරන්නේ කෙසේදැයි සොයා බැලිය හැක. මෙම නිෂ්පාදනයේ පෙනුම කෙතරම් සරලද යන්න සහ එහි ඇත්ත වශයෙන්ම කොපමණ සංකීර්ණත්වයක් තිබේද යන්න ගැන ඔබ පුදුමයට පත් විය හැකිය. අමතක කරන්න එපා:
මම හිතන්නේ පද්ධතියක් සැලසුම් කිරීමට පටන් ගන්නා ඕනෑම කෙනෙකුට මට දිය හැකි හොඳම උපදෙස මෙයයි: කිසිම උපකල්පනයක් කරන්න එපා! ආරම්භයේ සිටම, ඔබ මෙම පද්ධතිය ගැන දන්නා කරුණු සහ ඒ හා සම්බන්ධ අපේක්ෂාවන් සඳහන් කළ යුතුය. ඔබේ නිර්මාණය සමඟ ආරම්භ කිරීමට ඔබට උපකාර කිරීමට ඇසිය යුතු හොඳ ප්රශ්න කිහිපයක් මෙන්න:
- අප විසඳා ගැනීමට උත්සාහ කරන ගැටලුව කුමක්ද?
- අපගේ පද්ධතිය සමඟ අන්තර් ක්රියා කරන උපරිම පරිශීලක සංඛ්යාව කොපමණද?
- අපි භාවිතා කරන දත්ත ලිවීමේ සහ කියවීමේ රටා මොනවාද?
- අපේක්ෂිත අසාර්ථක අවස්ථා මොනවාද, අපි ඒවා හසුරුවන්නේ කෙසේද?
- පද්ධතියේ අනුකූලතාව සහ ලබා ගැනීමේ අපේක්ෂාවන් මොනවාද?
- වැඩ කිරීමේදී බාහිර සත්යාපනය සහ නියාමනය සම්බන්ධ අවශ්යතා ඔබ සැලකිල්ලට ගත යුතුද?
- අපි ගබඩා කිරීමට යන්නේ කුමන ආකාරයේ සංවේදී දත්තද?
මේ වසර ගණනාවක් පුරා වෘත්තීය ක්රියාකාරකම්වල නිරත වූ මට සහ මා සහභාගී වූ කණ්ඩායම් දෙකටම ප්රයෝජනවත් වූ ප්රශ්න කිහිපයක් පමණි. මෙම ප්රශ්නවලට පිළිතුරු ඔබ දන්නේ නම් (සහ ඔබට වැඩ කිරීමට සිදුවන සන්දර්භයට අදාළ වෙනත් ඕනෑම දෙයක්), එවිට ඔබට ක්රමයෙන් ගැටලුවේ තාක්ෂණික තොරතුරු සොයා බැලිය හැකිය.
ආරම්භක මට්ටම සකසන්න
මෙහි "මූලික" යන්නෙන් මා අදහස් කරන්නේ කුමක්ද? ඇත්ත වශයෙන්ම, අපේ කාලයේ, මෘදුකාංග කර්මාන්තයේ බොහෝ ගැටලු පවතින ක්රම සහ තාක්ෂණයන් භාවිතයෙන් විසඳා ගත හැකිය. ඒ අනුව, මෙම භූ දර්ශනයේ සැරිසැරීමෙන්, ඔබට පෙර වෙනත් කෙනෙකුට විසඳිය යුතු ගැටළු වලට මුහුණ දෙන විට ඔබට නිශ්චිත ආරම්භයක් ලැබේ. ව්යාපාර සහ පරිශීලක ගැටළු විසඳීම සඳහා වැඩසටහන් ලියා ඇති බව අමතක නොකරන්න, එබැවින් අපි ගැටලුව වඩාත් සරල හා සරල (පරිශීලකයාගේ දෘෂ්ටි කෝණයෙන්) විසඳීමට උත්සාහ කරමු. මෙය මතක තබා ගැනීම වැදගත් වන්නේ ඇයි? සමහර විට ඔබේ ඛණ්ඩාංක පද්ධතිය තුළ ඔබ සියලු ගැටලු සඳහා අද්විතීය විසඳුම් සෙවීමට කැමති වනු ඇත, ඔබ සිතන නිසා, "මම සෑම තැනකම රටා අනුගමනය කරන්නේ නම් මම කුමන ආකාරයේ වැඩසටහන්කරුවෙකුද?" ඇත්ත වශයෙන්ම, මෙහි කලාව යනු කොහේද සහ කුමක් කළ යුතුද යන්න පිළිබඳව තීරණ ගැනීමයි. ඇත්ත වශයෙන්ම, අප සෑම කෙනෙකුටම වරින් වර අද්විතීය ගැටළු සමඟ කටයුතු කිරීමට සිදු වන අතර, ඒ සෑම එකක්ම සැබෑ අභියෝගයකි. කෙසේ වෙතත්, අපගේ ආරම්භක මට්ටම පැහැදිලිව නිර්වචනය කර ඇත්නම්, අපගේ ශක්තිය වැය කළ යුතු දේ අපි දනිමු: අප ඉදිරියේ ඇති ගැටළුව විසඳීම සඳහා සූදානම් කළ විකල්ප සෙවීම, හෝ එය තවදුරටත් අධ්යයනය කර ගැඹුරු අවබෝධයක් ලබා ගැනීම.
සමහර අපූරු මෘදුකාංග පද්ධතිවල වාස්තු විද්යාත්මක අංගය කුමක්දැයි විශේෂඥයෙකු විශ්වාසයෙන් වටහා ගන්නේ නම්, ගෘහ නිර්මාණ ශිල්පියෙකුගේ කලාව ප්රගුණ කිරීමට සහ මෙම ක්ෂේත්රයේ ශක්තිමත් පදනමක් වර්ධනය කිරීමට මෙම දැනුම අත්යවශ්ය වනු ඇතැයි මම ඔබට ඒත්තු ගැන්වීමට මට හැකි විය.
හරි, ඉතින් කොහෙන් පටන් ගන්නද? යූ
කෙසේ වෙතත්, මෙම ද්රව්යය වෙත යාමට පෙර, අපි ප්රායෝගිකව මුහුණ දෙන වැදගත්ම වාස්තුවිද්යාත්මක අභියෝග දෙස සමීපව බලමු. මෙය වැදගත් වන්නේ ඔබ මුරණ්ඩු සහ බහු මුහුණුවර ඇති ගැටලුවක බොහෝ පැති සඳහන් කළ යුතු අතර, එය ලබා දී ඇති පද්ධතියක ක්රියාත්මක වන රෙගුලාසි රාමුව තුළ විසඳා ගත යුතු බැවිනි.
දත්ත ගබඩා කිරීම සහ නැවත ලබා ගැනීම පිළිබඳ දැනුම ගොඩනැගීම
සාමාන්යයෙන්, ඔබ දිගු කාලීනව ඔබේ දත්ත ගබඩා කර ලබා ගන්නා ආකාරය පිළිබඳ ඔබේ තීරණය පද්ධතියේ ක්රියාකාරීත්වය කෙරෙහි තීරණාත්මක බලපෑමක් ඇති කරයි. එමනිසා, ඔබ මුලින්ම ඔබේ පද්ධතියේ අපේක්ෂිත ලිවීමේ සහ කියවීමේ ලක්ෂණ තේරුම් ගත යුතුය. එවිට ඔබට මෙම දර්ශක ඇගයීමට හා සිදු කරන ලද තක්සේරු මත පදනම්ව තේරීම් කිරීමට හැකි විය යුතුය. කෙසේ වෙතත්, ඔබට මෙම කාර්යය සමඟ සාර්ථකව මුහුණ දිය හැක්කේ පවතින දත්ත ගබඩා කිරීමේ රටා ඔබ තේරුම් ගන්නේ නම් පමණි. ප්රතිපත්තිමය වශයෙන්, මෙයට සම්බන්ධ ඝන දැනුමක් අදහස් වේ
දත්ත සමුදායන් අතිශයින් පරිමාණය කළ හැකි සහ කල් පවතින දත්ත ව්යුහයන් ලෙස සැලකිය හැකිය. එබැවින්, විශේෂිත දත්ත සමුදායක් තෝරාගැනීමේදී දත්ත ව්යුහයන් පිළිබඳ දැනුම ඔබට ඉතා ප්රයෝජනවත් විය යුතුය. උදාහරණ වශයෙන්,
Snapshot
විවිධ දත්ත ගබඩා කිරීමේ රටාවන් පිළිබඳව ඔබට ප්රමාණවත් අවබෝධයක් ලැබුණු පසු, දත්ත අනුකූලතාව සහ පවතින බව අධ්යයනය කිරීමට ඉදිරියට යන්න. පළමුවෙන්ම, ඔබ තේරුම් ගත යුතුය
අවසාන වශයෙන්, දත්ත ගබඩා කිරීමේ ගැටළු පිළිබඳ සංවාදය අවසන් කරමින්, අපි හැඹිලිගත කිරීම ගැනද සඳහන් කළ යුතුය. එය සේවාදායකයා සහ සේවාදායකයේ එකවර ක්රියාත්මක විය යුතුද? ඔබගේ හැඹිලියේ ඇති දත්ත මොනවාද? සහ ඇයි? ඔබ හැඹිලි අවලංගු කිරීම සංවිධානය කරන්නේ කෙසේද? එය නිතිපතා, නිශ්චිත කාල පරාසයන් තුළ සිදු කෙරේද? ඔව් නම්, කොපමණ වාරයක් ද? මෙම මාතෘකා සමඟ අධ්යයනය කිරීම ආරම්භ කිරීමට මම නිර්දේශ කරමි
සන්නිවේදන රටා
පද්ධති විවිධ සංරචක වලින් සමන්විත වේ; මේවා එකම භෞතික නෝඩය තුළ ක්රියාත්මක වන විවිධ ක්රියාවලීන් හෝ ඔබේ ජාලයේ විවිධ කොටස්වල ක්රියාත්මක වන විවිධ යන්ත්ර විය හැකිය. ඔබේ ජාලය තුළ ඇති මෙම සම්පත්වලින් සමහරක් පුද්ගලික විය හැකි නමුත් අනෙක් ඒවා පොදු විය යුතු අතර පිටත සිට ඒවාට ප්රවේශ වන පාරිභෝගිකයින්ට විවෘත විය යුතුය.
මෙම සම්පත් එකිනෙකා සමඟ සන්නිවේදනය කිරීම මෙන්ම සමස්ත පද්ධතිය සහ බාහිර ලෝකය අතර තොරතුරු හුවමාරු කිරීම සහතික කිරීම අවශ්ය වේ. පද්ධති සැලසුම් සන්දර්භය තුළ, මෙහිදී නැවතත් අපට නව සහ අද්විතීය අභියෝග සමූහයකට මුහුණ දීමට සිදු වේ. ඒවා ප්රයෝජනවත් වන්නේ කෙසේදැයි බලමු
Snapshot
බාහිර ලෝකය සමඟ සන්නිවේදනය සංවිධානය කරන විට, එය සෑම විටම ඉතා වැදගත් වේ
සම්බන්ධතා බෙදා හැරීම
මෙම මාතෘකාව වෙනම කොටසකට දැමීම සෑම කෙනෙකුටම යුක්ති සහගත යැයි පෙනෙනු ඇතැයි මට විශ්වාස නැත. එසේ වුවද, මම මෙම සංකල්පය මෙහි විස්තරාත්මකව ඉදිරිපත් කරමි, මෙම කොටසේ ඇති ද්රව්ය “සම්බන්ධතා බෙදා හැරීම” යන යෙදුමෙන් වඩාත් නිවැරදිව විස්තර කර ඇති බව මම විශ්වාස කරමි.
බොහෝ සංරචක නිසි ලෙස සම්බන්ධ කිරීම මගින් පද්ධති සෑදී ඇති අතර, ඒවා එකිනෙකා සමඟ සන්නිවේදනය බොහෝ විට ස්ථාපිත ප්රොටෝකෝල මත සංවිධානය කරනු ලැබේ, උදාහරණයක් ලෙස, TCP සහ UDP. කෙසේ වෙතත්, මෙම ප්රොටෝකෝල බොහෝ විට නවීන පද්ධතිවල සියලුම අවශ්යතා සපුරාලීමට ප්රමාණවත් නොවන අතර ඒවා බොහෝ විට අධික බරක් යටතේ ක්රියාත්මක වන අතර පරිශීලක අවශ්යතා මතද බෙහෙවින් රඳා පවතී. පද්ධතියේ එවැනි ඉහළ බරක් සමඟ සාර්ථකව කටයුතු කිරීම සඳහා සම්බන්ධතා බෙදා හැරීමේ ක්රම සොයා ගැනීමට බොහෝ විට අවශ්ය වේ.
මෙම බෙදාහැරීම පදනම් වී ඇත්තේ සුප්රසිද්ධ මත ය
ගැනත් දැනගත යුතුයි
අපි ව්යාපාර තර්කනය ගැන කතා කරමු. ව්යාපාර තර්කනය, කාර්ය ප්රවාහ සහ සංරචක ව්යුහගත කිරීම
එබැවින්, පද්ධතියේ විවිධ යටිතල පහසුකම් පිළිබඳව සාකච්ඡා කිරීමට අපට හැකි විය. බොහෝ දුරට ඉඩ ඇති පරිදි, පරිශීලකයා ඔබේ පද්ධතියේ මෙම සියලු අංග ගැන සිතන්නේවත් නැති අතර, අවංකවම, ඒවා ගැන කිසිසේත් තැකීමක් නොකරයි. පරිශීලකයා ඔබේ පද්ධතිය සමඟ අන්තර් ක්රියා කිරීම කෙබඳුද, මෙය කිරීමෙන් ලබා ගත හැක්කේ කුමක්ද සහ පද්ධතිය පරිශීලක විධාන ක්රියාත්මක කරන්නේ කෙසේද, පරිශීලක දත්ත සමඟ එය කරන්නේ කුමක්ද සහ කෙසේද යන්න පිළිබඳව පරිශීලකයා උනන්දු වෙයි.
මෙම ලිපියේ මාතෘකාවෙන් පෙනෙන පරිදි, මම මෘදුකාංග ගෘහ නිර්මාණ ශිල්පය සහ පද්ධති නිර්මාණය ගැන කතා කිරීමට සූදානම්. ඒ අනුව, මම මෘදුකාංග සංරචක නිර්මාණය කරන ආකාරය විස්තර කරන මෘදුකාංග නිර්මාණ රටා ආවරණය කිරීමට සැලසුම් කළේ නැත. කෙසේ වෙතත්, මම ඒ ගැන වැඩි වැඩියෙන් සිතන තරමට, මෘදුකාංග නිර්මාණ රටා සහ වාස්තු විද්යාත්මක රටා අතර රේඛාව ඉතා බොඳ වී ඇති බවත්, සංකල්ප දෙක සමීපව සම්බන්ධ බවත් මට පෙනේ. අපි උදාහරණයක් ලෙස ගනිමු
SOLID මූලධර්ම - සංකල්ප
වසම මත පදනම් වූ නිර්මාණය , විශේෂයෙන්,සමස්ථ ,කණ්ඩායම් සහ සිදුවීම් ෂඩාස්රාකාර ගෘහ නිර්මාණ ශිල්පය වගකීම් විධාන සහ ඉල්ලීම් වලට වෙන් කිරීම (CQRS) සිදුවීම් ලියාපදිංචි කිරීම නළු නිරූපිකාවක් MVC, MVVM සහ MVP මෝස්තර රටා
සහයෝගී ප්රවේශයන්
පද්ධති සැලසුම් ක්රියාවලිය සඳහා තනිකරම වගකිව යුතු සහභාගිවන්නෙකු ලෙස ඔබ ව්යාපෘතියක සිටිනු ඇතැයි සිතිය නොහැක. ඊට පටහැනිව, ඔබට බොහෝ විට ඔබගේ කාර්යය තුළ සහ ඉන් පිටත වැඩ කරන සගයන් සමඟ කටයුතු කිරීමට සිදුවනු ඇත. මෙම අවස්ථාවේදී, ඔබට සගයන් සමඟ තෝරාගත් තාක්ෂණික විසඳුම් ඇගයීමට, ව්යාපාරික අවශ්යතා හඳුනා ගැනීමට සහ කාර්යයන් සමාන්තර කිරීමට හොඳම ආකාරය තේරුම් ගැනීමට අවශ්ය විය හැකිය.
Snapshot
පළමු පියවර වන්නේ ඔබ සාක්ෂාත් කර ගැනීමට උත්සාහ කරන ව්යාපාරික ඉලක්කය කුමක්ද සහ ඔබට ගනුදෙනු කිරීමට සිදුවන චලනය වන කොටස් මොනවාද යන්න පිළිබඳ නිවැරදි සහ හවුල් අවබෝධයක් වර්ධනය කිරීමයි. කණ්ඩායම් ආකෘති නිර්මාණ ශිල්පීය ක්රම, විශේෂයෙන්
ඩොමේන් ඩ්රයිවින් ඩිසයින් වලට වඩා අඩු ප්රයෝජනවත් නොවන තවත් පරිණත තාක්ෂණයක් මෙම මාතෘකාවේ තිබේ. කෙසේ වෙතත්, අපි කෙසේ හෝ විෂය ක්ෂේත්රය අවබෝධ කර ගැනීමට නැවත පැමිණෙමු, එබැවින් ක්ෂේත්රයේ දැනුම සහ අත්දැකීම්
මූලාශ්රය: www.habr.com