“ව්‍යාපාර තර්කනය ආකෘතියක් තුළ නොව සේවාවක් තුළ තිබිය යුතුය” යන්න කෙතරම් නිවැරදිද?


409

තත්ත්වය

අද සවස මම ස්ටැක් ඕවර්ෆ්ලෝ හි ප්‍රශ්නයකට පිළිතුරක් දුන්නා .

ප්රශ්නය:

පවත්නා වස්තුවක් සංස්කරණය කිරීම නිධිය ස්ථරයේ හෝ සේවයේ කළ යුතුද?

උදාහරණයක් ලෙස මට ණය ඇති පරිශීලකයෙකු සිටී නම්. මට ඔහුගේ ණය වෙනස් කිරීමට අවශ්‍යයි. මම එය පරිශීලක ගබඩාවේ හෝ සේවයේ කළ යුතුද? උදාහරණයක් ලෙස වස්තුවක් ලබා ගැනීමෙන්, සංස්කරණය කිරීමෙන් සහ සුරැකීමෙන් සේවා මිලදී ගැනීම?

මගේ පිළිතුර:

එම වස්තුවට විකෘතියක් කිරීමේ වගකීම ඔබ අතහැර දමා මෙම වස්තුව ලබා ගැනීමට නිධිය භාවිතා කළ යුතුය.

උදාහරණ තත්වය:

class User {
    private int debt; // debt in cents
    private string name;

    // getters

    public void makePayment(int cents){
        debt -= cents;
    }
}

class UserRepository {
    public User GetUserByName(string name){
        // Get appropriate user from database
    }
}

මට ලැබුණු අදහසක්:

ව්‍යාපාර තර්කනය සැබවින්ම සේවාවක තිබිය යුතුය. ආකෘතියක නොවේ.

අන්තර්ජාලය පවසන්නේ කුමක්ද?

ඉතින්, මම කිසි විටෙකත් (දැනුවත්ව) සේවා තට්ටුවක් භාවිතා කර නැති නිසා මෙය මා සෙව්වේය. මම සේවා ස්ථර රටාව සහ වැඩ ඒකකය පිළිබඳ කියවීම ආරම්භ කළ නමුත් සේවා ස්ථරයක් භාවිතා කළ යුතු යැයි මට විශ්වාසයි.

රක්තහීන වසම් ආකෘතියක ප්‍රති-රටාව පිළිබඳ මාටින් ෆෝලර්ගේ මෙම ලිපිය උදාහරණයක් ලෙස ගන්න :

වස්තූන් ඇත, බොහෝ ඒවා වසම් අවකාශයේ නාම පද වලින් නම් කර ඇති අතර මෙම වස්තූන් සැබෑ වසම් ආකෘති සතුව ඇති පොහොසත් සම්බන්ධතා සහ ව්‍යුහය සමඟ සම්බන්ධ වේ. අල්ලා ගැනීම සිදුවන්නේ ඔබ හැසිරීම දෙස බලන විට වන අතර, මෙම වස්තූන් මත කිසිදු හැසිරීමක් නැති බව ඔබට වැටහී ඇති අතර, ඒවා ලබා ගන්නන්ගේ සහ සැකසුම් කරුවන්ගේ බෑග් වලට වඩා මඳක් වැඩි වේ. ඇත්ත වශයෙන්ම බොහෝ විට මෙම ආකෘතීන් නිර්මාණ නීති රීති සමඟ එන අතර ඔබ වසම් වස්තු තුළ කිසිදු ඩොමේන් තර්කනයක් නොතැබිය යුතුය. ඒ වෙනුවට සියලුම වසම් තර්කනය ග්‍රහණය කර ගන්නා සේවා වස්තු සමූහයක් ඇත. මෙම සේවාවන් වසම් ආකෘතියට ඉහළින් ජීවත් වන අතර දත්ත සඳහා වසම් ආකෘතිය භාවිතා කරයි.

(...) වසම් වස්තුවක තිබිය යුතු තර්කනය වන්නේ වසම් තර්කනය - වලංගු කිරීම්, ගණනය කිරීම්, ව්‍යාපාර නීති - ඔබ එය කැඳවීමට කැමති ඕනෑම දෙයක්.

මට නම්, තත්වය හරියටම මෙය බව පෙනේ: වස්තුවක දත්ත හැසිරවීමට මම යෝජනා කළේ එම පන්තිය තුළම ක්‍රමවේදයන් හඳුන්වා දීමෙනි. කෙසේ වෙතත්, මෙය ලබා දී ඇති එක් ක්‍රමයක් විය යුතු බව මට වැටහී ඇති අතර, මෙම ක්‍රම භාවිතා කරන ආකාරය (නිධිය භාවිතා කරමින්) සමඟ බොහෝ දුරට සම්බන්ධ විය හැකිය.

මම ද එම ලිපිය (පහත බලන්න), එම සේවා ස්ථරය තුළ වඩාත් සලකන බව හැඟීමක් තිබ්බා ව්යාජය නියෝජිතයින් සත්ය වැඩ දැඩි ස්ථරය වඩා, යටින් ආකෘතිය කිරීමට කටයුතු කරන.

යෙදුම් ස්ථරය [සේවා ස්ථරය සඳහා ඔහුගේ නම]: මෘදුකාංගය විසින් කළ යුතු කාර්යයන් නිර්වචනය කරන අතර ගැටළු නිරාකරණය සඳහා ප්‍රකාශන වසම් වස්තු යොමු කරයි. මෙම ස්තරය වගකිව යුතු කාර්යයන් ව්‍යාපාරයට අර්ථවත් හෝ වෙනත් පද්ධතිවල යෙදුම් ස්ථර සමඟ අන්තර් ක්‍රියා කිරීමට අවශ්‍ය වේ. මෙම ස්තරය සිහින්ව තබා ඇත. එහි ව්‍යාපාරික නීති හෝ දැනුම අඩංගු නොවේ, නමුත් කාර්යයන් සම්බන්ධීකරණය කිරීම සහ නියෝජිතයින් පමණක් ඊළඟ ස්ථරයේ ඩොමේන් වස්තූන්ගේ සහයෝගීතාවයට වැඩ කරයි. එයට ව්‍යාපාරික තත්වය පිළිබිඹු කරන රාජ්‍යයක් නොමැත, නමුත් පරිශීලකයාට හෝ වැඩසටහනට යම් කාර්යයක ප්‍රගතිය පිළිබිඹු කරන රාජ්‍යයක් එයට තිබිය හැකිය.

මෙහි ශක්තිමත් කර ඇති :

සේවා අතුරුමුහුණත්. සියලුම අභ්‍යන්තර පණිවිඩ යවන සේවා අතුරු මුහුණතක් සේවා විසින් නිරාවරණය කරයි. සේවා අතුරුමුහුණතක් යෙදුමේ ක්‍රියාත්මක කර ඇති ව්‍යාපාරික තර්කනය (සාමාන්‍යයෙන් ව්‍යාපාර ස්ථරයේ තර්කනය) අනාගත පාරිභෝගිකයින්ට නිරාවරණය කරන මුහුණතක් ලෙස ඔබට සිතිය හැකිය.

හා මෙහි :

සේවා ස්ථරය කිසිදු යෙදුමක් හෝ ව්‍යාපාර තර්කනයකින් තොර විය යුතු අතර මූලික වශයෙන් අවධානය යොමු කළ යුත්තේ කරුණු කිහිපයක් කෙරෙහි ය. එය ව්‍යාපාර ස්ථර ඇමතුම් එතීම, ඔබේ සේවාදායකයින්ට තේරුම් ගත හැකි පොදු භාෂාවෙන් ඔබේ වසම පරිවර්තනය කිරීම සහ සේවාදායකයා සහ ඉල්ලුම් කරන සේවාදායකයා අතර සන්නිවේදන මාධ්‍යය හැසිරවිය යුතුය.

සේවා ස්ථරය ගැන කතා කරන වෙනත් සම්පත් වලට මෙය බරපතල වෙනසකි :

සේවා ස්ථරය එකම ගනුදෙනුවකට අයත් ක්‍රියාවන් සමඟ වැඩ කරන ඒකක වන ක්‍රම සහිත පන්ති වලින් සමන්විත විය යුතුය.

නැතහොත් මා දැනටමත් සම්බන්ධ කර ඇති ප්‍රශ්නයකට දෙවන පිළිතුර :

යම් අවස්ථාවක දී, ඔබේ යෙදුමට යම් ව්‍යාපාර තර්කනයක් අවශ්‍ය වනු ඇත. එසේම, අයහපත් හෝ අක්‍රීය දෙයක් ඉල්ලා නැති බව තහවුරු කර ගැනීම සඳහා ආදානය වලංගු කිරීමට ඔබට අවශ්‍ය විය හැකිය. මෙම තර්කනය ඔබේ සේවා ස්ථරයට අයත් වේ.

"විසඳුමක්"?

මෙම පිළිතුරේ ඇති මාර්ගෝපදේශ අනුගමනය කරමින් , සේවා ස්ථරයක් භාවිතා කරන පහත දැක්වෙන ප්‍රවේශය මා විසින් ඉදිරිපත් කරන ලදී:

class UserController : Controller {
    private UserService _userService;

    public UserController(UserService userService){
        _userService = userService;
    } 

    public ActionResult MakeHimPay(string username, int amount) {
        _userService.MakeHimPay(username, amount);
        return RedirectToAction("ShowUserOverview");
    }

    public ActionResult ShowUserOverview() {
        return View();
    }
}

class UserService {
    private IUserRepository _userRepository;

    public UserService(IUserRepository userRepository) {
        _userRepository = userRepository;
    }

