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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Èí¼þ¼Ü¹¹Ä£Ê½
 
À´Ô´£ºcolobu.com ·¢²¼ÓÚ:2017-5-27
  3588  次浏览      27
 

±¾ÎÄÊÇÎÒÔÚÔĶÁO'ReillyÃâ·ÑµÄµç×ÓÊé Software Architecture Patterns¹ý³ÌÖÐ×öµÄ±Ê¼Ç¡£

Ê×ÏÈÕâ±¾Êé·Ç³£Ð£¬2015Äê3ÔÂ30ºÅ¶©Õýºó·¢²¼¡£Æä´Î½«Ä¿Ç°Á÷Ðеļ¸Öּܹ¹Ïêϸ½øÐÐÁËÆÊÎöºÍ±È½Ï£¬³ýÁË´«Í³µÄN²ã¼Ü¹¹Í⣬ÆäËü¼Ü¹¹Ï൱µÄÇ°ÑØ¡£²¢ÇÒ£¬ÕâÆªÐ¡ÊéÁ¬´ø·âÃæ²Å55Ò³£¬¶ÌС¾«º·£¬ÖµµÃÒ»¶Á¡£Õâ±¾ÊéµÄ×÷ÕßÊÇ Mark Richards£¬ÓÐ30¶àÄêÐÐÒµ¾­Ñ飬19ÄêÈí¼þ¼¯³É£¬ÆóÒµ¼¶¼Ü¹¹µÄ¾­Ñ飬´ó²¿·ÖÊÇJavaƽ̨£¬Ò²³ö°æÁ˶౾ÊéºÍÂÛÎÄ¡£

Èç¹ûÄãûÓÐʱ¼äÈ¥ÔĶÁÕâ±¾Ê飬ÄÇô²»·Á¿´Ò»Ï±¾ÆªÎÄÕ¡£ ÎÒÔڱʼÇÖн«ÊéÖеÄÖ÷Ҫ֪ʶµã¶¼¼Ç¼ÏÂÀ´¡£

²»ÏȽøÐÐÕýʽµÄ¼Ü¹¹Éè¼Æ¾ÍÖ±½Ó¿ª·¢¶ÔÓÚ³ÌÐòÔ±À´ËµÔÙÆÕͨ²»¹ýÁË¡£Ã»ÓÐÇåÎúºÍºÜºÃµÄ¼Ü¹¹Éè¼Æ£¬´ó²¿·Ö³ÌÐòÔ±ºÍ¼Ü¹¹Ê¦Êµ¼ÊÉÏ»á²ÉÓô«Í³µÄ·Ö²ãµÄ¼Ü¹¹Ä£Ê½£¬ ×ÔÈ»µØ½«´úÂëÄ£¿é·Ö¸ô³É¼¸¸ö°ü(package)¡£²»ÐÒµØÊÇ£¬ÕâÖÖ×ö·¨¾­³£µ¼ÖÂδÄܺúÃ×éÖ¯´úÂëÄ£¿é£¬ÕâЩģ¿éȱ·¦ÇåÎúµÄ½ÇÉ«£¬ÔðÈÎÒÔ¼°Ï໥¹ØÏµ¡£Õâ¾­³£±»³ÉΪ´óÄàÇò·´Ä£Ê½¡£

ûÓнøÐмܹ¹Éè¼ÆµÄÓ¦ÓóÌÐòͨ³£ÊǽôñîºÏµÄ£¬²£Á§ÐÄ£¬ÄÑÒԸı䣬ûÓÐÍ·Ð÷¡£Èç¹û²»Àí½âÓ¦Óõĸ÷¸ö×é¼þµÄÄÚ²¿¹¤×÷·½Ê½µÄ»°ºÜÄÑ¿´ÇåËüµÄ¼Ü¹¹ÌØÕ÷¡£¹ØÓÚ²¿ÊðºÍά»¤µÄÎÊÌâ¶¼ºÜÄѻش𣺼ܹ¹µÄ¹æÄ£ÈçºÎ£¿³ÌÐòµÄÐÔÄÜÈçºÎ£¿³ÌÐòÈÝÒ×ÐÞ¸ÄÂ𣿳ÌÐòµÄ²¿ÊðÄ£ÐÍÊÇÔõôÑù£¿³ÌÐòµÄÏìÓ¦ÈçºÎ£¿

¼Ü¹¹Ä£Ê½¿ÉÒÔ°ïÖúÄ㶨Òå³ÌÐòµÄ»ù±¾ÌØÕ÷ºÍÐÐΪ¡£ÀýÈçһЩ¼Ü¹¹Ä£Ê½ºÜ×ÔÈ»ÈóÌÐò³ÉΪ´ó¹æÄ£(scalable)µÄ³ÌÐò¡£ÓÐЩģʽÈóÌÐò±äµÃÁéÇÉÃô½Ý(agile)¡£ÖªµÀÕâЩ¼Ü¹¹µÄÌØÕ÷£¬ÓŵãºÍȱµã£¬Äã¾Í¿ÉÒÔ¸ù¾ÝÄãÌØ¶¨µÄÒµÎñÐèÇóºÍÄ¿±ê´ÓÈݵÄÑ¡ÔñÒ»Öּܹ¹Ä£Ê½¡£

