{"id":1294,"date":"2006-02-19T00:37:50","date_gmt":"2006-02-18T16:37:50","guid":{"rendered":"http:\/\/ihower.idv.tw\/blog\/archives\/1294"},"modified":"2006-02-19T20:26:11","modified_gmt":"2006-02-19T12:26:11","slug":"patterns-of-enterprise-application-architecture-0","status":"publish","type":"post","link":"https:\/\/ihower.tw\/blog\/1294-patterns-of-enterprise-application-architecture-0","title":{"rendered":"Patterns of Enterprise Application Architecture : \u7c21\u4ecb"},"content":{"rendered":"<p><a href=\"http:\/\/martinfowler.com\/books.html#eaa\"><img decoding=\"async\" src=\"http:\/\/ec1.images-amazon.com\/images\/P\/0321127420.01._SCMZZZZZZZ_.jpg\" \/><\/a>\u00a0\u4e00\u672c\u8b1b Application Architecture Patterns\u00a0\u5982\u4f55\u904b\u7528\u5728 Enterprise Application \u7684\u5927\u4f5c\uff0c\u4f5c\u8005 <a href=\"http:\/\/martinfowler.com\/\">Martin Fowler<\/a> \u51fa\u904e\u4e0d\u5c11\u8edf\u9ad4\u958b\u767c\u7684\u66f8\uff0c\u5176\u4e2d\u6700\u91cd\u8981\u7684\u5c31\u6578 <a href=\"http:\/\/amazon.com\/exec\/obidos\/tg\/detail\/-\/0201485672\/roblog-21\">\u91cd\u69cb Refactoring<\/a>\u00a0(\u6709\u4e2d\u8b6f) \u4e86\uff0c\u53e6\u5916\u9084\u6709\u66a2\u92b7\u66f8 <a href=\"http:\/\/www.amazon.com\/gp\/product\/0321193687\/qid=1140281954\/sr=2-1\/ref=pd_bbs_b_2_1\/104-8427460-6763962?s=books&#038;v=glance&#038;n=283155\">UML Distilled<\/a> \u3001 \u8ac7 <a href=\"http:\/\/140.109.17.94\/Jyemii\/patternscolumn\/analysis%20patterns\/Analysis%20Patterns%20and%20Business%20Objects(ver2).htm\">OOA \u7bc4\u5f0f<\/a>\u7684 <a href=\"http:\/\/www.amazon.com\/exec\/obidos\/tg\/detail\/-\/0201895420\/qid=1140282049\/sr=1-2\/ref=sr_1_2\/104-8427460-6763962?v=glance&#038;s=books\">Analysis Patterns<\/a>\u00a0( <a href=\"http:\/\/amazon.com\/exec\/obidos\/tg\/detail\/-\/0201633612\/roblog-21\">Design Patterns<\/a> \u4e00\u66f8\u662f\u8ac7OOD\u5c64\u6b21\u7684\u7bc4\u5f0f )\u3001\u8ddf Beck\u5408\u8457\u7684 <a href=\"http:\/\/www.amazon.com\/gp\/product\/0201710919\/qid=1140282049\/sr=1-6\/ref=sr_1_6\/104-8427460-6763962?s=books&#038;v=glance&#038;n=283155\">Planning Extreme Programming<\/a> (\u6709\u4e2d\u8b6f)\u7b49\u3002<\/p>\n<p>\u9019\u672c\u66f8\u5167\u5bb9\u8ac7 EA \u7684 Layers\u3001\u5982\u4f55\u7d44\u7e54 Domain (Business) Logic\u3001\u7269\u4ef6\u8207\u95dc\u806f\u8cc7\u6599\u5eab\u7684\u5c0d\u61c9\u8655\u7406\u3001Web Presentation\u3001\u4e26\u884c\u8655\u7406 Concurrency\u3001\u8655\u7406 Session State\u00a0\u5728 stateless \u7684\u74b0\u5883\u3001\u5206\u6563\u5f0f\u61c9\u7528\u7a0b\u5f0f\u7684\u7b56\u7565\u7b49\u3002<\/p>\n<p>\u7ae0\u7bc0\u5206\u5169\u90e8\u4efd\uff0c\u524d8\u7ae0\u7d66\u4f60\u4f9d\u5e8f\u770b\uff0c\u7c21\u4ecb\u5404\u500b\u7bc4\u5f0f\u8b93\u4f60\u6709\u500b\u5927\u5c40\u89c0\uff0c\u5f8c\u5927\u534a9~18\u7ae0\u5247\u662f\u5404\u500b pattern \u7684\u8a73\u7d30\u5167\u5bb9\u3002\u7b2c0\u7ae0\u662f\u7c21\u4ecb\uff0c\u8ac7\u4e00\u4e9b\u540d\u8a5e Architecture, Exterprise Applications,Performance,Patterns \u7b49\u3002<!--more--><\/p>\n<p><strong>Architecture<\/strong><\/p>\n<p>\u5f9e\u9ad8\u89c0\u9ede\u4f86\u770b\u7cfb\u7d71\u5404\u90e8\u4efd\uff0c\u6c7a\u5b9a\u54ea\u4e9b\u662f\u5f88\u96e3\u6539\u8b8a\u7684\u90e8\u4efd\u3002\u9084\u6709\u67b6\u69cb\u662f\u4e3b\u89c0\u7684\u6982\u5ff5\uff0c\u56e0\u6b64\u67d0\u4e9b patterns \u5176\u5be6\u4e5f\u53ef\u4ee5\u770b\u505a\u4e00\u7a2e architectural \u3002<\/p>\n<p><strong>Enterprise Applications<\/strong><\/p>\n<p>\u53c8\u53eb\u505a information systems\uff0c\u56e0\u70ba\u6709\u5f88\u591a\u8cc7\u6599\u8ddf\u5f88\u591a\u8655\u7406\u3002\u6709\u5e7e\u500b\u7279\u9ede\u5982\u4e0b\u3002<\/p>\n<ol>\n<li>persistent data \u8981\u4fdd\u5b58\u5f88\u4e45\u7684\u8cc7\u6599<\/li>\n<li>a lot of data \u4e00\u5927\u5806\u8cc7\u6599(GB\u7b49\u7d1a)<\/li>\n<li>access data concurrently \u4e00\u5806\u4eba\u6703\u540c\u6642\u5b58\u53d6<\/li>\n<li>a lot of user interface screens \u4e00\u5927\u5806\u4f7f\u7528\u8005\u756b\u9762(\u4e0a\u767e\u500b\u5f88\u666e\u901a)<\/li>\n<li>integrate with other enterprise applications \u5e38\u548c\u5176\u4ed6 EA \u4e00\u8d77\u904b\u4f5c (\u9019\u90e8\u4efd\u672c\u66f8\u4e0d\u6db5\u84cb\uff0c\u4f60\u8981\u770b <a href=\"http:\/\/www.amazon.com\/gp\/product\/0321200683\/qid=1140288447\/sr=2-1\/ref=pd_bbs_b_2_1\/104-8427460-6763962?s=books&#038;v=glance&#038;n=283155\">Enterprise Integration Patterns\u00a0<\/a>\u624d\u6709)<strong><font size=\"4\"> <\/font><\/strong><\/li>\n<li>conceptual dissonance \u8655\u7406\u8cc7\u6599\u89c0\u5ff5\u4e0a\u53ca\u8a9e\u610f\u4e0d\u4e00\u81f4\u7684\u60c5\u6cc1\uff0c\u4f46\u4ecd\u5fc5\u9808\u80fd\u540c\u6b65\u904b\u4f5c\u3002\u5982\u4e0d\u540c\u90e8\u9580\u770b&#8221;\u4e00\u500b\u4eba&#8221;\u7684\u5b9a\u7fa9\u4e5f\u8a31\u6703\u4e0d\u540c\u3002<\/li>\n<li>complex business &#8220;illogic&#8221; \u8655\u7406\u8907\u96dc\u7684\u5546\u696d\u908f\u8f2f<\/li>\n<\/ol>\n<p><strong>Performance<\/strong><\/p>\n<p>\u5728\u505a persormance \u6c7a\u7b56\u524d\uff0c\u4f60\u5f97\u771f\u7684\u5728\u4f60\u7684\u8a2d\u5b9a\u4e0a\u6e2c\u904e\u624d\u6709\u610f\u7fa9\uff0c\u6bd4\u8f03\u8abf\u6574\u524d\u5f8c\u7684\u5dee\u7570\u624d\u77e5\u9053\u6709\u6c92\u6709\u7528\uff0c\u4e0d\u7136\u4f60\u6703\u628acode\u6539\u96e3\u61c2\u4e86\u537b\u6c92\u6709\u5be6\u8cea\u5e6b\u52a9 :p<\/p>\n<ol>\n<li>Response time \u5b8c\u6210\u4e00\u9805\u9700\u6c42\u7684\u6642\u9593<\/li>\n<li>Responsiveness \u7b2c\u4e00\u53cd\u61c9\u6642\u9593\uff0c\u5982\u51fa\u73fe progress bar<\/li>\n<li>Latency \u81f3\u5c11\u5ef6\u9072\u6642\u9593\uff0c\u5982 remote call \u7684\u7db2\u8def\u50b3\u8f38\u5ef6\u9072<\/li>\n<li>Throughput \u4e00\u5b9a\u6642\u9593\u5167\u53ef\u4ee5\u5e79\u591a\u5c11\u4e8b<\/li>\n<li>Performance \u770b\u4f60\u559c\u6b61\u6307 throughput \u6216 response time (\u82e5\u9019\u5169\u500b\u6709\u77db\u76fe\uff0c\u4f60\u5c31\u8981\u5c0f\u5fc3\u5b9a\u7fa9\u4e86)\u3002\u53e6\u5916\u5f9e\u4f7f\u7528\u8005\u89c0\u9ede\u770b\uff0c\u52a0\u5feb Responsiveness \u6bd4 Response time \u66f4\u91cd\u8981\uff0c\u5373\u4f7f\u4ed6\u662f\u589e\u52a0 Response time \u7684\u3002<\/li>\n<li>Load \u7cfb\u7d71\u8ca0\u91cd\u7a0b\u5ea6<\/li>\n<li><strong>Load sensitivity<\/strong> \u7576 Load \u589e\u52a0\u6642\uff0cResponse time \u589e\u52a0\u7684\u654f\u611f\u7a0b\u5ea6<\/li>\n<li>Efficiency Performance\u9664resource<\/li>\n<li>Capacity \u7cfb\u7d71\u6700\u5927\u6709\u7528\u7684 throughput \u6216 load<\/li>\n<li><strong>Scalability<\/strong> \u7cfb\u7d71\u53ef\u7531\u589e\u52a0\u8cc7\u6e90(\u901a\u5e38\u662f\u786c\u9ad4)\u4f86\u589e\u52a0 performance \u7684\u7a0b\u5ea6\u3002\u5c0dEA\u4f86\u8aaa\u6709\u610f\u601d\u7684\u662f\uff0c\u901a\u6210\u5efa\u9020\u4e00\u500b\u6709 Scalability\u00a0\u80fd\u529b\u7684\u7cfb\u7d71\u6bd4\u589e\u52a0 capacity \u6216 efficiency \u66f4\u91cd\u8981\uff0c\u56e0\u70ba\u96a8\u8457\u4f60\u8981\u589e\u52a0 throughput\uff0c\u4f60\u53ea\u8981\u82b1\u500b\u9322\u5c31\u9054\u5230\u6548\u679c\u53cd\u800c\u662f\u6bd4\u8f03\u7d93\u6fdf\uff0c\u7562\u7adf server \u786c\u9ad4\u6bd4 programmer (\u52aa\u529b\u6539code\u589e\u52a0\u6548\u80fd)\u9084\u4fbf\u5b9c :p\u4f5c\u8005\u6253\u500b\u4f8b\u5b50\uff0c\u5047\u8a2d A \u5bb9\u91cf 20\u4eba\uff0cB\u5bb9\u91cf40\u4eba\u3002\u61c9\u8a72\u662fA\u6bd4\u8f03\u6709 efficiency \u5427\u3002\u4f46\u662f\u591a\u8cb7\u4e00\u53f0 server \u6642\uff0cA\u53ef\u4ee5\u8655\u740635\u4eba\uff0cB\u53ef\u4ee5\u8655\u740650\u4eba\u3002\u9019\u6642\u5019\u4f60\u7b97\u7b97\u770b scalability\uff0c\u5982\u679c\u4f60\u6709\u4e0a\u5343\u4eba\u8981\u8655\u7406\uff0c\u54ea\u7a2e\u6bd4\u8f03\u597d :p<\/li>\n<\/ol>\n<p><strong>Patterns <\/strong>\u662f\u63cf\u8ff0\u4e00\u500b\u91cd\u8907\u51fa\u73fe\u7684\u554f\u984c\u4e26\u63cf\u8ff0\u89e3\u6cd5\uff0c\u7576\u7136 patterns \u9084\u662f\u6709\u9650\u5236\u7684\uff0c\u4f60\u9084\u662f\u5f97\u591a\u60f3\u60f3\u4e26\u4fee\u6539\u624d\u80fd\u9069\u6642\u7684\u61c9\u7528\u3002<\/p>\n<p>\u5f8c\u8a18: \u95dc\u65bc\u00a0EA \u7684 \u00a0Patterns \uff0c\u627e\u5230\u4e00\u500b\u7ad9<a href=\"http:\/\/patternshare.org\/default.aspx\/Home.EnterpriseArchitecturalSpaceOrganizingTable\">\u8a73\u7d30\u5206\u985e<\/a>\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0\u4e00\u672c\u8b1b Application Architecture Patterns\u00a0\u5982\u4f55\u904b\u7528\u5728 Enterprise &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/ihower.tw\/blog\/1294-patterns-of-enterprise-application-architecture-0\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008Patterns of Enterprise Application Architecture : \u7c21\u4ecb\u3009<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9,5],"tags":[],"class_list":["post-1294","post","type-post","status-publish","format-standard","hentry","category-books","category-programming","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1q6tG-kS","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts\/1294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/comments?post=1294"}],"version-history":[{"count":0,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts\/1294\/revisions"}],"wp:attachment":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/media?parent=1294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/categories?post=1294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/tags?post=1294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}