Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÁìÓòÇý¶¯Éè¼ÆÊµ¼ù ¡ª¡ª ¼Ü¹¹·ç¸ñ¼°¼Ü¹¹ÊµÀý
 
  45764  次浏览      29
 2018-5-3
 
±à¼­ÍƼö:

±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬±¾ÎÄÕë¶ÔDDDµÄ¼Ü¹¹Éè¼Æ£¬Í¨¹ý¼Ü¹¹ÊµÀý£¬ÊµÏÖÁËÁìÓòÇý¶¯Éè¼Æ¡£

1. ¸ÅÊö

DDDΪ¸´ÔÓÈí¼þµÄÉè¼ÆÌṩÁËÖ¸µ¼Ë¼Ï룬Æä½«Ò×·¢Éú±ä»¯µÄÒµÎñºËÐÄÓò·ÅÖÃÔÚÏÞ¶¨ÉÏÏÂÎÄÖУ¬ÔÚÈ·±£ºËÐÄÓòÒ»ÖÂÐÔºÍÄÚ¾ÛÐԵĻù´¡ÉÏ£¬DDD¿ÉÒÔ±»¶àÖÖÓïÑԺͶàÖÖ¼¼Êõ¿ò¼ÜʵÏÖ£¬¾ßÌåµÄ¿ò¼ÜʵÏÖÐèÒª¸ù¾Ýʵ¼ÊµÄÒµÎñ³¡¾°ºÍÐèÇóÀ´Öƶ¨¡£

ºËÐĵÄÖ¸µ¼Ë¼Â·¹éÄÉΪ£º

1.¹Ø×¢µã·ÅÔÚdomainÉÏ£¬½«ÒµÎñÁìÓòÏÞ¶¨ÔÚͬһÉÏÏÂÎÄÖУ¬Ê¶±ðcontext bounded

2.½µµÍÉÏÏÂÎÄÖ®¼äµÄÒÀÀµ£¬Í¨¹ý¡®¿ª·¢Ö÷»ú·þÎñ¡¯£¨REST·þÎñÊÇÆäÖеÄÒ»ÖÖ£©¡¢¡®ÏûϢģʽ¡¯¡¢¡®Ê¼þÇý¶¯¡¯µÈ¼Ü¹¹·ç¸ñʵÏÖ

3.×ñÑ­·Ö²ã¼Ü¹¹Ä£Ê½

2. ¼Ü¹¹·ç¸ñ

Õë¶ÔDDDµÄ¼Ü¹¹Éè¼Æ£¬¡¶ÊµÏÖÁìÓòÇý¶¯Éè¼Æ¡·Ìáµ½Á˼¸Öּܹ¹·ç¸ñ£ºÁù±ßÐμܹ¹¡¢REST¼Ü¹¹¡¢CQRS¡¢Ê¼þÇý¶¯µÈ¡£ÔÚʵ¼ÊʹÓÃÖУ¬Â䵨µÄ¼Ü¹¹²¢·ÇÊÇ´¿´âÆäÖеÄÒ»ÖÖ£¬¶øºÜÓпÉÄÜ»§½«ÉÏÊö¼¸Öּܹ¹·ç¸ñ½áºÏÆðÀ´ÊµÏÖ¡£

´Ë²¿·ÖÄÚÈÝÖ÷ÒªÀ´Ô´ÓÚ¡¶ÊµÏÖÁìÓòÇý¶¯Éè¼Æ¡·µÄµÚ4Õ£¬¼ÓÉÏÁË×Ô¼ºµÄһЩÀí½â¡£

Áù±ßÐμܹ¹£¨¶Ë¿ÚºÍÊÊÅäÆ÷£©