×÷Ϊһλ¼Ü¹¹Ê¦£¬Äã×Ü»áΪ×Ô¼º¼Ü¹¹Ñ¡Ôñ×ö½âÊÍ£¬ÓÈÆäÄãÑ¡ÔñÒ»¸öÌØ±ðµÄ¼Ü¹¹Ä£Ê½µÄʱºò¡£O'ReillyµÄÕâ±¾ÊéÌṩÁ˳ä×ãµÄÐÅÏ¢À´ÎªÄãµÄ¼Ü¹¹Ñ¡ÔñÌṩ֤Ã÷¡£

·Ö²ã¼Ü¹¹ (Layered Architecture)

ËüÊÇ×îͨÓõļܹ¹£¬Ò²±»½Ð×öN²ã¼Ü¹¹Ä£Ê½(n-tier architecture pattern)¡£ÕâÒ²ÊÇJava EEÓ¦Óþ­³£²ÉÓõıê׼ģʽ¡£»ù±¾ÉÏÊǸö³ÌÐòÔ±¶¼ÖªµÀËü¡£ÕâÖּܹ¹Ä£Ê½·Ç³£Êʺϴ«Í³µÄITͨÐźÍ×éÖ¯½á¹¹£¬ºÜ×ÔÈ»µØ³ÉΪ´ó²¿·ÖÓ¦ÓõĵÚÒ»¼Ü¹¹Ñ¡Ôñ¡£

ģʽÃèÊö

ÔÚ·Ö²ã¼Ü¹¹ÖеÄ×é¼þ±»»®·Ö³É¼¸¸ö²ã£¬Ã¿¸ö²ã´ú±íÓ¦ÓõÄÒ»¸ö¹¦ÄÜ¡£·Ö²ã¼Ü¹¹±¾ÉíûÓй涨Ҫ·Ö³É¶àÉٲ㣬´ó²¿·ÖµÄÓ¦Óûá·Ö³É±íÏֲ㣬ҵÎñ²ã£¬³Ö¾Ã²ãºÍÊý¾Ý¿â²ã¡£Ð¡µÄÓ¦ÓÃÓÐʱºò»á½«ÒµÎñ²ãºÍ³Ö¾Ã²ãºÏÔÚÒ»Æð£¬¸ü´ó¹æÄ£µÄÓ¦ÓÿÉÄܻỮ·Ö¸ü¶àµÄ²ã£¬±ÈÈçµ÷ÓÃÍⲿ·þÎñµÄ²ã¡£

ÿһ²ã¶¼ÓÐÌØ¶¨µÄ½ÇÉ«ºÍÖ°ÄÜ¡£

·Ö²ã¼Ü¹¹µÄÒ»¸öÌØÐÔ¾ÍÊǹØ×¢·ÖÀë(separation of concerns)¡£ÔÚ²ãÖеÄ×é¼þÖ»¸ºÔð±¾²ãµÄÂß¼­¡£×é¼þµÄ»®·ÖºÜÈÝÒ×ÈÃËüÃÇʵÏÖ×Ô¼ºµÄ½ÇÉ«ºÍÖ°Ôð£¬Ò²±È½ÏÈÝÒ׵ؿª·¢£¬²âÊÔ¹ÜÀíºÍά»¤¡£

¹Ø¼ü¸ÅÄî

×¢Òâÿһ²ã¶¼ÊÇ·â±ÕµÄ¡£ÕâÒâζ×ÅRequest±ØÐë¾­¹ýÿһ²ã²ÅÄܵ½´ï×îµ×ÏÂÒ»²ã¡£

Ϊʲô²»ÔÊÐíչʾ²ãÖ±½Ó·ÃÎÊÊý¾Ý¿â²ãÄØ£¬ÕâÑù²»ÊǸü¿ìÂð£¿Õâ¾ÍÊÇ·Ö²ã¼Ü¹¹µÄÁíÒ»¸öÌØÕ÷£º²ã¸ôÀë(layers of isolation)¡£

²ã¸ôÀëµÄ¸ÅÄîÒâζ×ÅÄã¶ÔÈκÎÒ»²ãµÄ¸Ä±ä¶¼²»»áÓ°ÏìÆäËü²ã¡£ÕâºÜºÃÀí½â¡£

²ã¸ôÀëÒ²Òâζ×ÅÒ»¸ö²ãµÄ×é¼þ²¢²»»áÁ˽âÆäËü²ãµÄʵÏÖ£¬»òÕßÖªµÀºÜÉÙ¡£ ±ÈÈçÒµÎñ²ã²»ÐèÖªµÀÄã³Ö¾Ã²ãÊÇÓÉhibernate»¹ÊÇmybatisʵÏֵġ£

·Ö²ã¼Ü¹¹Ò²ºÜÈÝÒ×Ôö¼ÓеIJ㡣 ±ÈÈçÄãÏ뽫һЩͨÓõķþÎñÖØ¹¹³ÉÒ»¸ö·þÎñ²ã£¬±ÈÈçͨÓÃͼƬ´¦Àí£¬Ô¶³ÌÕË»§Éó¼ÆµÈ£¬¿ÉÒÔÔÚÒµÎñ²ãÏÂÔö¼ÓÒ»¸ö·þÎñ²ã¡£Ëü²»»á¶Ôչʾ²ãÔì³ÉÓ°Ï죬Ҳ²»»á¸Ä±ä³Ö¾Ã²ãµÄ´úÂë¡£