    public void MakeHimPay(username, amount) {
        _userRepository.GetUserByName(username).makePayment(amount);
    }
}

class UserRepository {
    public User GetUserByName(string name){
        // Get appropriate user from database
    }
}

class User {
    private int debt; // debt in cents
    private string name;

    // getters

    public void makePayment(int cents){
        debt -= cents;
    }
}

නිගමනය

සියල්ලම එකට මෙහි බොහෝ වෙනස් වී නැත: පාලකයේ කේතය සේවා ස්ථරයට මාරු වී ඇත (එය හොඳ දෙයකි, එබැවින් මෙම ප්‍රවේශයට උඩු යටිකුරු කිරීමක් ඇත). කෙසේ වෙතත් මෙය මගේ මුල් පිළිතුර සමඟ කිසිදු සම්බන්ධයක් ඇති බවක් නොපෙනේ.

සැලසුම් රටා මාර්ගෝපදේශ බව මම තේරුම් ගතිමි, හැකි සෑම විටම ක්‍රියාත්මක කළ යුතු නීති රීති නොවේ. එහෙත් සේවා ස්ථරය හා එය සලකා බැලිය යුතු ආකාරය පිළිබඳ නිශ්චිත පැහැදිලි කිරීමක් මට හමු වී නැත.

  • එය හුදෙක් පාලකයෙන් තර්කනය උකහා ගෙන ඒ වෙනුවට සේවාවක් තුළට දැමීමේ මාධ්‍යයක්ද?

  • එය පාලකය සහ වසම අතර ගිවිසුමක් ඇති කළ යුතුද?

  • වසම සහ සේවා ස්ථරය අතර තට්ටුවක් තිබිය යුතුද?

අවසාන වශයෙන් නොව අවම වශයෙන්: මුල් අදහස් දැක්වීම අනුගමනය කිරීම

ව්‍යාපාර තර්කනය සැබවින්ම සේවාවක තිබිය යුතුය. ආකෘතියක නොවේ.

  • මේක හරිද?

    • ආකෘතිය වෙනුවට සේවාවක් තුළ මගේ ව්‍යාපාර තර්කනය හඳුන්වා දෙන්නේ කෙසේද?

6
ගනුදෙනු ස්ක්‍රිප්ට් වල නොවැලැක්විය හැකි කොටස සමස්ත මූලයන් මත තැබිය යුතු ස්ථානය ලෙස මම සේවා ස්ථරය සලකමි. මගේ සේවා ස්තරය ඉතා සංකීර්ණ වුවහොත් මා රක්තහීන මාදිලියේ දිශාවට ගමන් කරන බවට සං als ා කරන අතර මගේ ඩොමේන් ආකෘතියට අවධානය සහ සමාලෝචනය අවශ්‍ය වේ. එහි ස්වභාවය අනුව අනුපිටපත් නොකෙරෙන තර්කනය ශ්‍රී ලංකාව තුළ තැබීමට ද මම උත්සාහ කරමි.
පවෙල් වොරොනින්

සේවා ආදර්ශ ස්ථරයේ කොටසක් යැයි මම සිතුවෙමි. මම එහෙම හිතන එක වැරදියිද?
ෆ්ලෝරියන් මාගයින්

මම නියමාකාර නීතියක් භාවිතා කරමි: ඔබට අවශ්‍ය නොවන දේ මත රඳා නොසිටින්න; එසේ නොමැතිනම් මට (සාමාන්‍යයෙන් negative ණාත්මකව) මට අවශ්‍ය නොවන කොටසෙහි වෙනස්කම් සිදුවිය හැකිය. එහි ප්‍රති consequ ලයක් ලෙස මම පැහැදිලිව අර්ථ දක්වා ඇති භූමිකාවන් රාශියකින් අවසන් වෙමි. සියලුම සේවාදායකයින් එය භාවිතා කරන තාක් කල් මගේ දත්ත වස්තු වල හැසිරීම අඩංගු වේ. නැතිනම් මම අවශ්‍ය භූමිකාව ක්‍රියාත්මක කරන පන්තිවලට හැසිරීම ගෙන යන්නෙමි.
බෙලුචින්

1
යෙදුම් ප්‍රවාහ පාලන තර්කනය පාලකයෙකුට අයත් වේ. දත්ත ප්‍රවේශවීමේ තර්කනය ගබඩාවක ඇත. වලංගු කිරීමේ තර්කනය සේවා ස්ථරයකට අයත් වේ. සේවා ස්ථරයක් යනු ASP.NET MVC යෙදුමක අතිරේක ස්ථරයක් වන අතර එය පාලකය සහ නිධිය ස්ථරය අතර සන්නිවේදනය සඳහා මැදිහත් වේ. සේවා ස්ථරයේ ව්‍යාපාර වලංගු කිරීමේ තර්කනය අඩංගු වේ. නිධිය. asp.net/mvc/overview/older-versions-1/models-data/…
Kbdavis07

3
IMHO, නිවැරදි OOP විලාසිතාවේ ඩොමේන් ආකෘතිය ඇත්ත වශයෙන්ම "ව්‍යාපාර සේවා" වලින් වැළකී ව්‍යාපාර තර්කනය ආකෘතියේ තබා ගත යුතුය. නමුත් ප්‍රායෝගිකව පෙන්නුම් කරන්නේ පැහැදිලිවම නම් කරන ලද ක්‍රමවේදයන් සහිත විශාල ව්‍යාපාර ස්ථරයක් නිර්මාණය කිරීමටත්, සමස්ත ක්‍රමයක් වටා ගනුදෙනුවක් (හෝ වැඩ ඒකකයක්) තැබීමටත් එය පෙළඹෙන බවයි. එම ආදර්ශ පංති අතර සබඳතා සැලසුම් කිරීමට වඩා එක් ව්‍යාපාර සේවා ක්‍රමයක් තුළ බහු ආකෘති පන්ති සැකසීම වඩා පහසු ය, මන්ද එවිට ඔබට පිළිතුරු දීමට අසීරු ප්‍රශ්න කිහිපයක් ඇත: සමස්ථ මූල කොහිද? දත්ත සමුදා ගනුදෙනුවක් ආරම්භ කළ යුත්තේ කොතැනින්ද? ආදිය
JustAMartin

Answers:


387

සේවාවක වගකීම් මොනවාද යන්න නිර්වචනය කිරීම සඳහා , ඔබ මුලින්ම සේවාවක් යනු කුමක්ද යන්න නිර්වචනය කළ යුතුය .

සේවාව කැනොනිකල් හෝ සාමාන්‍ය මෘදුකාංග යෙදුමක් නොවේ. ඇත්ත වශයෙන්ම, Serviceපංති නාමයක උපසර්ගය බොහෝ දුරට අපකීර්තියට පත් කළමණාකරුට සමාන ය : එය වස්තුව ඇත්ත වශයෙන්ම කරන්නේ කුමක්ද යන්න ගැන කිසිවක් ඔබට නොකියයි .