ËùνµÄÁù±ßÐμܹ¹£¬ÆäʵÊÇ·Ö²ã¼Ü¹¹µÄÀ©Õ¹£¬Ô­À´µÄ·Ö²ã¼Ü¹¹Í¨³£ÊÇÉÏÏ·ֲãµÄ£¬±ÈÈç³£¼ûµÄMVCģʽ£¬ÉϲãÊǶÔÍâµÄ·þÎñ½Ó¿Ú£¬Ï²ãÊǶԽӴ洢²ã»òÕßÊǼ¯³ÉµÚÈý·½·þÎñ£¬ÖвãÊÇÒµÎñÂß¼­²ã¡£ÎÒÃÇÌø³ö·Ö²ãµÄ¸ÅÄ»á·¢ÏÖÉÏÃæ²ãºÍÏÂÃæ²ãÆäʵ¶¼ÊǶ˿Ú+ÊÊÅäÆ÷µÄʵÏÖ£¬ÉÏÃæ²ã¿ª·Åhttp/tcp¶Ë¿Ú£¬²ÉÓÃrest/soap/mqЭÒéµÈ¶ÔÍâÌṩ·þÎñ£¬Í¬Ê±Ìṩ¶ÔӦЭÒéµÄÊÊÅäÆ÷£»Ï²ãÒ²ÊǶ˿Ú+ÊÊÅäÆ÷£¬Ö»²»¹ýÓ¦ÓóÌÐòÕâʱºò±ä³ÉÁ˵÷ÓÃÕߣ¬µÚÈý·½·þÎñ»òÕß´æ´¢²ãÌṩ¶Ë¿ÚºÍ·þÎñ£¬Ó¦ÓóÌÐò±¾ÉíʵÏÖÊÊÅ书ÄÜ¡£

»ùÓÚÉÏÊö˼¿¼£¬½«·Ö²ã½Ó¿ÚÖеÄÉϲãºÍϲãͳһÆðÀ´¾Í±ä³ÉÁËÁù±ßÐμܹ¹£¬»ùÓڶ˿ںÍÊÊÅäÆ÷µÄʵÏÖ£¬Ê¾ÒâͼÈçÏ£º

ÉÏͼÀ´Ô´ÓÚ¡¶ÊµÏÖÁìÓòÇý¶¯Éè¼Æ¡·µÄP111

ÎÒÈÏΪÁù±ßÐμܹ¹²¢·Ç´´ÔìÒ»ÖÖеļܹ¹·ç¸ñ£¬Ö»Êǽ«Ô­À´µÄ·Ö²ã¼Ü¹¹·ç¸ñÖØÐ½â¶Á£¬Ê¹µÃ¼Ü¹¹¸ü¼Ó¼ò½àͨÓá£Í¬Ê±£¬ÔÚDDDµÄÉè¼ÆË¼ÏëÏ£¬Áù±ßÐμܹ¹·ç¸ñ£¬ÈÃÁìÓòÄ£ÐÍ´¦Óڼܹ¹µÄºËÐÄÇøÓò£¬Èÿª·¢ÈËÔ±½«½¹µã¾Û¼¯µ½ÁìÓò¡£DDDºÍÁù±ßÐμܹ¹ÊÇÌìÈ»ÆõºÏµÄ£¬ÊÇDDDµÄÊ×Ñ¡¼Ü¹¹¡£

REST

REST¡ª¡ª¼´Representational State TransferµÄËõд£¬·­Òë¹ýÀ´ÊÇ"±íÏÖ²ã״̬ת»¯"¡£²Î¿¼ÖÁ£ºÀí½âRESTful¼Ü¹¹¡£

RESTful·ç¸ñµÄ¼Ü¹¹½«¡®×ÊÔ´¡¯·ÅÔÚµÚһλ£¬Ã¿¸ö¡®×ÊÔ´¡¯¶¼ÓÐÒ»¸öURIÓëÖ®¶ÔÓ¦£¬¿ÉÒÔ½«¡®×ÊÔ´¡¯¿´×ÅÊÇdddÖеÄʵÌ壻RESTful²ÉÓþßÓÐ×ÔÃèÊö¹¦ÄܵÄÏûϢʵÏÖÎÞ״̬ͨÐÅ£¬Ìá¸ßϵͳµÄ¿ÉÓÃÐÔ£»ÖÁÓÚ¡®×ÊÔ´¡¯µÄÄÄЩÊôÐÔ¿ÉÒÔ¹«¿ª³öÈ¥£¬Õë¶Ô¡®×ÊÔ´¡¯µÄ²Ù×÷£¬RESTfulʹÓÃHTTPЭÒéµÄÒÑÓз½·¨À´ÊµÏÖ£ºGET¡¢PUT¡¢POSTºÍDELETE¡£