ÉÏÃæµÄÕâ¸öÀý×Ó´øÀ´Ò»¸öÎÊÌ⣬ÒòΪÿһ²ã¶ªÊ§·â±ÕµÄ£¬ÒµÎñ²ã²»µÃ²»Í¨¹ý·þÎñ²ã·ÃÎʳ־ò㣬ÕâûÓÐÌìÀí°¡¡£ ËùÒÔÓÐʱºòÄã»á´´½¨Ò»¸ö¿ª·ÅµÄ²ã¡£ÕâÒâζ×ÅÉÏÒ»²ã¿ÉÒÔÈÆ¹ýÕâÒ»²ãÖ±½Ó·ÃÎÊÏÂÒ»²ã¡£

¼Ü¹¹Àý×Ó

ÎÒÃÇ¿´Ò»ÏÂÌÔ±¦Ç°¼¸ÄêµÄ¼Ü¹¹µÄÀý×Ó¡£

ÕâÊÇÒ»¸ö±ê×¼µÄ·Ö²ãµÄ¼Ü¹¹¡£Ã¿Ò»²ãÖÐÓÖ¿ÉÒÔÏêϸµÄ·Ö³É¸üϸµÄ²ã£¬±ÈÈç·þÎñ²ã¡£

Χ×Å×ÅÕâ¸öÖ÷¼Ü¹¹»¹ÓÐһЩÍâΧµÄ²úÆ·¡£±ÈÈç¼à¿ØºÍÉ󼯡£

¼Ü¹¹¿¼Á¿

·Ö²ã¼Ü¹¹ÊÇÒ»¸ö¿É¿¿µÄͨÓõļܹ¹£¬¶ÔºÜ¶àÓ¦ÓÃÀ´Ëµ£¬Èç¹ûÄ㲻ȷ¶¨ÄÄÖּܹ¹ÊʺÏÄãµÄÓ¦Ó㬿ÉÒÔÓÃËü×÷Ϊһ¸ö³õʼ¼Ü¹¹¡£

µÚÒ»¸öҪעÒâµÄÊÇÎÛË®³Ø·´Ä£Ê½(architecture sinkhole anti-pattern).Õâ¸ö·´Ä£Ê½ÊÇÕâÑùµÄ£¬ÇëÇóÁ÷¼òµ¥µÄ´©¹ý¼¸¸ö²ã£¬Ã¿²ãÀïÃæ»ù±¾Ã»ÓÐ×öÈκÎÒµÎñÂß¼­£¬»òÕß×öÁ˺ÜÉÙµÄÒµÎñÂß¼­¡£±ÈÈçһЩJavaEEÀý×Ó£¬ÒµÎñÂß¼­²ãÖ»ÊǼòµ¥µÄµ÷ÓÃÁ˳־òãµÄ½Ó¿Ú£¬±¾ÉíûÓÐʲôҵÎñÂß¼­¡£

ÿһ²ã»ò¶à»òÉÙ¶¼ÓпÉÄÜÓöµ½ÕâÑùµÄ³¡¾°¡£¹Ø¼üÊÇ·ÖÎöÕâÑùµÄÇëÇóµÄ°Ù·Ö±ÈÊǶàÉÙ¡£80-20Ô­Ôò¿ÉÒÔ°ïÖúÄã¾ö¶¨ÊÇ·ñÕýÔÚÓöµ½ÎÛË®³Ø·´Ä£Ê½¡£Èç¹ûÄãµÄÇëÇ󳬹ý20%£¬ÄãÓ¦¸Ã¿¼ÂÇÈÃһЩ²ã±ä³É¿ª·ÅµÄ¡£

ÁíÒ»¸öÐèÒª¿¼ÂǵÄÊÇ·Ö²ã¼Ü¹¹¿ÉÄÜ»áÈÃÄãµÄÓ¦ÓñäµÃÅӴ󣬼´Ê¹ÄãµÄչʾ²ãºÍÒµÎñ²ã¿ÉÒÔ¶ÀÁ¢·¢²¼£¨±ÈÈçչʾ²ãʹÓõ¥Ò³¼¼Êõ¿ò¼ÜAngularJS, EmberJS£©¡£

ËüµÄÈ·»á´øÀ´Ò»Ð©Ç±ÔÚµÄÎÊÌ⣬±ÈÈç·Ö²¼Ä£Ê½¸´ÔÓ£¬½¡×³ÐÔϽµ£¬¿É¿¿ÐÔ£¬ÐÔÄܺ͹æÄ£µÈ¡£

ģʽ·ÖÎö

×ÜÌåÁé»îÐÔ£º µÍ

·¢²¼Ò×ÓÃÐÔ£º µÍ

¿É²âÊÔÐÔ£º ¸ß

ÐÔÄÜ£º µÍ

¹æÄ£À©Õ¹ÐÔ£º µÍ

¿ª·¢ÈÝÒ×¶È£º ¸ß