යථාර්ථයේ දී, සේවාවක් කළ යුතු දේ අතිශයින්ම ගෘහ නිර්මාණ ශිල්පයට විශේෂිත ය:

  1. සාම්ප්‍රදායික ස්ථර ගෘහ නිර්මාණ ශිල්පය තුළ, සේවාව වචනාර්ථයෙන් ව්‍යාපාරික තාර්කික ස්ථරයට සමාන වේ. එය UI සහ දත්ත අතර ස්ථරයයි. එබැවින්, සියලු ව්‍යාපාරික නීති සේවා වෙත යයි. දත්ත ස්තරය තේරුම් ගත යුත්තේ මූලික CRUD මෙහෙයුම් පමණක් වන අතර, UI ස්තරය ගනුදෙනු කළ යුත්තේ ව්‍යාපාර වස්තු වෙත සහ ඉන් ඉදිරිපත් කිරීමේ DTO සිතියම්ගත කිරීම සමඟ පමණි.

  2. ආර්පීසී ශෛලියේ බෙදා හරින ලද ගෘහ නිර්මාණ ශිල්පයෙහි (SOAP, UDDI, BPEL, ආදිය), සේවාව යනු භෞතික අන්ත ලක්ෂ්‍යයක තාර්කික අනුවාදයයි . එය අත්‍යවශ්‍යයෙන්ම නඩත්තුකරු පොදු API ලෙස සැපයීමට අපේක්ෂා කරන මෙහෙයුම් එකතුවකි. සේවා මෙහෙයුමක් ඇත්ත වශයෙන්ම CRUD නොව ව්‍යාපාර මට්ටමේ මෙහෙයුමක් විය යුතු බව විවිධ හොඳම භාවිත මාර්ගෝපදේශයන් පැහැදිලි කරයි , මම එකඟ වීමට නැඹුරු වෙමි.

    කෙසේ වෙතත්, සත්‍ය දුරස්ථ සේවාවක් හරහා සෑම දෙයක්ම මෙහෙයවීම කාර්ය සාධනයට බරපතල හානියක් විය හැකි බැවින්, සාමාන්‍යයෙන් මෙම සේවාවන් ව්‍යාපාර තර්කනයම ක්‍රියාත්මක නොකිරීම වඩාත් සුදුසුය ; ඒ වෙනුවට, ඔවුන් “අභ්‍යන්තර” ව්‍යාපාරික වස්තු සමූහයක් ඔතා තිබිය යුතුය. තනි සේවාවක් සඳහා ව්‍යාපාරික වස්තු එකක් හෝ කිහිපයක් සම්බන්ධ විය හැකිය.

  3. MVP / MVC / MVVM / MV * ගෘහ නිර්මාණ ශිල්පය තුළ, සේවාවන් කිසිසේත් නොපවතී. එසේත් නැතිනම් පාලකයකුට හෝ දර්ශන ආකෘතියකට එන්නත් කළ හැකි ඕනෑම සාමාන්‍ය වස්තුවක් යොමු කිරීමට මෙම යෙදුම භාවිතා වේ. ව්‍යාපාර තර්කනය ඔබේ ආකෘතියේ ඇත. සංකීර්ණ මෙහෙයුම් සැලසුම් කිරීම සඳහා ඔබට "සේවා වස්තු" නිර්මාණය කිරීමට අවශ්‍ය නම්, එය ක්‍රියාත්මක කිරීමේ විස්තරයක් ලෙස දැකිය හැකිය. බොහෝ අය, කනගාටුවට කරුණක් නම්, මේ ආකාරයෙන් එම්වීසී ක්‍රියාවට නැංවීමයි, නමුත් එය ප්‍රති-රටාවක් ( රක්තහීන වසම් ආකෘතිය ) ලෙස සලකනු ලබන්නේ එම ආකෘතියම කිසිවක් නොකරන නිසා, එය යූඅයි සඳහා ඇති දේපල සමූහයක් පමණි.

    සමහර අය වැරදියට සිතන්නේ පේළි 100 ක පාලක ක්‍රමයක් ගෙන ඒ සියල්ල සේවාවක් වෙත ගෙන යාම කෙසේ හෝ වඩා හොඳ ගෘහ නිර්මාණ ශිල්පයක් සඳහා හේතු වන බවයි. එය එසේ නොවේ; එය කරන්නේ තවත්, අනවශ්‍ය ලෙස අනවශ්‍ය තට්ටුවක් එක් කිරීම පමණි. ප්‍රායෝගිකව කිවහොත්, පාලකය තවමත් එම කාර්යය කරමින් සිටී, එය එසේ කරන්නේ දුර්වල ලෙස නම් කර ඇති “සහායක” වස්තුවක් හරහා ය. රක්තහීනතා ඩොමේන් ආකෘතියක් ප්‍රයෝජනවත් එකක් බවට පත් කරන්නේ කෙසේද යන්න පිළිබඳ පැහැදිලි උදාහරණයක් සඳහා මම ජිමී බොගාර්ඩ්ගේ දුෂ්ට වසම් ආකෘති ඉදිරිපත් කිරීම නිර්දේශ කරමි. ව්‍යාපාර සන්දර්භය තුළ ඔබ නිරාවරණය කරන ආකෘතීන් සහ ඇත්ත වශයෙන්ම වලංගු වන්නේ කුමන මෙහෙයුම්ද යන්න හොඳින් පරීක්ෂා කිරීම ඊට ඇතුළත් වේ .

    උදාහරණයක් ලෙස, ඔබගේ දත්ත සමුදාය නියෝග අඩංගු අතර, ඔබ මුළු මුදල සඳහා තීරු තිබේ නම්, ඔබගේ අයදුම් සමහරවිට ඇත්තටම හිතුවක්කාර අගය කිරීමට එම ක්ෂේත්රය වෙනස් කිරීමට, එය එක් කිරීමට නියමිත කරන නිසා (අ) ඉතිහාසය හා (ආ) ඉඩ නොදිය යුතු මොකක්ද තීරණය දී මෙම නියෝගය මෙන්ම සමහර විට වෙන වෙලාවක සංවේදී දත්ත / නීති. ඇණවුම් කළමනාකරණය කිරීම සඳහා සේවාවක් නිර්මාණය කිරීම අනිවාර්යයෙන්ම මෙම ගැටළුව විසඳන්නේ නැත, මන්ද පරිශීලක කේතයට තවමත් නියම ඇණවුම් වස්තුව අල්ලාගෙන එහි ඇති ප්‍රමාණය වෙනස් කළ හැකිය. ඒ වෙනුවට, මෙම නියෝගය එය පමණක් ආරක්ෂිත සහ ස්ථාවර ක්රම වෙනස් කළ හැකි බව සහතික කිරීම සඳහා වගකිව යුතු විය යුතුය.

  4. ඩීඩීඩී හි, සේවාවන් විශේෂයෙන් අදහස් කරන්නේ ඔබට කිසියම් සමස්ත මූලයකට නිසියාකාරව අයත් නොවන මෙහෙයුමක් ඇති විට තත්වය සඳහා ය . ඔබ මෙහි ප්‍රවේශම් විය යුතුය, මන්ද බොහෝ විට සේවාවක අවශ්‍යතාවයෙන් ඇඟවෙන්නේ ඔබ නිවැරදි මූලයන් භාවිතා නොකළ බවයි. නමුත් ඔබ උපකල්පනය කළ පරිදි, සේවාවක් බහු මූලයන් හරහා මෙහෙයුම් සම්බන්ධීකරණය කිරීමට හෝ සමහර විට වසම් ආකෘතියට කිසිසේත් සම්බන්ධ නොවන ගැටළු විසඳීමට භාවිතා කරයි (සමහර විට, BI / OLAP දත්ත ගබඩාවකට තොරතුරු ලිවීම වැනි).

    ඩීඩීඩී සේවාවේ කැපී පෙනෙන අංගයක් වන්නේ ගනුදෙනු ස්ක්‍රිප්ට් භාවිතා කිරීමට අවසර දීමයි . විශාල යෙදුම්වල වැඩ කරන විට, ඔබ අවසානයේ ඩොමේන් ආකෘතිය සමඟ ගැටීමට වඩා T-SQL හෝ PL / SQL ක්‍රියාපටිපාටියකින් යමක් ඉටු කර ගැනීම පහසු වන අවස්ථා කරා දිව යයි. මෙය හරි, එය අයත් වන්නේ සේවාවකට ය.

    මෙය සේවා ස්ථර-ගෘහ නිර්මාණ අර්ථ දැක්වීමෙන් රැඩිකල් ලෙස ඉවත්ව යාමකි. සේවා ස්ථරයක් වසම් වස්තු ආවරණය කරයි; ඩීඩීඩී සේවාවක් ඩොමේන් වස්තූන්හි නොමැති ඕනෑම දෙයක් සංයුක්ත කරයි.

  5. සේවා නැඹුරු ගෘහ නිර්මාණ ශිල්පය තුළ, සේවාවක් ව්‍යාපාර හැකියාවක් සඳහා වන තාක්ෂණික අධිකාරිය ලෙස සැලකේ. එයින් අදහස් වන්නේ එය ව්‍යාපාර දත්තවල එක්තරා අනු කාණ්ඩයක තනි හිමිකරු වන අතර වෙනත් කිසිවක් එම දත්ත ස්පර්ශ කිරීමට ඉඩ නොදේ - එය කියවීමට පවා නොවේ .

    අවශ්‍යතාවය අනුව, සේවාවන් ඇත්ත වශයෙන්ම SOA හි අවසානය දක්වා වූ යෝජනාවකි. අර්ථය නම්, සේවාවක් යනු සමස්ත තොගයක් තරම්ම විශේෂිත අංගයක් නොවන අතර ඔබේ සමස්ත යෙදුම (හෝ ඔබේ මුළු ව්‍යාපාරයම) පණිවුඩ යැවීම සහ UI ස්ථර හැර වෙනත් කිසිදු මංසන්ධියක් නොමැතිව පැති දෙපස ක්‍රියාත්මක වන මෙම සේවාවන් සමූහයකි. සෑම සේවාවකටම තමන්ගේම දත්ත, තමන්ගේම ව්‍යාපාර නීති සහ තමන්ගේම UI ඇත. ඔවුන් එකිනෙකා සමඟ වාද විවාද කිරීමට අවශ්‍ය නැත, මන්ද ඔවුන් ව්‍යාපාරයට අනුකූල විය යුතු යැයි සිතන අතර - ව්‍යාපාරය මෙන් ම, සෑම සේවාවක්ම තමන්ගේම වගකීම් මාලාවක් ඇති අතර අනෙක් ඒවාට වඩා අඩු හෝ වැඩි වශයෙන් ස්වාධීනව ක්‍රියාත්මක වේ.

    ඉතින්, SOA අර්ථ දැක්වීම අනුව, ඕනෑම තැනක ඇති සෑම ව්‍යාපාරික තර්කනයක්ම සේවාව තුළ අන්තර්ගත වේ, නමුත් නැවතත්, සමස්ත පද්ධතියම එසේමය . SOA හි සේවාවන් සඳහා සංරචක තිබිය හැකි අතර ඒවාට අන්ත ලක්ෂ්‍ය තිබිය හැකිය , නමුත් ඕනෑම කේතයක් සේවාවක් ලෙස හැඳින්වීම තරමක් භයානක වන්නේ එය මුල් "S" යන්නෙන් අදහස් කරන දෙයට පටහැනි බැවිනි.

    SOA සාමාන්‍යයෙන් පණිවුඩ යැවීම කෙරෙහි දැඩි උනන්දුවක් දක්වන බැවින්, ඔබ මීට පෙර සේවාවක ඇසුරුම් කර ඇති මෙහෙයුම් සාමාන්‍යයෙන් හසුරුවන්නන් සමඟ සම්බන්ධ වී ඇත , නමුත් ගුණනය වෙනස් වේ. සෑම හසුරුවන්නෙක්ම එක් පණිවිඩ වර්ගයක්, එක් මෙහෙයුමක් හසුරුවයි . එය තනි වගකීම් මූලධර්මයේ දැඩි අර්ථ නිරූපණයකි , නමුත් හැකි සෑම මෙහෙයුමක්ම තමන්ගේම පන්තියේ පවතින බැවින් විශාල නඩත්තු කිරීමක් ඇති කරයි. එබැවින් ඔබට සැබවින්ම මධ්‍යගත ව්‍යාපාර තර්කනයක් අවශ්‍ය නොවේ , මන්ද විධාන තාක්ෂණික ඒවාට වඩා ව්‍යාපාර මෙහෙයුම් නියෝජනය කරයි.