ÔÚDDDµÄʵÏÖÖУ¬ÎÒÃÇ¿ÉÒÔ½«¶ÔÍâµÄ·þÎñÉè¼ÆÎªRESTful·ç¸ñµÄ·þÎñ£¬½«ÊµÌå/Öµ¶ÔÏó/ÁìÓò·þÎñ×÷Ϊ'×ÊÔ´'¶ÔÍâÌṩÔöɾ¸Ä²é·þÎñ¡£µ«ÊDz¢²»½¨ÒéÖ±½Ó½«ÊµÌ屩¶ÔÚÍ⣬һÀ´ÊµÌåµÄijЩÒþ˽ÊôÐÔ²¢²»ÄܶÔÍⱩ¶£¬¶þÀ´Ä³Ð©×ÊÔ´»ñÈ¡³¡¾°²¢²»ÊÇÒ»¸öʵÌå¾ÍÄÜÂú×ãµÄ£¬Òò´ËÎÒÃÇÔÚʵ¼Êʵ¼ù¹ý³ÌÖУ¬ÔÚÁìÓòÄ£ÐÍÉÏÔö¼ÓÁËdtoÕâÑùÒ»¸ö½ÇÉ«£¬dto¿ÉÒÔ×éºÏ¶à¸öʵÌå/Öµ¶ÔÏóµÄ×ÊÔ´¶ÔÍⱩ¶¡£

CQRS

CQRS¡ª¡ªCammand-Query Responsibility SegregationµÄËõд¡£·­Òë¹ýÀ´¾ÍÊÇ¡°ÃüÁîÓë²éѯְÔð·ÖÀ롱¡£

¼ò¶øÑÔÖ®£¬CQRS¾ÍÊÇÆ½³£´ó¼ÒÔÚ½²µÄ¶Áд·ÖÀ룬ͨ³£¶Áд·ÖÀëµÄÄ¿µÄÊÇΪÁËÌá¸ß²éѯÐÔÄÜ£¬Í¬Ê±´ïµ½¶Á/дµÄ½âñî¡£ÈÃDDDºÍCQRS½áºÏ£¬ÎÒÃÇ¿ÉÒÔ·Ö±ð¶Ô¶ÁºÍд½¨Ä££¬²éѯģÐÍͨ³£ÊÇÒ»Öַǹ淶»¯Êý¾ÝÄ£ÐÍ£¬Ëü²¢²»·´Ó³ÁìÓòÐÐΪ£¬Ö»ÊÇÓÃÓÚÊý¾ÝÏÔʾ£»ÃüÁîÄ£ÐÍÖ´ÐÐÁìÓòÐÐΪ£¬ÇÒÔÚÁìÓòÐÐΪִÐÐÍê³Éºó£¬Ïë°ì·¨Í¨Öªµ½²éѯģÐÍ¡£

ÄÇôÃüÁîÄ£ÐÍÈçºÎ֪ͨµ½²éѯģÐÍÄØ£¿ Èç¹û²éѯģÐͺÍÁìÓòÄ£Ð͹²ÏíÊý¾ÝÔ´£¬Ôò¿ÉÒÔʡȴÕâÒ»²½£»Èç¹ûûÓй²ÓÃÊý¾ÝÔ´£¬Ôò¿ÉÒÔ½èÖúÓÚ¡®ÏûϢģʽ¡¯£¨Messaging Patterns£©Í¨Öªµ½²éѯģÐÍ£¬´Ó¶ø´ïµ½×îÖÕÒ»ÖÂÐÔ£¨Eventual Consistency£©¡£