ʼþÇý¶¯¼Ü¹¹ (Event-Driven Architecture)

ʼþÇý¶¯¼Ü¹¹ÊÇÒ»¸öÁ÷Ðеķֲ¼Ê½Òì²½¼Ü¹¹Ä£Ê½£¬¿ÉÒÔÓÃÀ´Éè¼Æ¹æÄ£ºÜ´óµÄÓ¦ÓóÌÐò¡£»ùÓÚÕâÖּܹ¹Ä£Ê½Ó¦Óÿɴó¿ÉС¡£ËüÓɸ߶ȽâñîµÄ£¬µ¥Ò»Ä¿µÄµÄʼþ´¦Àí×é¼þ×é³É£¬¿ÉÒÔÒì²½µØ½ÓÊպʹ¦Àíʼþ¡£

Ëü°üÀ¨Á½¸öÖ÷ÒªµÄÍØÆË½á¹¹£ºmediator ºÍ broker¡£MediatorÍØÆË½á¹¹ÐèÒªÄãÔÚÒ»¸öʼþͨ¹ýmediatorʱ¾«Ðİ²Åźü¸¸ö²½Ö裬¶øbrokerÍØÆË½á¹¹ÎÞÐèmediator£¬¶øÊÇÓÉÄã´®ÁªÆð¼¸¸öʼþ¡£ÕâÁ½ÖÖÍØÆË¼Ü¹¹µÄÌØÕ÷ºÍʵÏÖÓкܴóµÄ²»Í¬£¬ËùÒÔÄãÐèÒªÖªµÀÄÄÒ»¸öÊʺÏÄã¡£

MediatorÍØÆË½á¹¹

MediatorÍØÆË½á¹¹ÊʺÏÓжà¸ö²½ÖèµÄʼþ£¬ÐèÒª°²ÅÅ´¦Àí²ã´Î¡£

ÀýÈ繺ÂòÒ»Ö»¹ÉƱ£¬Ê×ÏÈ»áУÑéÕâ¸ö½»Ò×£¬Ð£Ñé¹ÉƱ½»Ò×ÊÇ·ñ·ûºÏ¸÷Öֹ涨£¬½«Ëü½»¸øÒ»¸ö¾­¼ÍÈË£¬¼ÆËãÓ¶½ð£¬×îºóÈ·ÈϽ»Òס£ËùÓÐÕâЩ¶¼°²Åźø÷¸ö²½ÖèµÄ˳Ðò£¬¾ö¶¨ËüÃÇÊÇ·ñ´®Ðл¹ÊDz¢ÐС£

Ëü°üÀ¨Ëĸö×é¼þ£ºevent queues, an event mediator, event channels ºÍ event processors¡£

ʼþÁ÷ÊÇÕâÑù¿ªÊ¼µÄ£º ¿Í»§¶Ë·¢ËÍÒ»¸öʼþµ½Ê¼þ¶ÓÁÐ(event queues)ÖУ¬ËüÓÃÀ´½«Ê¼þ´«Ë͸øevent mediator¡£Event mediatorÊÕµ½³õʼµÄʼþºó£¬»á·¢ËͶîÍâµÄһЩÒ첽ʼþ¸øevent channelsÀ´Ö´Ðд¦ÀíµÄÿ¸ö²½Öè¡£Event processors¼àÌýevent channels,½ÓÊÕʼþ²¢´¦ÀíһЩҵÎñÂß¼­¡£

ÔÚʼþÇý¶¯¼Ü¹¹ÖÐÓÐÊ®¼¸¸öÉõÖÁ¼¸°Ù¸öʼþ¶ÓÁж¼ºÜÕý³£¡£Ä£Ê½±¾ÉíûÓÐÏÞ¶¨Ê¼þ¶ÓÁеÄʵÏÖ·½Ê½¡£Ëü¿ÉÄÜÊÇÒ»¸öÏûÏ¢¶ÓÁУ¬Ò»¸öweb service»òÕ߯äËü¡£

ÕâÀïÓÐÁ½ÖÖʼþ£º³õʼʼþºÍ´¦Àíʼþ¡£Mediator»á½«³õʼʼþ±àÅųɴ¦Àíʼþ¡£ËüûÓоßÌåµÄÒµÎñÂß¼­£¬Ö»ÊÇÒ»¸öЭµ÷Õߣ¬¸ºÔ𽫳õʼʼþת»¯³ÉÒ»¸ö»òÕß¶à¸ö´¦Àíʼþ¡£

event channels ¼È¿ÉÒÔÊÇÏûÏ¢¶ÓÁУ¬Ò²¿ÉÒÔÊÇÏûÏ¢topic£¬´ó²¿·ÖÊÇÏûÏ¢topic£¬ÕâÑù¿ÉÒÔÓɶà¸öÏûÏ¢´¦ÀíÆ÷(event processor)´¦Àíͬһ¸öÏûÏ¢¡£

ÏûÏ¢´¦ÀíÆ÷°üº¬Êµ¼ÊµÄÒµÎñÂß¼­¡£Ã¿¸öÏûÏ¢´¦ÀíÆ÷¶¼ÊÇ×Ô°üº¬µÄ£¬¶ÀÁ¢µÄ£¬¸ß¶È½âñîµÄ£¬Ö´Ðе¥Ò»µÄÈÎÎñ¡£