අවසාන වශයෙන්, ඔබ තෝරා ගන්නා ඕනෑම ගෘහ නිර්මාණ ශිල්පයක් තුළ, ව්‍යාපාර තර්කනයේ වැඩි කොටසක් ඇති යම් අංගයක් හෝ ස්ථරයක් පවතිනු ඇත. සියල්ලට පසු, ව්‍යාපාර තර්කනය සෑම තැනම විසිරී ඇත්නම් ඔබට ඇත්තේ ස්පැගටි කේතය පමණි. නමුත් ඔබ එම සංරචකය සේවාවක් ලෙස හැඳින්වුවද නැතත් , මෙහෙයුම් ප්‍රමාණය හෝ ප්‍රමාණය වැනි දේ අනුව එය නිර්මාණය කර ඇත්තේ කෙසේද යන්න ඔබේ වාස්තු විද්‍යාත්මක අරමුණු මත රඳා පවතී.

හරි හෝ වැරදි පිළිතුරක් නැත, ඔබගේ තත්වයට අදාළ වන්නේ පමණි.


13
ඉතා සවිස්තරාත්මක පිළිතුරට ස්තූතියි, මට සිතිය හැකි සියල්ල ඔබ පැහැදිලි කර ඇත. අනෙක් පිළිතුරු විශිෂ්ට ගුණාත්මකභාවයට හොඳ වුවත්, මෙම පිළිතුර ඒ සියල්ලටම වඩා ඉහළින් සිටින බව මම විශ්වාස කරමි, එබැවින් මම මෙය පිළිගනිමි. අනෙක් පිළිතුරු සඳහා මම එය මෙහි එක් කරන්නෙමි: විශිෂ්ට ගුණාත්මකභාවය සහ තොරතුරු, නමුත් කනගාටුවට කරුණක් නම් මට ඔබට දියුණුවක් ලබා දිය හැකිය.
ජෙරොයින් වැනේවෙල්

2
සාම්ප්‍රදායික ස්ථර ගෘහ නිර්මාණ ශිල්පය තුළ සේවාව යනු ව්‍යාපාරික තාර්කික ස්ථරයට සමාන පදයක් බව මම එකඟ නොවෙමි.
CodeART

1
Ode කෝඩ්ආර්ට්: එය තට්ටු තුනේ ගෘහ නිර්මාණ ශිල්පයක පවතී. ඉදිරිපත් කිරීම සහ ව්‍යාපාර ස්ථර අතර “යෙදුම් ස්ථරයක්” ඇති 4-ස්ථර ගෘහ නිර්මාණ ශිල්පය මම දැක ඇත්තෙමි , එය සමහර විට “සේවා” ස්ථරයක් ලෙසද හැඳින්වේ, නමුත් අවංකවම, මෙය සාර්ථකව ක්‍රියාවට නැංවීම මා දැක ඇති එකම ස්ථාන විශාලය. SAP හෝ ඔරකල් වැනි නිෂ්පාදන වලින් අනන්ත-වින්‍යාසගත කළ හැකි ඔබේ මුළු ව්‍යාපාරයම වන අතර එය මෙහි සඳහන් කිරීම වටී යැයි මම නොසිතුවෙමි. ඔබ කැමති නම් මට පැහැදිලි කිරීමක් එක් කළ හැකිය.
ආරොනොට්

1
නමුත් අපි 100+ රේඛීය පාලකය ගන්නවා නම් (උදාහරණයක් ලෙස පාලකය පණිවිඩය පිළිගනී - ඉන්පසු JSON වස්තුව අවලංගු කරන්න, වලංගු කරන්න, ව්‍යාපාර නීති ක්‍රියාත්මක කරන්න, db වෙත සුරකින්න, ප්‍රති result ල වස්තුව ආපසු එවන්න) සහ යම් තර්කනයක් එම සේවා ක්‍රමයට යොමු කරන්න. ඒකකයේ සෑම කොටසක්ම වේදනා රහිතව පරීක්ෂා කිරීමට අපට උපකාර කරයිද?
artjom

2
OrAaronaught මට ORM හරහා ඩොමේන් වස්තු සිතියම් ගත කර ඇත්නම් සහ ව්‍යාපාර තර්කනයක් නොමැති නම් එක් දෙයක් පැහැදිලි කර ගැනීමට මට අවශ්‍ය විය මෙම රක්තහීන වසම් ආකෘතියද?
artjom

41

ඔබේ මාතෘකාව සම්බන්ධයෙන් ගත් කල , ප්‍රශ්නය අර්ථවත් යැයි මම නොසිතමි. MVC ආකෘතිය දත්ත සහ ව්‍යාපාර තර්කනයෙන් සමන්විත වේ. තර්කනය සේවයේ තිබිය යුතු යැයි පැවසීම ආදර්ශයට සමාන නොවේ, "මගියා අසුනේ වාඩි විය යුතුය, මෝටර් රථයේ නොවේ".

ඉන්පසු නැවතත්, "මාදිලිය" යන යෙදුම අධික ලෙස පටවන ලද යෙදුමකි. සමහර විට ඔබ එම්වීසී මොඩලය අදහස් නොකළ නමුත් ඔබ අදහස් කළේ දත්ත හුවමාරු වස්තුව (ඩීටීඕ) අර්ථයෙන් ය. AKA ආයතනයකි. මාටින් ෆෝලර් කතා කරන්නේ මෙයයි.

මා දකින ආකාරයට මාටින් ෆෝලර් පරමාදර්ශී ලෝකයක දේවල් ගැන කතා කරයි. හයිබර්නේට් සහ ජේපීඒ (ජාවා භූමියේ) සැබෑ ලෝකයේ ඩීටීඕ යනු සුපිරි කාන්දු වියුක්තයකි. මගේ ව්‍යාපාර තර්කනය මගේ ආයතනය තුළට දැමීමට මම කැමතියි. ඒකෙන් දේවල් පිරිසිදු වෙනවා. ගැටළුව වන්නේ මෙම ආයතන කළමනාකරණ / හැඹිලි තත්වයක පැවතිය හැකි අතර එය තේරුම් ගැනීමට ඉතා අපහසු වන අතර ඔබේ උත්සාහයන් නිරන්තරයෙන් වළක්වයි. මගේ මතය සාරාංශගත කිරීම සඳහා: මාටින් ෆෝලර් නිවැරදි මාර්ගය නිර්දේශ කරයි, නමුත් ORMs එය කිරීමෙන් ඔබව වළක්වයි.

මම හිතන්නේ බොබ් මාටින්ට වඩා යථාර්ථවාදී යෝජනාවක් ඇති අතර ඔහු එය නොමිලේ ලබා නොදෙන මෙම වීඩියෝවෙන් ලබා දෙයි . ඔහු ඔබේ DTOs තර්කනයෙන් තොරව තබා ගැනීම ගැන කතා කරයි. ඔවුන් හුදෙක් දත්ත රඳවාගෙන එය වෙනත් ස්ථරයකට මාරු කරන අතර එය වඩාත් වස්තු නැඹුරු වන අතර DTOs කෙලින්ම භාවිතා නොකරයි. මෙය ඔබට දෂ්ට කිරීමෙන් කාන්දු වන සාරාංශය වළක්වයි. DTOs සහ DTOs සහිත ස්ථරය OO නොවේ. නමුත් ඔබ එම ස්ථරයෙන් ඉවත් වූ පසු, මාටින් ෆෝලර් වෙනුවෙන් පෙනී සිටින තරමටම ඔබ OO විය යුතුය.

මෙම වෙන්වීමෙන් ලැබෙන වාසිය නම් එය ස්ථීර ස්ථරයෙන් වියුක්ත කිරීමයි. ඔබට JPA සිට JDBC වෙත මාරු විය හැකිය (හෝ අනෙක් අතට) සහ ව්‍යාපාර තර්කනයන් කිසිවක් වෙනස් විය යුතු නැත. එය හුදෙක් DTOs මත රඳා පවතී, එම DTOs ජනගහනය වන්නේ කෙසේද යන්න එය ගණන් ගන්නේ නැත .

කිරීමට තරමක් මාතෘකා වෙනස්, ඔබ SQL දත්ත සමුදායන් නැඹුරු විරුද්ධ නොවන බව යන කරුණ සලකා බැලීම සඳහා අවශ්ය වේ. නමුත් ORM වලට සාමාන්‍යයෙන් වස්තුවක් ඇත - එය වස්තුවකි - වගුවකට. ආරම්භයේ සිටම ඔබට දැනටමත් සටනක් අහිමි වී ඇත. මගේ අත්දැකීම් අනුව, ඔබට කිසි විටෙකත් වස්තුව නැඹුරු ආකාරයකින් ඔබට අවශ්‍ය ආකාරයට නිරූපණය කළ නොහැක.

කිරීම "සඳහා වූ සේවා", බොබ් මාටින් නම් පන්ති සහිත එරෙහිව වනු ඇත FooBarService. එය වස්තු නැඹුරු නොවේ. සේවාවක් කරන්නේ කුමක්ද? සම්බන්ධ ඕනෑම දෙයක්FooBars . එය ලේබල් කළ හැකිය FooBarUtils. මම හිතන්නේ ඔහු සේවා ස්ථරයක් වෙනුවෙන් පෙනී සිටිනු ඇත (වඩා හොඳ නමක් ව්‍යාපාර තර්කන ස්ථරය වනු ඇත) නමුත් එම ස්ථරයේ සෑම පන්තියකටම අර්ථවත් නමක් ඇත.