MartinÔÚblogÖÐÖ¸³ö£ºCQRSÊÊÓÃÓÚ¼«ÉÙÊý¸´ÔÓµÄÒµÎñÁìÓò£¬Èç¹û²»ÊǺÜÊʺϷ´¶ø»áÔö¼Ó¸´ÔÓ¶È£»ÁíÒ»¸öÊÊÓ󡾰Ϊ»ñÈ¡¸ßÐÔÄܵķþÎñ¡£

ͼƬÀ´Ô´ÓÚMartin FowlerµÄblog£¬Í¼ÖбíÊöµÄ²éѯģÐͺÍÃüÁîÄ£Ð͹²ÓÃÊý¾ÝÔ´¡£

¹ØÓÚCQRSµÄÌÖÂÛ¿ÉÒԲο¼Martin´óÊåµÄblog£ºCQRS£¬ÒÔ¼°£ºCQRS, Task Based UIs, Event Sourcing agh!

ʼþÇý¶¯

ÕâÒ»¼Ü¹¹·ç¸ñÔÚʵ¼ÊÏîÄ¿Öв¢Î´Ê¹Ó㬲»×ö¹ý¶à²ûÊö£¬¸ÐÐËȤµÄͬѧ×ÔÐÐÑо¿¡£

»Øµ½¶¥²¿

3. ¼Ü¹¹ÊµÀý

½áºÏ×î½üÔÚÖØ¹¹µÄÉçÇø·þÎñϵͳ£¨COMMUNITY£©£¬³¢ÊÔʹÓÃÉÏÊöµÄÖ¸µ¼Ë¼ÏëºÍ¼Ü¹¹·ç¸ñ£¬Íê³ÉÒ»´Î¼Ü¹¹Éè¼Æ³¢ÊÔ£¬²¢ÏêÊöÈçÏ£º

¼Ü¹¹Í¼

¼Ü¹¹ÏêÊö

COMMUNITYϵͳ¼Ü¹¹ÕûºÏÁËÁù±ßÐμܹ¹¡¢RESTful¼Ü¹¹·ç¸ñ¡¢CQRS¼Ü¹¹·ç¸ñÈýÖּܹ¹·ç¸ñ£¬²¢×ñÑ­¾­µäµÄ·Ö²ã¼Ü¹¹Ë¼Ïë¡£

1¡¢ÔÚ×ñÑ­·Ö²ã¼Ü¹¹Ë¼ÏëµÄ»ù´¡ÉÏ£¬ÒýÈëÁËÁù±ßÐμܹ¹·ç¸ñ£¬¶ÔÄÚ¶ÔÍâ¾ùͨ¹ýÊÊÅäÆ÷+¶Ë¿ÚµÄ·½Ê½³ÊÏÖ£º

ÃæÏòÓû§²à£¬Ìṩhttp¶Ë¿Ú£¬²¢Ê¹ÓÃSpringMVC¿ò¼ÜµÄRequestMapping¡¢ControllerµÈ×é¼þʵÏÖ¶Ôhttp ÇëÇóµÄ½âÎö£¬×ª»¯ÎªApplication²ã¿Éʶ±ðµÄÒµÎñdto¶ÔÏó£¬ÕâÀïµÄController+RequestMapping±ãÆð×ÅÊÊÅäÆ÷µÄ×÷Óã»

ÃæÏòµÚÈý·½·þÎñ£¬Í¨¹ýhttpclientºÍtcpclientµÄÊÊÅ䣬¿ÉÒÔ¶Ô½Ó¶àÖÖЭÒéµÄµÚÈý·½·þÎñ¶Ë¿Ú£»

ÃæÏò´æ´¢²ã£¬Í¨¹ýmongoclientµÄÊÊÅ䣬·ÃÎÊmongodb£»Í¨¹ýmybatisµÄÊÊÅ䣬·ÃÎÊoracle£»Í¨¹ýredisclientµÄÊÊÅ䣬·ÃÎÊredis£»

ÃæÏòÏûÏ¢Öмä¼þ£¬Í¨¹ýmqclientµÄÊÊÅ䣬·½ÎªrabbitMQ£»