ÕâÖÖģʽ¿ÉÄÜÓÐһЩ±äÖÖ¡£×÷Ϊ¼Ü¹¹Ê¦£¬ÄãÓ¦¸ÃÀí½âÿ¸öʵÏÖµÄϸ½Ú£¬È·±£ÕâÖÖ½â¾ö·½°¸ÊʺÏÄãµÄÐèÇó¡£

ÓÐһЩ¿ªÔ´µÄ¿ò¼ÜʵÏÖÁËÕâÖּܹ¹£¬ÈçSpring Integration, Apache Camel, »òÕß Mule ESB¡£

BrokerÍØÆË¼Ü¹¹

Broker²»Í¬ÓÚÉÏÃæµÄ½á¹¹£¬ËüûÓÐÖÐÐĵÄMediator¡£ËùÓеÄʼþ´®ÁªÆðÀ´Í¨¹ýÒ»¸öÇáÁ¿¼¶µÄÏûÏ¢brokerÈçRabbitMQ£¬ActiveMQ£¬HornetQµÈ¡£Èç¹ûÄãµÄÏûÏ¢±È½Ï¼òµ¥£¬²»ÐèÒªÖØÐ±àÅÅ£¬¾Í¿ÉÒÔʹÓÃÕâÖֽṹ¡£

ÈçͼËùʾ£¬Ëü°üº¬Á½¸ö×é¼þbrokerºÍ event processor¡£

brokerÖеÄevent channel¿ÉÒÔÊÇÏûÏ¢¶ÓÁУ¬ÏûÏ¢topic»òÕßËüÃǵĸ´ºÏÐÎʽ¡£

ÿ¸öevent processor¸ºÔð´¦Àíʼþ£¬·¢²¼ÐµÄʼþ¡£

¼Ü¹¹Àý×Ó

ÔÚÐÂÀË΢²©µÄÔçÆÚ¼Ü¹¹ÖУ¬Î¢²©·¢²¼Ê¹ÓÃͬ²½ÍÆÄ£Ê½£¬Óû§·¢±í΢²©ºóϵͳ»áÁ¢¼´½«ÕâÌõ΢²©²åÈëµ½Êý¾Ý¿âËùÓзÛË¿µÄ¶©ÔÄÁбíÖУ¬µ±Óû§Á¿±È½Ï´óʱ£¬ÌرðÊÇÃ÷ÐÇÓû§·¢²¼Î¢²©Ê±£¬»áÒýÆð´óÁ¿µÄÊý¾Ý¿âд²Ù×÷£¬³¬³öÊý¾Ý¿â¸ºÔØ£¬ÏµÍ³ÐÔÄܼ±¾çϽµ£¬Óû§ÏìÓ¦ÑӳټӾ硣ºóÀ´ÐÂÀË΢²©¸ÄÓÃÒì²½ÍÆÀ­½áºÏµÄģʽ£¬Óû§·¢±í΢²©ºóϵͳ½«Î¢²©Ð´ÈëÏûÏ¢¶ÓÁкóÁ¢¼´·µ»Ø£¬Óû§ÏìӦѸËÙ£¬ÏûÏ¢¶ÓÁÐÏû·ÑÕßÈÎÎñ½«Î¢²©ÍÆË͸øËùÓе±Ç°ÔÚÏß·ÛË¿µÄ¶©ÔÄÁбíÖУ¬·ÇÔÚÏßÓû§µÇ¼ºóÔÙ¸ù¾Ý¹Ø×¢ÁбíÀ­È¡Î¢²©¶©ÔÄÁÐ±í¡£

¼Ü¹¹¿¼Á¿

ʼþÇý¶¯¼Ü¹¹Ä£Ê½ÊµÏÖÆðÀ´Ïà¶Ô¸´ÔÓ£¬Ö÷ÒªÊÇÓÉÓÚËüµÄÒì²½ºÍ·Ö²¼Ê½ÌØÐÔ¡£Õâ¿ÉÄÜ»á´øÀ´Ò»Ð©·Ö²¼Ê½µÄÎÊÌ⣬±ÈÈçÔ¶³Ì´¦ÀíµÄ¿ÉÓÃÐÔ£¬È±·¦ÏìÓ¦£¬brokerÖØÁ¬µÈÎÊÌâ¡£

Ò»¸ö¿¼ÂÇÊÇÕâÖÖģʽ¶ÔÓÚµ¥Ò»µÄÂß¼­È±·¦Ô­×ÓÊÂÎñ¡£ËùÒÔÄãÐèÒª½«Ô­×ÓÊÂÎñ½»¸øÒ»¸öʼþ´¦ÀíÆ÷Ö´ÐУ¬¿çʼþ´¦ÀíÆ÷µÄÔ­×ÓÊÂÎñÊǺÜÀ§Äѵġ£

×îÀ§ÄѵÄÉè¼ÆÖ®Ò»ÊÇʼþ´¦ÀíÆ÷µÄ´´½¨£¬Î¬»¤ºÍ¹ÜÀí¡£Ê¼þͨ³£ÓÐÌØÊâµÄÔ¼¶¨£¨Êý¾ÝÖµºÍ¸ñʽ£©¡£