2
ORM පිළිබඳ ඔබේ අදහස සමඟ එකඟ වන්න; ඔවුන් ඔබේ වස්තුව කෙලින්ම db සමඟ සිතියම් ගත කරන බවට බොරුවක් ප්‍රචාරය කරයි.
ඇන්ඩි

An ඩැනියෙල් කැප්ලාන් බොබ් මාටින් වීඩියෝව සඳහා යාවත්කාලීන කළ සබැඳිය කුමක්දැයි ඔබ දන්නවාද?
බ්‍රයන් මොරාර්ටි

26

මම මේ වන විට ග්‍රීන්ෆීල්ඩ් ව්‍යාපෘතියේ වැඩ කරමින් සිටින අතර අපට ඊයේ වාස්තු විද්‍යාත්මක තීරණ කිහිපයක් ගැනීමට සිදුවිය. 'ව්‍යවසාය යෙදුම් ගෘහ නිර්මාණ ශිල්පයේ රටාවන්' පරිච්ඡේද කිහිපයක් නැවත බැලීමට මට සිදුවිය.

අප ඉදිරිපත් කළේ මෙයයි:

  • දත්ත ස්ථරය. විමසීම් සහ යාවත්කාලීන දත්ත සමුදාය. ස්තරය එන්නත් කළ හැකි නිධි හරහා නිරාවරණය වේ.
  • වසම් ස්ථරය. ව්‍යාපාර තර්කනය ජීවත් වන්නේ මෙහිදීය. මෙම ස්තරය එන්නත් කළ හැකි නිධි භාවිතා කරන අතර ව්‍යාපාර තර්කනයේ බහුතරයකට වගකිව යුතුය. යෙදුමේ හරය මෙයයි.
  • සේවා ස්ථරය. මෙම ස්තරය වසම් ස්ථරයට කථා කරන අතර සේවාදායකයාගේ ඉල්ලීම් ඉටු කරයි. අපගේ නඩුවේදී සේවා ස්ථරය තරමක් සරලයි - එය වසම් ස්ථරයට ඉල්ලීම් ඉදිරිපත් කරයි, ආරක්ෂාව හසුරුවයි සහ තවත් හරස් කැපීම් කිහිපයක්. MVC යෙදුමේ පාලකයෙකුට මෙය බෙහෙවින් වෙනස් නොවේ - පාලකයන් කුඩා හා සරල ය.
  • සේවාලාභී ස්ථරය. SOAP හරහා සේවා ස්ථරයට කතා කරයි.

අපි පහත සඳහන් දෑ සමඟ අවසන් වෙමු:

සේවාලාභියා -> සේවාව -> වසම -> දත්ත

අපට සේවාදායකයා, සේවාව හෝ දත්ත ස්තරය සාධාරණ වැඩ ප්‍රමාණයක් ආදේශ කළ හැකිය. ඔබගේ ඩොමේන් තර්කනය සේවයේ ජීවත් වූවා නම් සහ ඔබේ සේවා ස්ථරය ප්‍රතිස්ථාපනය කිරීමට හෝ ඉවත් කිරීමට අවශ්‍ය යැයි ඔබ තීරණය කර ඇත්නම්, එවිට ඔබට සියලු ව්‍යාපාරික තර්කනයන් වෙනත් තැනකට ගෙන යා යුතුය. එවැනි අවශ්‍යතාවයක් දුර්ලභ ය, නමුත් එය සිදුවිය හැකිය.

මේ සියල්ල පැවසීමෙන් පසු, මාටින් ෆෝලර් පැවසීමෙන් අදහස් කරන දෙයට මෙය බෙහෙවින් සමීප යැයි මම සිතමි

මෙම සේවාවන් වසම් ආකෘතියට ඉහළින් ජීවත් වන අතර දත්ත සඳහා වසම් ආකෘතිය භාවිතා කරයි.

පහත රූප සටහන මෙය මනාව විදහා දක්වයි:

http://martinfowler.com/eaaCatalog/serviceLayer.html

http://martinfowler.com/eaaCatalog/ServiceLayerSketch.gif


2
ඔබ ඊයේ SOAP සඳහා තීරණය කළාද? එය අවශ්‍යතාවයක්ද? නැත්නම් ඔබට වඩා හොඳ අදහසක් නොතිබුණාද?
ජෙන්ස්

1
REST අපගේ අවශ්‍යතා සඳහා එය කපා නොදමනු ඇත. SOAP හෝ REST, මෙය පිළිතුරට කිසිදු වෙනසක් නොකරයි. මගේ අවබෝධයෙන්, සේවාව වසම් තර්කනයට දොරටුවකි.
CodeART

ද්වාරය සමඟ සම්පූර්ණයෙන්ම එකඟ වන්න. SOAP යනු (ප්‍රමිතිගත) බ්ලොට්වෙයාර් ය, එබැවින් මට ඇසීමට සිදු විය. ඔව්, ප්‍රශ්නයට / පිළිතුරට කිසිදු බලපෑමක් නැත.
ජෙන්ස්

6
ඔබට උදව්වක් කර ඔබේ සේවා ස්ථරය මරා දමන්න. ඔබගේ ui ඔබගේ වසම කෙලින්ම භාවිතා කළ යුතුය. මම මෙය මීට පෙර දැක ඇති අතර ඔබේ වසම නිරන්තරයෙන් රක්තහීනතාවයේ පොකුරක් බවට පත්වේ, පොහොසත් ආකෘති නොවේ.
ඇන්ඩි

එම ස්ලයිඩයන් සේවා ස්ථරය හා මෙම ග්‍රැෆික් පිළිබඳ පැහැදිලි කිරීම ඉතා පිළිවෙලට ආවරණය කරයි: slideshare.net/ShwetaGhate2/…
මාක් ජුච්ලි

9

මෙය භාවිතා කිරීමේ අවස්ථාව මත සැබවින්ම රඳා පවතින එවැනි දේවලින් එකකි. සේවා ස්ථරයක සමස්ත කරුණ වන්නේ ව්‍යාපාර තර්කනය එකට ඒකාබද්ධ කිරීමයි. මෙයින් අදහස් කරන්නේ ගෙවීම් සිදු කරන්නේ කෙසේද යන්න ගැන සැබවින්ම සැලකිලිමත් නොවී පාලකයන් කිහිප දෙනෙකුට එකම පරිශීලක සේවා ඇමතිය හැකි බවයි. සේවාවේ සිදුවන දේ වස්තු දේපලක් වෙනස් කිරීම තරම් සරල විය හැකිය, නැතහොත් එය වෙනත් සේවාවන් සමඟ ගනුදෙනු කිරීමේ සංකීර්ණ තර්කනයක් කරමින් සිටිය හැකිය (එනම්, තෙවන පාර්ශවීය සේවාවන්ට කැඳවීම, වලංගු කිරීමේ තර්කනය ඇමතීම හෝ දත්ත ගබඩාවට යමක් ඉතිරි කිරීම. )

මෙයින් අදහස් කරන්නේ ඔබ වසම් වස්තු වලින් සියලු තර්කනයන් ඉවත් කළ යුතු බවයි. සමහර විට ඩොමේන් වස්තුව මත ක්‍රමවේදයක් තිබීම වඩා අර්ථවත් කරයි. ඔබගේ අවසාන උදාහරණයේ දී, සේවාව නිධිය / වසම් වස්තුවට වඩා අතිරික්ත ස්ථරයකි. අවශ්‍යතා වෙනස්වීම් වලට එරෙහිව එය හොඳ බෆරයක් සපයයි, නමුත් එය ඇත්ත වශයෙන්ම අවශ්‍ය නොවේ. ඔබට සේවාවක් අවශ්‍ය යැයි ඔබ සිතන්නේ නම්, ඩොමේන් වස්තුව වෙනුවට සරල “වස්තුව Y මත දේපල X වෙනස් කිරීම” සඳහා උත්සාහ කරන්න. ඩොමේන් පංතිවල ඇති තර්කනය, සියලු ක්ෂේත්‍රයන් ලබා ගන්නන් / කට්ටල හරහා නිරාවරණය කරනවාට වඩා “ක්ෂේත්‍ර වලින් මෙම අගය ගණනය කරන්න” ට නැඹුරු වේ.


2
ව්‍යාපාර තර්කනය සහිත සේවා ස්ථරයකට පක්ෂව ඔබගේ ස්ථාවරය බොහෝ අර්ථවත් කරයි, නමුත් මෙය තවමත් ප්‍රශ්න කිහිපයක් ඉතිරි කරයි. ඕනෑම ව්‍යාපාර තර්කනයක මුහුණුවරක් ලෙස සේවා ස්ථරය ගැන කතා කරන ගෞරවනීය ප්‍රභවයන් කිහිපයක් මගේ ලිපියෙන් උපුටා දක්වා ඇත. මෙය ඔබගේ පිළිතුරට direct ජුවම වෙනස් ය, ඔබට මෙම වෙනස පැහැදිලි කළ හැකිද?
ජෙරොයින් වැනේවෙල්