2¡¢ÊµÏÖÁËRESTful¼Ü¹¹·ç¸ñ£¬Í¨¹ýRESTful·ç¸ñµÄ½Ó¿ÚÆõÔ¼¶ÔÍâÌṩÖ÷»ú¿ª·Å·þÎñ¡£½èÖúSpringMVCʵÏÖ¡£

3¡¢ÊµÏÖÁËCQRS¼Ü¹¹·ç¸ñ£º

orcale×÷ΪÃüÁîÄ£ÐÍ´æ´¢´æÔÚ£¬²¢ÅäÒÔTransactionÊÂÎñ¹ÜÀí¡£Ö÷Òª´æ´¢Ìû×Ó¡¢ÆÀÂÛ¡¢»°Ì⡢Ȧ×Ó¡¢¹Ø×¢µÈʵÌåÐÅÏ¢£»

Mongodb×÷Ϊ²éѯģÐÍ´æ´¢´æÔÚ£¬´æ´¢¸öÈ˶¯Ì¬¡¢ÉçÇø¶¯Ì¬µÈ·Ç½á¹¹»¯Êý¾Ý£»

redisͬÑù×÷Ϊ²éѯģÐÍ´æ´¢´æÔÚ£¬´æ´¢Óû§¸öÈËÐÅÏ¢¡¢ÈÈÃÅÆÀÂÛ¡¢ÈÈÃÅÌû×Ó¡¢ÈÈÃÅ»°Ìâ¡¢Óû§µãÔÞÐÅÏ¢µÈ£»

Application²ã·ÖΪQueryServiceºÍCommandServiceÁ½´óÀàÓ¦Ó÷þÎñ£¬·Ö±ð×éºÏ²éѯģÐͺÍÃüÁîÄ£ÐÍ£»

ʹÓÃrabbitMQ×÷ΪÏûÏ¢Öмä¼þ£¬CommandServiceÔÚÍê³ÉÃüÁîÄ£Ð͵Äά»¤ºó£¬Éú²úʼþÏûϢдÈërabbitMQ£¬QueryService×÷ΪÏû·ÑÕß´ÓrabbitMQ¶ÁȡʼþÏûÏ¢£¬¸üвéѯģÐÍ£»

²éѯģÐͺÍÃüÁîÄ£Ðͼ«Æä¶ÔÓ¦µÄapplication service¿ÉÒÔ¶ÀÁ¢²¿Ê𣬶ÀÁ¢À©Õ¹¡£

4¡¢×ñÑ­»ù±¾µÄ·Ö²ã¼Ü¹¹·ç¸ñ¡£

User Interface ¡ª¡ª Óû§½Ó¿Ú²ã¡£¶ÔÍâÌṩ¸÷ÖÖЭÒéÐÎʽµÄ·þÎñ£¬²¢ÌṩValidation²ÎÊýУÑ飬authenticateȨÏÞÈÏÖ¤£¬ÒµÎñʵÌå×é×°Æ÷AssemblerµÈ¡£Í¼ÖбêÂÌ×é¼þ¡£

Application ¡ª¡ª Ó¦Ó÷þÎñ²ã¡£×éºÏ¶à¸öÒµÎñʵÌå¡¢»ù´¡ÉèÊ©²ãµÄ¸÷ÖÖ×é¼þÍê³ÉÒµÎñ·þÎñ¡£Í¼ÖÐ±ê»Æ²¿·Ö¡£

Domain ¡ª¡ª ÒµÎñÁìÓò²ã¡£DDD¸ÅÄîÖеĺËÐÄÒµÎñ²ã£¬·â×°ËùÓÐÒµÎñÂß¼­£¬°üº¬entity¡¢value object¡¢domain service¡¢domain eventµÈ¡£Í¼ÖбêÀ¶²¿·Ö¡£

Infrastructure ¡ª¡ª »ù´¡ÉèÊ©²ã¡£Ìṩ¹«¹²×é¼þ£¬È磺Logging¡¢Trascation¡¢HttpClientµÈ¡£Í¼Öбê»Ò²¿·Ö¡£

   
45764 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