ģʽ·ÖÎö

×ÜÌåÁé»îÐÔ£º ¸ß

·¢²¼Ò×ÓÃÐÔ£º ¸ß

¿É²âÊÔÐÔ£º µÍ

ÐÔÄÜ£º ¸ß

¹æÄ£À©Õ¹ÐÔ£º ¸ß

¿ª·¢ÈÝÒ×¶È£º µÍ

΢Äں˼ܹ¹ (Microkernel Architecture)

΢Äں˼ܹ¹Ä£Ê½Í¨³£ÓÖ±»³ÉΪ²å¼þ¼Ü¹¹Ä£Ê½£¬¿ÉÒÔÓÃÀ´ÊµÏÖ»ùÓÚ²úÆ·µÄÓ¦ÓÃ, ±ÈÈçEclipse£¬ÔÚ΢Äں˵Ļù´¡ÉÏÌí¼ÓһЩ²å¼þ£¬¾Í¿ÉÒÔÌṩ²»Í¬µÄ²úÆ·£¬ÈçC++, JavaµÈ¡£

ģʽÃèÊö

΢Äں˰üº¬Á½¸ö×é¼þ£º core system ºÍ plug-in modules¡£Ó¦ÓÃÂß¼­±»·Ö¸ô³ÉºËÐÄϵͳºÍ²å¼þÄ£¿é£¬¿ÉÒÔÌṩ¿ÉÀ©Õ¹µÄ£¬Áé»îµÄ£¬ÌØÐÔ¸ôÀëµÄ¹¦ÄÜ¡£

ģʽÀý×Ó

Eclipse IDEÊǵ±Ö®ÎÞÀ¢µÄ΢Äں˵ľø¼ÑÀý×ÓÖ®Ò»¡£

¼Ü¹¹¿¼Á¿

΢Äں˵ļܹ¹Ä£Ê½¿ÉÒÔǶÈëµ½ÆäËüµÄ¼Ü¹¹Ä£Ê½Ö®ÖС£Î¢Äں˼ܹ¹Í¨¹ý²å¼þ»¹¿ÉÒÔÌṩÖð²½ÑÝ»¯µÄ¹¦ÄܺÍÔöÁ¿¿ª·¢¡£ËùÒÔÈç¹ûÄãÒª¿ª·¢»ùÓÚ²úÆ·µÄÓ¦Óã¬Î¢ÄÚºËÊDz»¶þÑ¡Ôñ¡£

ģʽ·ÖÎö

×ÜÌåÁé»îÐÔ£º ¸ß

·¢²¼Ò×ÓÃÐÔ£º ¸ß

¿É²âÊÔÐÔ£º ¸ß

ÐÔÄÜ£º ¸ß

¹æÄ£À©Õ¹ÐÔ£º µÍ

¿ª·¢ÈÝÒ×¶È£º µÍ

΢·þÎñ¼Ü¹¹

×÷Ϊµ¥Ò»ÕûÌåµÄ³ÌÐòºÍÃæÏò·þÎñ¼Ü¹¹µÄÌæ´úÕߣ¬ ΢·þÎñ¼Ü¹¹Ä£Ê½ÔÚ¹¤Òµ½çºÜ¿ìÓ®µÃÁ˵ØÎ»¡£ÕâÖÖģʽ»¹ÔÚ½ø»¯Ö®ÖУ¬ÔÚÒµ½ç¶ÔÓÚËüµÄÌØÐÔºÍʵÏÖ»¹ÓÐЩÀ§»ó¡£OreillyµÄСÊéÌṩÁËÕâÖÖģʽ¹Ø¼üµÄ¸ÅÄîºÍ»ù´¡ÖªÊ¶£¬ÓÃÀ´ÅжÏÕâÖּܹ¹ÊÇ·ñÊʺÏÄãµÄÓ¦Óá£

ģʽÃèÊö

²»¹ÜÄãʹÓúÎÖÖʵÏÖ·ç¸ñºÍÍØÆË£¬Óм¸¸öͨÓõĺËÐĸÅÄîÓ¦ÓÃÔÚÕâÖּܹ¹Ä£Ê½ÉÏ¡£Ê×ÏÈÊÇ·Ö¸ô·¢²¼µ¥Ôª£¨separately deployed units£©¡£

ÈçͼËùʾ£¬Ã¿Ò»¸ö΢Äں˵Ä×é¼þ¶¼±»·Ö¸ô³ÉÒ»¸ö¶ÀÁ¢µÄµ¥Ôª¡£

΢·þÎñ°üº¬·þÎñ×é¼þ£¨service component£©¡£²»Òª¿¼ÂÇ΢Äں˵ĵ¥¸ö·þÎñ£¬¶øÊÇ×îºÃ¿¼ÂÇ·þÎñ×é¼þ£¬´ÓÁ£¶ÈÉϽ²Ëü¿ÉÒÔÊǵ¥Ò»µÄÄ£¿é»òÕßÒ»¸öÒ»¸ö´óµÄÓ¦ÓóÌÐò£¬´ú±íµ¥Ò»¹¦ÄÜ£¨ÌṩÌìÆøÔ¤±¨»òÕßͼƬ´æ´¢£©¡£