5
එය සැබවින්ම රඳා පවතින්නේ ව්‍යාපාර තර්කනයේ ටයිප් සහ භාවිතා කරන භාෂාව වැනි වෙනත් සාධක මත ය. සමහර ව්‍යාපාරික තර්කනයන් වසම් වස්තු මත හොඳින් නොගැලපේ. එක් උදාහරණයක් නම් දත්ත සමුදායෙන් පසුපසට ඇද ගැනීමෙන් පසු ප්‍රති results ල පෙරීම / වර්ග කිරීම ය. එය ව්‍යාපාරික තර්කනයකි, නමුත් එය වසම් වස්තුව පිළිබඳ තේරුමක් නැත. සරල තර්කනය සඳහා හෝ සේවා ප්‍රති results ල පරිවර්තනය කිරීම සඳහා සේවා වඩාත් සුදුසු බව මට පෙනී ගොස් ඇත. එය දත්ත සුරැකීම හෝ වස්තුවෙන් දත්ත ගණනය කිරීම සම්බන්ධයෙන් කටයුතු කරන විට වසමේ ඇති තර්කනය වඩාත් ප්‍රයෝජනවත් වේ.
firelore

9

ඩොමේන් වස්තු තුළ ඩොමේන් තර්කනය තැබීමෙන් ක්‍රමලේඛකයින් ලැජ්ජා වන්නේ මන්ද යන්න නිදර්ශනය කිරීමට ඇති පහසුම ක්‍රමය නම්, ඔවුන් සාමාන්‍යයෙන් "වලංගු කිරීමේ තර්කනය කොතැනට දැමිය යුතුද?" උදාහරණයක් ලෙස මෙම වසම් වස්තුව ගන්න:

public class MyEntity
{
    private int someProperty = 0;

    public int SomeProperty
    {
        get { return this.someProperty; }
        set
        {
            if(value < 0) throw new ArgumentOutOfRangeException("value");
            this.someProperty = value;
        }
    }
}

එබැවින් අපට මූලික සත්‍යාපන තර්කනයක් ඇත (negative ණ විය නොහැක). ගැටලුව වන්නේ ඔබට මෙම තර්කනය නැවත භාවිතා කළ නොහැකි වීමයි. ඩොමේන් වස්තුවෙහි වෙනසක් සිදු කිරීමට පෙර වලංගු කිරීමක් කළ යුතු තිරයක් හෝ දර්ශන මොඩලයක් හෝ පාලකයක් කොතැනක හෝ තිබේ , මන්ද එය කළ නොහැකි බව සුරකින්න බොත්තම ක්ලික් කිරීමට පෙර හෝ පසුව පරිශීලකයාට දැනුම් දිය යුතුය. සහ ඇයි . ඔබ සෙටරය අමතන විට ව්‍යතිරේකයක් සඳහා පරීක්ෂා කිරීම අවලස්සන කඩුල්ලක් බැවින් ඔබ ගනුදෙනුව ආරම්භ කිරීමට පෙර සියලු වලංගු කිරීම් කළ යුතුව තිබුණි.

මිනිසුන් වලංගු කිරීමේ තර්කනය වැනි සේවාවක් ගෙන යන්නේ එබැවිනි MyEntityValidator. එවිට ආයතනයට සහ ඇමතුම් තර්කනයට වලංගු කිරීමේ සේවාව වෙත යොමු කිරීමක් ලබා ගත හැකි අතර එය නැවත භාවිතා කළ හැකිය.

ඔබ එය නොකරන්නේ නම් සහ ඔබට තවමත් වලංගු කිරීමේ තර්කනය නැවත භාවිතා කිරීමට අවශ්‍ය නම්, ඔබ එය අවසන් කරන්නේ වස්තු පන්තියේ ස්ථිතික ක්‍රමවලට ය:

public class MyEntity
{
    private int someProperty = 0;

    public int SomeProperty
    {
        get { return this.someProperty; }
        set
        {
            string message;
            if(!TryValidateSomeProperty(value, out message)) 
            {
                throw new ArgumentOutOfRangeException("value", message);
            }
            this.someProperty = value;
        }
    }

    public static bool TryValidateSomeProperty(int value, out string message)
    {
        if(value < 0)
        {
            message = "Some Property cannot be negative.";
            return false;
        }
        message = string.Empty;
        return true;
    }
}

මෙය ඔබගේ ඩොමේන් මාදිලිය "රක්තහීනතාවය" අඩු කරයි, සහ වලංගු කිරීමේ තර්කනය දේපල අසල තබා ගන්න, එය විශිෂ්ටයි, නමුත් කිසිවෙකු ස්ථිතික ක්‍රමවලට කැමති යැයි මම නොසිතමි.


2
ඔබේ මතය අනුව වලංගු කිරීම සඳහා හොඳම විසඳුම කුමක්ද?
ෆ්ලෑෂ් රන්නර්

3
La ෆ්ලෑෂ්ර්නර් - මගේ වලංගු කිරීමේ තර්කනය නිශ්චිතවම ව්‍යාපාරික තාර්කික ස්ථරයේ ඇත, නමුත් සමහර අවස්ථාවල එය ආයතන හා දත්ත සමුදා ස්ථරවල අනුපිටපත් කර ඇත. ව්‍යාපාරික ස්තරය පරිශීලකයාට දැනුම් දීමෙන් එය මනාව හසුරුවයි, නමුත් අනෙක් ස්ථර මඟින් දෝෂ / ව්‍යතිරේකයන් විසි කර දත්ත දූෂිත වැරදි කිරීමෙන් ක්‍රමලේඛකයා (මා) වළක්වයි.
ස්කොට් විට්ලොක්

C ස්කොට්විට්ලොක් වලංගු කිරීමේ තර්කනය අනුපිටපත් කිරීම හෝ ඔබේ නඩුව තුන් ගුණයකින් වැඩි කිරීම හොඳ අදහසක් යැයි ඔබ සිතනවාද?
ෆේබියන් පිකෝන්

Ab ෆේබියන්පිකෝන් - වස්තු ආකෘතියක් තිබීම මඟින් දත්ත සමුදායට කෙලින්ම ප්‍රවේශ වීම කිසියම් ක්‍රියාවලියක් වළක්වන්නේ නැත, එබැවින් දත්ත සමුදායට බාධාවක් කිරීමට මට අවශ්‍යය. නමුත් යමෙකුට වස්තුවක් නිර්මාණය කර දත්ත සමුදායට ඉදිරිපත් කිරීමට ඉඩ දීම එම බාධාව අකාර්යක්ෂම වන අතර ගුප්ත දෝෂ පණිවිඩ නිර්මාණය කරයි, එබැවින් මම එම සීමාව මගේ වස්තු ආකෘතියේ අනුපිටපත් කර වස්තු ආකෘති පරිශීලකයාට (ක්‍රමලේඛකයෙකුට) ව්‍යතිරේකයක් දමමි. වෙනත් ක්‍රමලේඛකයෙකුට මගේ ව්‍යතිරේක පණිවිඩය පරිශීලකයාගේ මව් බසින් ප්‍රදර්ශනය කළ නොහැක, නැතහොත් වෙබ් සේවා ඇමතුමේ ඉහළින් මගේ තර්කනය ව්‍යතිරේකයක් විසි කරන්නේ දැයි බැලීමට අවශ්‍ය නැත.
ස්කොට් විට්ලොක්

9

මාටින් ෆෝලර්ගේ රක්තහීන වසම් ආදර්ශ ලිපිය කියවන්නේ නම් පිළිතුර පැහැදිලි යැයි මම සිතමි .

වසම වන ව්‍යාපාරික තර්කනය වසම් ආකෘතියෙන් ඉවත් කිරීම අත්‍යවශ්‍යයෙන්ම වස්තු නැඹුරු නිර්මාණය බිඳ දැමීමකි.

වඩාත් මූලික වස්තු දිශානත සංකල්පය සමාලෝචනය කරමු: වස්තුවක් දත්ත සහ මෙහෙයුම් සංයුක්ත කරයි. උදාහරණයක් ලෙස, ගිණුමක් වැසීම යනු ගිණුම් වස්තුවක් විසින්ම කළ යුතු මෙහෙයුමකි; එබැවින් සේවා ස්ථරයක් තිබීම එම මෙහෙයුම වස්තු නැඹුරු විසඳුමක් නොවේ. එය ක්‍රියාපටිපාටිය වන අතර, රක්තහීනතා වසම් ආකෘතියක් ගැන කතා කරන විට මාටින් ෆෝලර් සඳහන් කරන්නේ එයයි.

ඔබට සේවා ස්ථරයක් තිබේ නම්, ගිණුමේ වස්තුව සමීපව තබා ගන්නවාට වඩා, ඔබට සත්‍ය ගිණුම් වස්තුවක් නොමැත. ඔබගේ ගිණුම "වස්තුව" හුදෙක් දත්ත ව්‍යුහයකි. මාටින් ෆෝලර් යෝජනා කරන පරිදි ඔබ අවසන් කරන්නේ, ලබා ගන්නන් සහ කට්ටල සහිත බෑග් පොකුරකි.


1
සංස්කරණය කරන ලදි. මම ඇත්ත වශයෙන්ම මෙය බෙහෙවින් ප්‍රයෝජනවත් පැහැදිලි කිරීමක් සොයා ගත් අතර එය පහත් කොට සැලකීමට සුදුසු යැයි නොසිතමි.
BadHorsie

2
පොහොසත් ආකෘතිවල විශාල වශයෙන් අධීක්ෂණය කළ හැකි අවාසියක් තිබේ. එය සංවර්ධකයින් විසින් ආකෘතියට තරමක් සම්බන්ධ ඕනෑම දෙයක් ඇද ගැනීමයි. විවෘත / වසා ඇති තත්වය ගිණුමේ ලක්ෂණයක්ද? අයිතිකරු ගැන කුමක් කිව හැකිද? බැංකුව? ඔවුන් සියල්ලන්ම ගිණුමෙන් යොමු කළ යුතුද? බැංකුවකට කතා කිරීමෙන් හෝ ගිණුම හරහා කෙලින්ම ගිණුමක් වසා දැමිය හැකිද? රක්තහීනතා ආකෘති සමඟ, එම සම්බන්ධතා ආකෘතිවල ආවේනික කොටසක් නොවේ, නමුත් වෙනත් පන්තිවල එම ආකෘති සමඟ වැඩ කිරීමේදී ඒවා නිර්මාණය වේ (ඒවා සේවා හෝ කළමනාකරුවන් ලෙස හඳුන්වන්න).
හියුබට් ග්‍රෙස්කොවියාක්

