තනි අවස්ථා සහ සිංගල්ටන් සැලසුම් රටාව අතර වෙනස හඳුනා ගැනීම වැදගත්ය .
තනි අවස්ථා හුදෙක් යථාර්ථයකි. බොහෝ යෙදුම් නිර්මාණය කර ඇත්තේ වරකට එක් වින්යාසයක්, වරකට එක් යූඅයි එකක්, වරකට එක් ගොනු පද්ධතියක් සහ යනාදිය සමඟ වැඩ කිරීමට පමණි. නඩත්තු කළ යුතු රාජ්ය හෝ දත්ත විශාල ප්රමාණයක් තිබේ නම්, නිසැකවම ඔබට අවශ්ය වන්නේ එක් අවස්ථාවක් පමණක් තබා එය හැකි තාක් කල් සජීවීව තබා ගැනීමයි.
මෙම සිංගල්ටන් නිර්මාණය රටාව ඉතා විශේෂිත වේ වර්ගය තනි අවස්ථා, බව විශේෂයෙන් එක්:
- ගෝලීය, ස්ථිතික නිදර්ශන ක්ෂේත්රයක් හරහා ප්රවේශ විය හැකිය;
- වැඩසටහන් ආරම්භයේදී හෝ පළමු ප්රවේශය මත නිර්මාණය කරන ලදි;
- පොදු ඉදිකිරීම්කරුවෙකු නැත (කෙලින්ම ක්ෂණිකව දැක්විය නොහැක);
- කිසි විටෙකත් පැහැදිළිව නිදහස් කර නැත (වැඩසටහන් අවසන් කිරීමෙන් ව්යංගයෙන් නිදහස් වේ).
රටාව දිගු කාලීන ගැටළු කිහිපයක් හඳුන්වා දෙන්නේ මෙම විශේෂිත සැලසුම් තේරීම නිසා ය:
- වියුක්ත හෝ අතුරු මුහුණත් පන්ති භාවිතා කිරීමට ඇති නොහැකියාව;
- උප පංතියට ඇති නොහැකියාව;
- යෙදුම හරහා ඉහළ සම්බන්ධ කිරීම (වෙනස් කිරීමට අපහසු);
- පරීක්ෂා කිරීමට අපහසුය (ඒකක පරීක්ෂණ වලදී ව්යාජ / සමච්චල් කළ නොහැක);
- විකෘති තත්වයේ දී සමාන්තරගත කිරීම දුෂ්කර (පුළුල් අගුලු දැමීම අවශ්ය වේ);
- සහ යනාදි.
මෙම රෝග ලක්ෂණ කිසිවක් ඇත්ත වශයෙන්ම තනි අවස්ථාවන්ට ආවේණික නොවේ, සිංගල්ටන් රටාව පමණි.
ඒ වෙනුවට ඔබට කුමක් කළ හැකිද? සරලවම සිංගල්ටන් රටාව භාවිතා නොකරන්න.
ප්රශ්නයෙන් උපුටා දැක්වීම:
යෙදුම තුළ දත්ත එක්රැස් කර සමමුහුර්තව තබා ගන්නා යෙදුමේ මෙම එක් ස්ථානයක් තිබීම අදහස විය, පසුව විවෘත කරන ඕනෑම නව තිරයකට සේවාදායකයෙන් විවිධ උපකාරක දත්ත සඳහා පුනරාවර්තන ඉල්ලීම් නොකර, එතැන් සිට ඔවුන්ට අවශ්ය බොහෝ දේ විමසිය හැකිය. සේවාදායකයා වෙත නිරන්තරයෙන් ඉල්ලීම ඕනෑවට වඩා කලාප පළලක් ගතවනු ඇත - මම සතියකට ඩොලර් දහස් ගණනක් අමතර අන්තර්ජාල බිල්පත් කතා කරමි, එබැවින් එය පිළිගත නොහැකිය.
ඔබ ඉඟි කරන නමුත් අවිනිශ්චිත බවක් පෙනෙන පරිදි මෙම සංකල්පයට නමක් ඇත. එය හැඳින්වූයේ වෙනවා හැඹිලි . ඔබට විසිතුරු බවක් ලබා ගැනීමට අවශ්ය නම් ඔබට එය "නොබැඳි හැඹිලියක්" හෝ දුරස්ථ දත්තවල නොබැඳි පිටපතක් ලෙස හැඳින්විය හැකිය.
හැඹිලියක් තනි පුද්ගලයෙකු වීමට අවශ්ය නොවේ. එය විය හැක ඔබ සතුව හැඹිලි අවස්ථා සඳහා එම දත්ත තර්ජනයක් වළක්වා ගැනීමට අවශ්ය නම් එක් උදාහරණයක් විය යුතුය; නමුත් එයින් අදහස් කරන්නේ ඔබ සැබවින්ම සියල්ලන්ටම නිරාවරණය කළ යුතු බව නොවේ .
මම කළ යුතු පළමු දෙය නම් හැඹිලියේ විවිධ ක්රියාකාරී ප්රදේශ වෙනම අතුරුමුහුණත් වලට වෙන් කිරීමයි. උදාහරණයක් ලෙස, ඔබ මයික්රොසොෆ්ට් ප්රවේශය මත පදනම්ව ලොව නරකම යූ ටියුබ් ක්ලෝනය සෑදූ බව කියමු:
MSAccessCache
▲
|
+ ----------------- + ----------------- +
| | |
IMediaCache IProfileCache IPageCache
| | |
| | |
VideoPage MyAccountPage MostPopularPage
මෙහිදී ඔබට කිහිපයක් අතුරු මුහුණත් විස්තර කරන විශේෂිත මාධ්ය, පරිශීලක පැතිකඩ, සහ ස්ථිතික පිටු (මුල් පිටුවේ වැනි) - දත්ත වර්ග යම් පන්තිය ප්රවේශය අවශ්ය විය හැක. ඒ සියල්ල එක් මෙගා හැඹිලියක් මඟින් ක්රියාත්මක කරනු ලැබේ, නමුත් ඒ වෙනුවට අතුරුමුහුණත් පිළිගැනීමට ඔබ ඔබේ තනි පන්ති සැලසුම් කරයි, එබැවින් ඔවුන් සතුව කුමන ආකාරයේ අවස්ථාවක් තිබේද යන්න ඔවුන් ගණන් ගන්නේ නැත. ඔබේ වැඩසටහන ආරම්භ වූ විට ඔබ එක් වරක් භෞතික අවස්ථාව ආරම්භ කර, පසුව ඉදිකිරීම්කරුවන් සහ පොදු දේපල හරහා සිදුවීම් (විශේෂිත අතුරුමුහුණත් වර්ගයකට දමන්න) ආරම්භ කරන්න.
මෙය යැපුම් එන්නත් කිරීම ලෙස හැඳින්වේ . ඔබේ සාමාන්ය පංතියේ සැලසුම , ඇමතුම්කරුගේ පරායත්තතාවයන් තමන් විසින්ම ස්ථාපනය කිරීම හෝ ගෝලීය තත්වය සඳහන් කිරීම වෙනුවට පිළිගන්නා තාක් කල් ඔබට වසන්තය හෝ විශේෂ අයිඕසී බහාලුමක් භාවිතා කිරීමට අවශ්ය නොවේ .
ඔබ අතුරු මුහුණත පදනම් කරගත් සැලසුම භාවිතා කළ යුත්තේ ඇයි? හේතු තුනක්:
එය කේතය කියවීමට පහසු කරයි; යැපෙන පංති රඳා පවතින්නේ කුමන දත්තද යන්න ඔබට අතුරුමුහුණත් වලින් පැහැදිලිව තේරුම් ගත හැකිය .
දත්ත පසුපෙළක් සඳහා මයික්රොසොෆ්ට් ඇක්සස් හොඳම තේරීම නොවන බව ඔබ තේරුම් ගත් විට, ඔබට එය වඩා හොඳ දෙයක් සමඟ ප්රතිස්ථාපනය කළ හැකිය - අපි SQL සේවාදායකය යැයි කියමු.
SQL සේවාදායකය විශේෂයෙන් මාධ්ය සඳහා හොඳම තේරීම නොවන බව ඔබ තේරුම් ගත් විට , පද්ධතියේ වෙනත් කිසිදු කොටසකට බලපෑම් නොකර ඔබේ ක්රියාත්මක කිරීම බිඳ දැමිය හැකිය . වියුක්ත කිරීමේ සැබෑ බලය එන්නේ එතැනිනි.
ඔබට එය තවත් පියවරක් ඉදිරියට ගෙන යාමට අවශ්ය නම් ඔබට වසන්තය (ජාවා) හෝ යුනිටි (.නෙට්) වැනි අයිඕසී බහාලුමක් (ඩීඅයි රාමුව) භාවිතා කළ හැකිය. සෑම DI රාමුවක්ම පාහේ තමන්ගේම ජීවිත කළමණාකරණයක් සිදු කරනු ඇති අතර නිශ්චිත සේවාවක් තනි අවස්ථාවක් ලෙස අර්ථ දැක්වීමට ඔබට විශේෂයෙන් ඉඩ දෙයි (බොහෝ විට එය "සිංගල්ටන්" ලෙස හැඳින්වේ, නමුත් එය හුරුපුරුදුකම සඳහා පමණි). මූලික වශයෙන් මෙම රාමු මඟින් බොහෝ අවස්ථාවන්හිදී අතින් ගමන් කිරීමේ වඳුරු වැඩ වලින් ඔබව බේරා ගනී, නමුත් ඒවා දැඩි ලෙස අවශ්ය නොවේ. මෙම සැලසුම ක්රියාත්මක කිරීම සඳහා ඔබට විශේෂ මෙවලම් අවශ්ය නොවේ.
සම්පූර්ණත්වය උදෙසා, මා පෙන්වා දිය යුත්තේ ඉහත සැලසුම සැබවින්ම පරමාදර්ශී නොවන බවයි. ඔබ හැඹිලියක් සමඟ ගනුදෙනු කරන විට (ඔබ මෙන්), ඔබට ඇත්ත වශයෙන්ම සම්පූර්ණයෙන්ම වෙනම තට්ටුවක් තිබිය යුතුය . වෙනත් වචන වලින් කිවහොත්, මෙවැනි නිර්මාණයක්:
+ - IMediaRepository
|
හැඹිලිය (සාමාන්ය) --------------- + - IProfileRepository
▲ |
| + - IPageRepository
+ ----------------- + ----------------- +
| | |
IMediaCache IProfileCache IPageCache
| | |
| | |
VideoPage MyAccountPage MostPopularPage
මෙහි ඇති වාසිය Cache
නම්, ඔබ ප්රතික්රියාකාරකයක් කිරීමට තීරණය කරන්නේ නම් කිසි විටෙකත් ඔබේ අවස්ථාව බිඳ දැමීමට අවශ්ය නොවේ ; විකල්පයක් ක්රියාත්මක කිරීමෙන් පෝෂණය කිරීමෙන් මාධ්ය සරලව ගබඩා කර ඇති ආකාරය ඔබට වෙනස් කළ හැකිය IMediaRepository
. මෙය එකට ගැලපෙන්නේ කෙසේදැයි ඔබ සිතන්නේ නම්, එය තවමත් හැඹිලියේ එක් භෞතික අවස්ථාවක් පමණක් නිර්මාණය කරන බව ඔබට පෙනෙනු ඇත, එබැවින් ඔබ කිසි විටෙකත් එකම දත්ත දෙවරක් ලබා ගැනීමට අවශ්ය නොවේ.
ලෝකයේ සෑම මෘදුකාංගයක්ම ඉහළ සහජීවනය සහ ලිහිල් සම්බන්ධතාවයේ මෙම නිශ්චිත ප්රමිතීන්ට අනුකූලව සැකසිය යුතු බව මේ කිසිවක් නොකියයි; එය ව්යාපෘතියේ ප්රමාණය, විෂය පථය, ඔබේ කණ්ඩායම, ඔබේ අයවැය, නියමිත දින ආදිය මත රඳා පවතී. නමුත් ඔබ අසන්නේ හොඳම නිර්මාණය කුමක්ද (සිංගල්ටන් වෙනුවට භාවිතා කිරීම), එවිට මෙය එයයි.
ප්රාදේශීය සභා අය සඳහන් කර ඇති පරිදි, එය රඳා පන්ති ඔවුන් භාවිතා කරන දැනුවත් කිරීමට ඇති හොඳම අදහසක් නොවේ, බොහෝ දුරට හැඹිලි ඒවා හුදෙක් ගැන සැලකිලිමත් නොකළ යුතු ක්රියාත්මක කිරීමේ විස්තර බව -. මෙසේ පැවසුවහොත්, සමස්ත ගෘහ නිර්මාණ ශිල්පය තවමත් ඉහත පින්තූරයේ ඇති දේට බොහෝ සෙයින් සමාන වනු ඇත, ඔබ තනි අතුරුමුහුණත් හැඹිලි ලෙස සඳහන් නොකරයි . ඒ වෙනුවට ඔබ ඔවුන්ට සේවා හෝ ඒ හා සමාන දෙයක් නම් කරන්න.