ÕýÈ·Éè¼Æ·þÎñ×é¼þµÄÁ£¶ÈÊÇÒ»¸öºÜ´óµÄÌôÕ½¡£

ÁíÒ»¸ö¹Ø¼ü¸ÅÄîÊÇ΢ÄÚºËÊÇ·Ö²¼Ê½µÄ¡£ÕâÒâζ×Å·þÎñ×é¼þ¿ÉÄÜÊÇÔ¶³Ì·½·¨£¨Í¨¹ýJMS, AMQP, REST, SOAP, RMI......µÈµÈ£©¡£·Ö²¼Ê½Òâζ×ÅÕâÖÖģʽ¿ÉÒÔ½¨Á¢´ó¹æÄ£µÄÓ¦Óá£

ÁíÒ»¸öÖµµÃÐ˷ܵÄÌØÐÔÊÇËü¿ÉÒÔ´ÓÆäËüÓÐÎÊÌâµÄ¼Ü¹¹Ä£Ê½ÖÐÑÝ»¯³öÀ´£¬¶ø²»ÊÇÖ±½Ó´´½¨³öÀ´µÈ´ýÎÊÌâ·¢Éú¡£µ±ÄãÓöµ½Ò»Ð©ÎÞ·¨½â¾öµÄÎÊÌâ£¬ÌØ±ðÊÇ»¥ÁªÍøÆóÒµµÄ¹æÄ£À©´óʱ£¬ÊǺܺõÄÒýÈë΢·þÎñ¼Ü¹¹µÄʱ»ú¡£

Ò»°ã»á´ÓÁ½¸öģʽÖÐÑÝ»¯¡£

Ò»ÖÖ¾ÍÊÇÒ»¿ªÊ¼¾ÍÊÇÕûÌåµÄÓ¦Óã¬ËùÓеÄÄ£¿é¶¼ÊǽôñîºÏµÄ¡£ÁíÍâÒ»ÖÖÊÇÃæÏò·þÎñµÄ¼Ü¹¹Ä£Ê½(SOA£¬service-oriented architecture pattern)¡£SOA²»ÊDz»ºÃ£¬µ«ÊÇÌ«°º¹óÁË£¬²»ºÃÀí½âºÍʵÏÖ¡£

Ä£Ê½ÍØÆË

ÓкܶàʵÏÖ΢·þÎñµÄ·½Ê½¡£×îͨÓÃ×îÁ÷ÐеÄÈý¸ö·½Ê½ÊÇ: API REST-based, applicaiton REST-based ºÍ ÖÐÐÄ»¯µÄÏûÏ¢¡£

API REST-based ÊʺÏÍøÕ¾ÌṩС¹æÄ£µÄ£¬×Ô°üº¬µÄ·þÎñ¡£ºÜ¶à»¥ÁªÍøÍøÕ¾¶¼ÌṩÕâÑùµÄ·þÎñ£¬±ÈÈçOAuth2·þÎñ¡£

application REST-based²»Í¬ÓÚÉÏÃæµÄ¼Ü¹¹£¬¿Í»§¶Ë¿´µ½µÄÊÇweb½çÃæ»òÕ߸»¿Í»§¶Ë³ÌÐò£¬¶ø²»Êǵ÷ÓÃAPI¡£UI²ã¶ÀÁ¢·¢²¼£¬¿ÉÒÔ·ÃÎÊ·þÎñ×é¼þ¡£

ÖÐÐÄÏûϢģʽ£¬ËüÀàËÆÇ°ÃæµÄģʽ£¬µ«ÊÇʹÓÃÒ»¸öÇáÁ¿¼¶µÄÏûÏ¢brokerÈ¡´úRESTfulµÄ·þÎñµ÷Óá£Õâ¸öÇáÁ¿¼¶µÄbroker²»»áÖ´ÐзþÎñµÄ±àÅÅ£¬´«ÊäºÍ·ÓÉ£¬ÕâºÍSOA²»Í¬£¬²»Òª°ÑËü¿´×÷SOAµÄ¼ò»¯°æ¡£

¼Ü¹¹¿¼Á¿

΢·þÎñ¼Ü¹¹½â¾öÁËÎ޼ܹ¹µÄÕûÌå±àÂëµÄÓ¦ÓõÄÎÊÌâÒÔ¼°SOAµÄÎÊÌ⡣ͬʱËü»¹¿ÉÒÔÌṩʵʱµÄ²úÆ··¢²¼¡£

ËüÊÇÒ»¸ö·Ö²¼Ê½¼Ü¹¹£¬Ò²»áÓÐÉÏÃæ·Ö²¼Ê½µÄÎÊÌâ¡£

ģʽ·ÖÎö

×ÜÌåÁé»îÐÔ£º ¸ß

·¢²¼Ò×ÓÃÐÔ£º ¸ß

¿É²âÊÔÐÔ£º ¸ß

ÐÔÄÜ£º µÍ

¹æÄ£À©Õ¹ÐÔ£º ¸ß

¿ª·¢ÈÝÒ×¶È£º ¸ß