4

ඔබේ ව්‍යාපාර තර්කනය සේවා ස්ථරයේ ක්‍රියාත්මක කරන්නේ කෙසේද? ඔබ පරිශීලකයෙකුගෙන් ගෙවීමක් කරන විට, ඔබ දේපලකින් වටිනාකමක් අඩු නොකර ගෙවීමක් නිර්මාණය කරයි.

ඔබගේ ගෙවීම් ක්‍රමයට ගෙවීම් වාර්තාවක් නිර්මාණය කිරීම, එම පරිශීලකයාගේ ණය එකතු කිරීම සහ ඔබේ ගබඩාවල මේ සියල්ල දිගටම පැවතීම අවශ්‍ය වේ. සේවා ක්‍රමයකින් මෙය කිරීම ඇදහිය නොහැකි තරම් සරල ය, තවද ඔබට ගනුදෙනුවක දී සම්පූර්ණ මෙහෙයුම ආවරණය කළ හැකිය. සමස්ථ ඩොමේන් ආකෘතියක එයම කිරීම වඩාත් ගැටලු සහගතය.


ඔහු ගෙවීම් වාර්තාවක් නිර්මාණය කරන්නේ නැත. ඔහුගේ ව්‍යාපාර තර්කනය ආයතනය තුළ පැවතිය යුත්තේ එබැවිනි. නමුත් ඔහුට ගෙවීම් වාර්තාවක් නිර්මාණය කිරීමට සිදුවුවහොත් - ඔබ හරි, ගෙවීම් ව්‍යාපාර තර්කනය වෙනත් තැනක ජීවත් වනු ඇත.
anton1980

2

Tl; dr අනුවාදය:
මගේ අත්දැකීම් සහ මතයන් පවසන්නේ ව්‍යාපාර තර්කනය ඇති ඕනෑම වස්තුවක් වසම් ආකෘතියේ කොටසක් විය යුතු බවයි. දත්ත ආකෘතියට කිසිදු තර්කනයක් නොතිබිය යුතුය. සේවාවන් බොහෝ දුරට මේ දෙක එකට බැඳ තැබිය යුතු අතර හරස් කැපීමේ ගැටළු (දත්ත සමුදායන්, ල ging ු-සටහන් ආදිය) සමඟ කටයුතු කළ යුතුය. කෙසේ වෙතත්, පිළිගත් පිළිතුර වඩාත් ප්‍රායෝගික ය.

දීර් version අනුවාදය, වෙනත් අය විසින් යම් ආකාරයකින් සඳහන් කර ඇති අතර, "ආකෘතිය" යන වචනයට සමානකමක් තිබේ. පෝස්ට් එක දත්ත ආකෘතිය සහ ඩොමේන් මොඩලය අතර වෙනස් වේ, ඒවා එක හා සමානයි, එය ඉතා පොදු වැරැද්දකි. "සේවාව" යන වචනයට සුළු සමානකමක් ද තිබිය හැකිය.

ප්‍රායෝගිකව ගත් කල, ඔබට කිසියම් ඩොමේන් වස්තුවකට වෙනස්කම් කරන සේවාවක් නොතිබිය යුතුය; මෙයට හේතුව, එම දේපලෙහි වටිනාකම වෙනස් කිරීම සඳහා ඔබේ සේවාවට ඔබේ වස්තුවෙහි ඇති සෑම දේපලකටම යම් ක්‍රමවේදයක් තිබීමයි. මෙය ගැටළුවක් වන හෙයින්, ඔබේ වස්තුව සඳහා අතුරු මුහුණතක් තිබේ නම් (හෝ නොවුනත්), සේවාව තවදුරටත් විවෘත-සංවෘත මූලධර්මය අනුගමනය නොකරයි; ඒ වෙනුවට, ඔබ ඔබේ ආකෘතියට වැඩි දත්ත එකතු කරන සෑම විටම (ඩොමේන් එදිරිව දත්ත නොසලකා), ඔබ අවසන් කරන්නේ ඔබේ සේවාවට තවත් කාර්යයන් එකතු කිරීමටය. එය වටා යම් යම් ක්‍රම තිබේ, නමුත් "ව්‍යවසාය" යෙදුම් අසාර්ථක වන බව මා දුටු වඩාත් පොදු හේතුව මෙයයි, විශේෂයෙන් එම ආයතන "ව්‍යවසාය" යන්නෙන් අදහස් කරන්නේ "පද්ධතියේ සෑම වස්තුවකටම අතුරු මුහුණතක් තිබිය යුතුය" යන්නයි. අතුරු මුහුණතකට නව ක්‍රම එකතු කිරීම ඔබට සිතාගත හැකිද, ඔබේ ආකෘතියේ ඇති එක් දේපලක් සඳහා වෙනස් ක්‍රියාත්මක කිරීම් දෙකකට හෝ තුනකට (යෙදුමේ ඇති එක, ව්‍යාජ ක්‍රියාත්මක කිරීම සහ මතකයේ ඇති නිදොස් කිරීම?)? මට භයානක අදහසක් වගේ.

මෙහි දිගු ගැටළුවක් මා තුළට නොයනු ඇත, නමුත් සාරාංශය මෙයයි: හාඩ්කෝර් වස්තු-නැඹුරු වැඩසටහන්කරණය පවසන්නේ අදාළ වස්තුවෙන් පිටත සිටින කිසිවෙකුට වස්තුව තුළ ඇති දේපලක වටිනාකම වෙනස් කිරීමට නොහැකි විය යුතු බවයි. "වස්තුව තුළ ඇති දේපලවල වටිනාකම බලන්න. දත්ත කියවීමට පමණක් සෑදීමෙන් මෙය සමනය කළ හැකිය. බොහෝ අය දත්ත කියවීමට පමණක් භාවිතා කරන විටත්, එම දත්ත වර්ගය වෙනස් කළ යුතු විටත් ඔබට තවමත් ගැටළු වලට මුහුණ දිය හැකිය. ඒ සඳහා ඉඩ සැලසීමට සියලු පාරිභෝගිකයින්ට වෙනස් වීමට සිදුවනු ඇත. ඒ නිසාම, ඔබ ඕනෑම අයෙකු සහ සෑම කෙනෙකුම පරිභෝජනය කිරීමට API නිපදවන විට, ඔබට පොදු හෝ ආරක්ෂිත දේපල / දත්ත නොතිබීමට උපදෙස් දෙනු ලැබේ; OOP නිර්මාණය කරන ලද හේතුව එයයි.

මම හිතන්නේ මෙහි ඇති පිළිතුරු වලින් බහුතරයක්, පිළිගත් ලෙස පිළිගත් පිළිතුර හැරුණු විට, සියල්ලම වලාකුළු සහිත ය. පිළිගත් ලෙස සලකුණු කර ඇති එක හොඳයි, නමුත් සාමාන්‍යයෙන් වෙඩි නොවදින වෙඩි උණ්ඩය 4 බව පිළිතුරු දීමට හා එකඟ වීමේ අවශ්‍යතාවය මට දැනුණි.

ඩීඩීඩී හි, සේවාවන් විශේෂයෙන් අදහස් කරන්නේ ඔබට කිසියම් සමස්ත මූලයකට නිසියාකාරව අයත් නොවන මෙහෙයුමක් ඇති විට තත්වය සඳහා ය. ඔබ මෙහි ප්‍රවේශම් විය යුතුය, මන්ද බොහෝ විට සේවාවක අවශ්‍යතාවයෙන් ඇඟවෙන්නේ ඔබ නිවැරදි මූලයන් භාවිතා නොකළ බවයි. නමුත් ඔබ උපකල්පනය කළ පරිදි, සේවාවක් බහු මූලයන් හරහා මෙහෙයුම් සම්බන්ධීකරණය කිරීමට හෝ සමහර විට වසම් ආකෘතියට සම්බන්ධ නොවන ගැටළු විසඳීමට භාවිතා කරයි ...


1

පිළිතුර එය භාවිතා කිරීමේ අවස්ථාව මත රඳා පවතින බවයි. නමුත් බොහෝ සාමාන්‍ය අවස්ථාවන්හිදී, සේවා ස්ථරයේ ව්‍යාපාර තර්කනය තැබීමට මම අනුගත වෙමි. ඔබ සපයා ඇති උදාහරණය ඇත්තෙන්ම සරල ය. කෙසේ වෙතත්, ඔබ විසන්ධි කරන ලද පද්ධති හෝ සේවාවන් ගැන සිතීමට පටන් ගෙන ඒ මත ගනුදෙනුකාරී හැසිරීම් එකතු කිරීම සේවා ස්ථරයේ කොටසක් ලෙස සිදුවීමට ඔබට අවශ්‍යය.

සේවා තට්ටුව කිසිදු ව්‍යාපාර තර්කනයකින් තොර වීම සඳහා ඔබ උපුටා දක්වා ඇති ප්‍රභවයන් ව්‍යාපාර ස්ථරය වන තවත් ස්ථරයක් හඳුන්වා දෙයි. බොහෝ අවස්ථා වලදී සේවා ස්ථරය සහ ව්‍යාපාර ස්ථරය එකකට සම්පීඩිත වේ. එය සැබවින්ම රඳා පවතින්නේ ඔබේ පද්ධතිය සැලසුම් කිරීමට ඔබට අවශ්‍ය ආකාරය මත ය. ඔබට වැඩ ස්ථර තුනකින් සිදු කර අලංකාර කිරීම සහ ශබ්දය එකතු කිරීම දිගටම කරගෙන යා හැකිය.

ඔබට ඉතා මැනවින් කළ හැකි වන්නේ රාජ්ය පැවැත්ම සඳහා ඩොමේන් ආකෘති මත වැඩ කිරීම සඳහා ව්යාපාරික තර්කනය ඇතුළත් ආකෘති සේවා ය . ඔබ හැකි තරම් සේවාවන් විසන්ධි කිරීමට උත්සාහ කළ යුතුය.


1

සේවා ස්ථරය පිළිබඳ සංකල්පය ඩීඩීඩී දෘෂ්ටි කෝණයෙන් බැලිය හැකිය. ආරොනොට් එය ඔහුගේ පිළිතුරේ සඳහන් කර ඇත, මම ඒ ගැන ටිකක් විස්තර කරමි.

පොදු ප්‍රවේශයක් වන්නේ සේවාදායකයෙකුට විශේෂිත වූ පාලකයක් තිබීමයි. කියන්න, එය වෙබ් බ්‍රව්සරයක් විය හැකිය, එය වෙනත් යෙදුමක් විය හැකිය, එය ක්‍රියාකාරී පරීක්ෂණයක් විය හැකිය. ඉල්ලීම සහ ප්‍රතිචාර ආකෘති වෙනස් විය හැකිය. එබැවින් මම ෂඩාස්රාකාර ගෘහ නිර්මාණ ශිල්පය භාවිතා කිරීමේ මෙවලමක් ලෙස යෙදුම් සේවාව භාවිතා කරමි . සංයුක්ත ඉල්ලීමකට විශේෂිත යටිතල පහසුකම් පන්ති මම එහි එන්නත් කරමි. උදාහරණයක් ලෙස, වෙබ් බ්‍රව්සර් ඉල්ලීම් සඳහා මගේ පාලකය පෙනෙන්නේ එලෙස ය:

class WebBroserController
{
    public function purchaseOrder()
    {
        $data = $_POST;

        $responseData =
            new PurchaseOrderApplicationService(
                new PayPalClient(),
                new OrderRepository()
            )
        ;

        $response = new HtmlView($responseData);
    }
}

මම ක්‍රියාකාරී පරීක්ෂණයක් ලියන්නේ නම්, මට ව්‍යාජ ගෙවීම් සේවාදායකයෙකු භාවිතා කිරීමට අවශ්‍ය වන අතර බොහෝ විට මට html ප්‍රතිචාරයක් අවශ්‍ය නොවනු ඇත. එබැවින් මගේ පාලකය එසේ විය හැකිය:

class FunctionalTestController
{
    public function purchaseOrder()
    {
        $data = $_POST;

        $responseData =
            new PurchaseOrderApplicationService(
                new FakePayPalClient(),
                new OrderRepository(),
                $data
            )
        ;

        return new JsonData($responseData);
    }
}

එබැවින් යෙදුම් සේවාව යනු ව්‍යාපාර-තර්කනය ක්‍රියාත්මක කිරීම සඳහා මා විසින් සකස් කරන ලද පරිසරයකි. ආදර්ශ පංති ලෙස හැඳින්වෙන්නේ එයයි - අ nost ෙයවාදීව යටිතල පහසුකම් ක්‍රියාත්මක කිරීම.

එබැවින්, මෙම දෘෂ්ටිකෝණයෙන් ඔබේ ප්‍රශ්නවලට පිළිතුරු සැපයීම:

එය හුදෙක් පාලකයෙන් තර්කනය උකහා ගෙන ඒ වෙනුවට සේවාවක් තුළට දැමීමේ මාධ්‍යයක්ද?

නොමැත.

එය පාලකය සහ වසම අතර ගිවිසුමක් ඇති කළ යුතුද?

හොඳයි, කෙනෙකුට එය එසේ හැඳින්විය හැකිය.

වසම සහ සේවා ස්ථරය අතර තට්ටුවක් තිබිය යුතුද?

නෑ.


රැඩිකල් ලෙස වෙනස් ප්‍රවේශයක් ඇතත් එය ඕනෑම ආකාරයක සේවාවක් භාවිතා කිරීම මුළුමනින්ම ප්‍රතික්ෂේප කරයි. නිදසුනක් වශයෙන්, ඩේවිඩ් වෙස්ට් සිය වස්තුව සිතීමේ පොතේ සඳහන් කරන්නේ ඕනෑම වස්තුවකට එහි කාර්යය කිරීමට අවශ්‍ය සියලු සම්පත් තිබිය යුතු බවයි. මෙම ප්‍රවේශය මඟින් ඕනෑම ORM එකක් ඉවතලනු ලැබේ.


මෙම පිළිතුර ඉතා ආදර්ශවත් ලෙස සේවා සාරාංශයක් ඇතිවීමට හොඳ හේතු 2 ක් පැහැදිලි කරයි (උදා: පන්තිය, මොඩියුලය): # 1 ඒකකය පරීක්ෂා කළ හැකි; # 2 නැවත භාවිතා කිරීමේ හැකියාව. දෙකම වෙනස් කළ හැකි අතර නැවත භාවිතයෙන් හුදකලා වී ඇත (එය ස්පර්ශ නොකර).
hc_dev

0

MVC මාදිලියේ ව්‍යාපාර තර්කනය ලෙස අර්ථ දැක්වේ. ඔහු එම්වීසී භාවිතා නොකරන්නේ නම් එය වෙනත් තැනක තිබිය යුතු යැයි පැවසීම වැරදිය. මම සේවා ස්ථර මොඩියුල පද්ධතියකට සමානයි. ආශ්‍රිත ක්‍රියාකාරීත්ව කට්ටලයක් ලස්සන පැකේජයකට එකතු කිරීමට එය ඔබට ඉඩ සලසයි. එම සේවා ස්ථරයේ අභ්‍යන්තරයට ඔබේ වැඩ කටයුතු කරන ආකෘතියක් ඇත.

යෙදුම දත්ත, ව්‍යාපාර නීති, තර්කනය සහ ක්‍රියාකාරකම් වලින් සමන්විත වේ. http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller


-2

වාර්තාව සඳහා.

SRP:

  1. ආදර්ශ = දත්ත, මෙන්න සැකසුම සහ ලබා ගන්නන් ය.
  2. තාර්කික / සේවා = මෙහි තීරණ ගනී.
  3. නිධිය / DAO = මෙහිදී අපි තොරතුරු ගබඩා කර හෝ ලබා ගනිමු.

මෙම අවස්ථාවේදී, ඊළඟ පියවරයන් කිරීම හරි:

ණය සඳහා යම් ගණනය කිරීමක් අවශ්‍ය නොවන්නේ නම්:

userObject.Debt = 9999;

කෙසේ වෙතත්, එයට යම් ගණනය කිරීමක් අවශ්‍ය නම්:

userObject.Debt= UserService.CalculateDebt(userObject)

හෝ

UserService.UpdateDebt(userObject)

එහෙත්, ගණනය කිරීම ස්ථර ස්ථරයේ සිදු කරන්නේ නම්, එවැනි ගබඩා ක්රියා පටිපාටියක්

UserRepository.UpdateDebt(userObject)

මෙම අවස්ථාවෙහිදී, අපට අවශ්‍ය වන්නේ දත්ත සමුදායෙන් පරිශීලකයා ලබා ගැනීමට සහ ණය යාවත්කාලීන කිරීමට නම්, අපි එය පියවර කිහිපයකින් කළ යුතුය (ඇත්ත වශයෙන්ම, දෙකක්) එය සේවාවේ කාර්යයක් තුළ එය එතීමට / සංයුක්ත කිරීමට අවශ්‍ය නොවේ.

User userObject=UserRepository.GetUserByName(somename);
UserService.UpdateDebt(userObject)

එය ගබඩා කිරීමට අවශ්‍ය නම්, අපට තුන්වන පියවරක් එකතු කළ හැකිය

User userObject=UserRepository.GetUserByName(somename);
UserService.UpdateDebt(userObject)
UserRepository.Save(userobject);

යෝජිත විසඳුම ගැන

අ) ශ්‍රිතයක් තුළ එය සංයුක්ත කිරීම වෙනුවට අවසන්-සංවර්ධකයාට කිහිපයක් ලිවීමට අප බිය නොවිය යුතුය.

ආ) සහ අතුරුමුහුණත ගැන, සමහර සංවර්ධකයින් අතුරුමුහුණතට ආදරය කරන අතර ඒවා හොඳයි, නමුත් අවස්ථා කිහිපයකදී, ඒවා කිසිසේත් අවශ්‍ය නොවේ.

ඇ) සේවාවක පරමාර්ථය වන්නේ ගුණාංග නොමැතිව එකක් නිර්මාණය කිරීමයි, ප්‍රධාන වශයෙන් අපට හවුල් / ස්ථිතික කාර්යයන් භාවිතා කළ හැකි බැවිනි. ඒකකය පරීක්ෂා කිරීමද පහසුය.


ඇසූ ප්‍රශ්නයට මෙම පිළිතුර පිළිතුරු දෙන්නේ කෙසේද
gnat

3
වගේ නියම මොන ඇත "We shouldn't be afraid to left the end-developer to write a couple of instead of encapsulate it in a function."? මම ලුවිස් කළු උපුටා හැකි" එය මගේ අශ්වයා සඳහා නොවේ නම් මම විද්යාලයේ එම වසරේ වැය කර ඇති බවත් නො හැකි වනු ඇත. "
මලාකි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.