»ùÓÚ¿Õ¼äµÄ¼Ü¹¹ (Space-Based Architecture)

»ùÓÚ¿Õ¼äµÄ¼Ü¹¹ÓÐʱºòÒ²±»³ÉΪ»ùÓÚÔÆµÄ¼Ü¹¹¡£

´ó²¿·ÖµÄ»ùÓÚwebµÄÓ¦ÓõÄÒµÎñÁ÷¶¼ÊÇÒ»ÑùµÄ¡£ ¿Í»§¶ËµÄÇëÇó·¢Ë͸øweb·þÎñÆ÷£¬È»ºóÊÇÓ¦Ó÷þÎñÆ÷£¬×îºóÊÇÊý¾Ý¿â·þÎñÆ÷¡£¶ÔÓÚÓû§ºÜСʱ²»»áÓÐÎÊÌ⣬µ«ÊǸºÔØÔö´óʱ¾Í»áÓöµ½Æ¿¾±£¨ÏëÏëÇÀ»ð³µÆ±£©¡£Ê×ÏÈÊÇweb·þÎñÆ÷³Å²»×¡£¬web·þÎñÆ÷ÄܳÅסӦÓ÷þÎñÆ÷ÓÖ²»ÐУ¬È»ºóÊÇÊý¾Ý¿â·þÎñÆ÷¡£Í¨³£½â¾ö·½°¸ÊÇÔö¼Óweb·þÎñÆ÷£¬±ãÒË£¬¼òµ¥£¬µ«ºÜ¶àÇé¿öϸºÔػᴫµÝ¸øÓ¦Ó÷þÎñÆ÷£¬È»ºó´«µÝ¸øÊý¾Ý¿â·þÎñÆ÷¡£ÓÐʱºòÔö¼ÓÊý¾Ý¿â·þÎñÆ÷ҲûÓа취£¬ÒòΪÊý¾Ý¿âÒ²ÓÐËø£¬ÓÐÊÂÎñµÄÏÞÖÆ¡£

»ùÓÚ¿Õ¼äµÄ¼Ü¹¹ÓÃÀ´½â¾ö¹æÄ£ºÍ²¢·¢µÄÎÊÌâ¡£

ģʽÃèÊö

»ùÓÚ¿Õ¼äµÄ¼Ü¹¹×îС»¯ÏÞÖÆÓ¦ÓùæÄ£µÄÓ°Ïì¡£Õâ¸öģʽÀ´×ÔÓÚtuple space£¬ ·Ö²¼Ê½¹²ÏíÄÚ´æÏë·¨¡£ÒªÏë´ó¹æÄ££¬¾ÍÒªÒÆ³ýÖÐÐÄÊý¾Ý¿âµÄÏÞÖÆ£¬Ê¹Óÿɸ´ÖƵÄÄÚ´æÍø¸ñ¡£Ó¦ÓÃÊý¾Ý±£´æÔÚËùÓлµÄ´¦Àíµ¥ÔªµÄÄÚ´æÖУ¬´¦Àíµ¥Ôª¸ù¾ÝÓ¦ÓùæÄ£¿ÉÒÔ¼ÓÈëºÍÒÆ³ý¡£ÒòΪûÓÐÖÐÐÄÊý¾Ý¿â£¬ËùÒÔÊý¾Ý¿âµÄÆ¿¾±¿ÉÒÔ½â¾ö¡£

ÕâÖÖģʽÓÐÁ½¸ö×é¼þ£º´¦Àíµ¥Ôªprocessing unit ºÍ ÐéÄ⻯Öмä¼þvirtualized middleware¡£

´¦Àíµ¥Ôª°üº¬Ó¦ÓóÌÐò¡£Ð¡µÄÓ¦ÓóÌÐò¿ÉÒÔʹÓÃÒ»¸ö´¦Àíµ¥Ôª£¬´óµÄÓ¦ÓóÌÐò¿ÉÒÔ±»·Ö¸ô³É¼¸¸ö´¦Àíµ¥Ôª¡£´¦Àíµ¥Ôª»¹°üÀ¨Êý¾ÝÍø¸ñ¡£

ÐéÄ⻯Öмä¼þ¸ºÔð¹ÜÀíºÍͨÐÅ¡£´¦ÀíÊý¾ÝµÄͬ²½ºÍÇëÇó¡£

ģʽ¿¼Á¿

»ùÓÚ¿Õ¼äµÄ¼Ü¹¹ÊÇÒ»¸ö¸´ÔÓ¶ø°º¹óµÄģʽ¡£¶ÔÓÚСÐ͵ĸºÔؿɱäµÄwebÓ¦ÓúÜÊʺϣ¬µ«ÊǶÔÓÚ´óÐ͵ĹØÏµÐÍÊý¾Ý¿âÓ¦Óò»ÊÇÌ«Êʺϡ£

ģʽ·ÖÎö

×ÜÌåÁé»îÐÔ£º ¸ß

·¢²¼Ò×ÓÃÐÔ£º ¸ß

¿É²âÊÔÐÔ£º µÍ

ÐÔÄÜ£º ¸ß

¹æÄ£À©Õ¹ÐÔ£º ¸ß

¿ª·¢ÈÝÒ×¶È£º µÍ

   
3588 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù