<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Eric Hu's Weblog : Architecture</title><link>http://blogs.msdn.com/erichu/archive/tags/Architecture/default.aspx</link><description>Tags: Architecture</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Dependency Injection on .Net: Object Builder</title><link>http://blogs.msdn.com/erichu/archive/2006/07/19/670631.aspx</link><pubDate>Wed, 19 Jul 2006 08:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:670631</guid><dc:creator>zheyehu</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/erichu/comments/670631.aspx</comments><wfw:commentRss>http://blogs.msdn.com/erichu/commentrss.aspx?PostID=670631</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Arial size=2&gt;最近有朋友在問，在 .Net 上有沒有 &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/Inversion_of_Control"&gt;&lt;FONT face=Arial size=2&gt;IoC&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; 或 &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;&lt;FONT face=Arial size=2&gt;Dependency Injection &lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt;的 framework 可以用, 答案是有的, 就是 Object Builder. 這個 framework 是 &lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/EntLib2.asp"&gt;Enterprise &lt;/A&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial size=2&gt;&lt;FONT color=#000000&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/EntLib2.asp"&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff"&gt;Library&lt;/FONT&gt; for .NET framework&amp;nbsp;2.0&lt;/A&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial size=2&gt; 的一部分, 有興趣嘗試的話可以直接連結過去下載網頁.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;如果想要了解這個 framework 的基本概念及要如何使用它, 可以先從下列這篇文章開始: &lt;/FONT&gt;&lt;A href="http://www.agileprogrammer.com/oneagilecoder/archive/2006/01/03/10564.aspx"&gt;&lt;FONT face=Arial size=2&gt;Enterprise Libray and Object Builder&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt;. 這篇文章裏有詳盡的介紹.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=670631" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/erichu/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Modeling…</title><link>http://blogs.msdn.com/erichu/archive/2005/06/16/429729.aspx</link><pubDate>Wed, 15 Jun 2005 23:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:429729</guid><dc:creator>zheyehu</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/erichu/comments/429729.aspx</comments><wfw:commentRss>http://blogs.msdn.com/erichu/commentrss.aspx?PostID=429729</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;SPAN&gt;最近&lt;/SPAN&gt;&lt;SPAN&gt; Model-Driven Development (MDD) &lt;/SPAN&gt;&lt;SPAN&gt;成為熱門話題&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;在&lt;/SPAN&gt;&lt;SPAN&gt;VSTS&lt;/SPAN&gt;&lt;SPAN&gt;裏的&lt;/SPAN&gt;&lt;SPAN&gt;Visual Studio Team Edition for Software Architects&lt;/SPAN&gt;&lt;SPAN&gt;就提供了&lt;/SPAN&gt;&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN&gt;對&lt;/SPAN&gt;&lt;SPAN&gt;MDD&lt;/SPAN&gt;&lt;SPAN&gt;的&lt;/SPAN&gt;&lt;SPAN&gt;solution&lt;/SPAN&gt;&lt;SPAN&gt;和工具&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;而這些工具背後的概念皆包含於&lt;/SPAN&gt;&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN&gt;一個新的&lt;/SPAN&gt;&lt;SPAN&gt;initiative: &lt;I&gt;&lt;A href="http://msdn.microsoft.com/architecture/overview/softwarefactories/"&gt;Software Factories&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/A&gt;&lt;/I&gt; &lt;/SPAN&gt;&lt;SPAN&gt;在&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN&gt;&lt;A href="http://msdn.microsoft.com/architecture/overview/softwarefactories/"&gt;Software Factories&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt;的概念裏&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;各種&lt;/SPAN&gt;&lt;SPAN&gt;models&lt;/SPAN&gt;&lt;SPAN&gt;不只是用於分析&lt;/SPAN&gt;&lt;SPAN&gt;(analysis)&lt;/SPAN&gt;&lt;SPAN&gt;和設計&lt;/SPAN&gt;&lt;SPAN&gt;(design), &lt;/SPAN&gt;&lt;SPAN&gt;並且可以支援分布在整個&lt;/SPAN&gt;&lt;SPAN&gt;software life cycle.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN&gt;在&lt;/SPAN&gt;&lt;SPAN&gt;VSTS&lt;/SPAN&gt;&lt;SPAN&gt;裏的&lt;/SPAN&gt;&lt;SPAN&gt;modeling language&lt;/SPAN&gt;&lt;SPAN&gt;是採用&lt;/SPAN&gt;&lt;SPAN&gt; Domain Specific Languages (DSLs). DSLs&lt;/SPAN&gt;&lt;SPAN&gt;對軟體開發人員來說其實並不陌生&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;例如&lt;/SPAN&gt;&lt;SPAN&gt;XSD&lt;/SPAN&gt;&lt;SPAN&gt;就是為了定義&lt;/SPAN&gt;&lt;SPAN&gt;XML&lt;/SPAN&gt;&lt;SPAN&gt;文件結構的一種&lt;/SPAN&gt;&lt;SPAN&gt;DSL. DSLs&lt;/SPAN&gt;&lt;SPAN&gt;因為被定義在特定領域中使用&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;因此一個好的&lt;/SPAN&gt;&lt;SPAN&gt;DSL&lt;/SPAN&gt;&lt;SPAN&gt;在做&lt;/SPAN&gt;&lt;SPAN&gt; Modeling, &lt;/SPAN&gt;&lt;SPAN&gt;由其在&lt;/SPAN&gt;&lt;SPAN&gt; Generate code&lt;/SPAN&gt;&lt;SPAN&gt;這方面會特別有效率&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;同時&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;也方便各&lt;/SPAN&gt;&lt;SPAN&gt;domain&lt;/SPAN&gt;&lt;SPAN&gt;中的使用者利用這樣的語言來做&lt;/SPAN&gt;&lt;SPAN&gt;Model. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;舉例來說&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;應用&lt;/SPAN&gt;&lt;SPAN&gt;VSTS&lt;/SPAN&gt;&lt;SPAN&gt;裏的設計工具&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;可以用圖形化的方式來&lt;/SPAN&gt;&lt;SPAN&gt;Modeling &lt;/SPAN&gt;&lt;SPAN&gt;實際的&lt;/SPAN&gt;&lt;SPAN&gt;datacenter&lt;/SPAN&gt;&lt;SPAN&gt;硬體設定&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;及軟體架構的各種設定&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;並&lt;/SPAN&gt;&lt;SPAN&gt;validate&lt;/SPAN&gt;&lt;SPAN&gt;軟硬體之間設定值不相符合的地方&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;並具可以自動地從&lt;/SPAN&gt;&lt;SPAN&gt;modeling&lt;/SPAN&gt;&lt;SPAN&gt;的圖形產生程式碼&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;而任何程式碼的改變也會反應在圖形化的架構圖裏&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;這就好比在蓋房子時&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;先繪製&lt;/SPAN&gt;&lt;SPAN&gt;(modeling)&lt;/SPAN&gt;&lt;SPAN&gt;管路設計圖和結構設計圖&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;並在真正交由工人實做時事先&lt;/SPAN&gt;&lt;SPAN&gt;validate&lt;/SPAN&gt;&lt;SPAN&gt;不相符合的地方避免實際建造時的困難&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;一切沒問題後&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;建築工人即按照建築師給的設計圖&lt;/SPAN&gt;&lt;SPAN&gt;(model)&lt;/SPAN&gt;&lt;SPAN&gt;來實作&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;而一個好的&lt;/SPAN&gt;&lt;SPAN&gt;MDD&lt;/SPAN&gt;&lt;SPAN&gt;的工具&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;應該能把&lt;/SPAN&gt;&lt;SPAN&gt;model&lt;/SPAN&gt;&lt;SPAN&gt;和&lt;/SPAN&gt;&lt;SPAN&gt;code&lt;/SPAN&gt;&lt;SPAN&gt;同步化&lt;/SPAN&gt;&lt;SPAN&gt;(synchronize), &lt;/SPAN&gt;&lt;SPAN&gt;不但能做&lt;/SPAN&gt;&lt;SPAN&gt;code generation, &lt;/SPAN&gt;&lt;SPAN&gt;不論是&lt;/SPAN&gt;&lt;SPAN&gt;model&lt;/SPAN&gt;&lt;SPAN&gt;或&lt;/SPAN&gt;&lt;SPAN&gt;code&lt;/SPAN&gt;&lt;SPAN&gt;的改變都能同步反應在另一方&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;個人認為&lt;/SPAN&gt;&lt;SPAN&gt;Microsoft&lt;/SPAN&gt;&lt;SPAN&gt;應用&lt;/SPAN&gt;&lt;SPAN&gt;DSLs&lt;/SPAN&gt;&lt;SPAN&gt;來設計&lt;/SPAN&gt;&lt;SPAN&gt;MDD&lt;/SPAN&gt;&lt;SPAN&gt;的工具&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;是很有效率的做法&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;最後&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;補充說明一點&lt;/SPAN&gt;&lt;SPAN&gt;, Microsoft &lt;/SPAN&gt;&lt;SPAN&gt;並不排除或拒絕採用&lt;/SPAN&gt;&lt;SPAN&gt;UML, &lt;/SPAN&gt;&lt;SPAN&gt;個人認為&lt;/SPAN&gt;&lt;SPAN&gt;, DSL &lt;/SPAN&gt;&lt;SPAN&gt;和&lt;/SPAN&gt;&lt;SPAN&gt;UML&lt;/SPAN&gt;&lt;SPAN&gt;其實是不相衝突的&lt;/SPAN&gt;&lt;SPAN&gt;. &lt;/SPAN&gt;&lt;SPAN&gt;有關&lt;/SPAN&gt;&lt;SPAN&gt;VSTS&lt;/SPAN&gt;&lt;SPAN&gt;在&lt;/SPAN&gt;&lt;SPAN&gt;modeling&lt;/SPAN&gt;&lt;SPAN&gt;方面的策略和常見的問題可以參考下列網址&lt;/SPAN&gt;&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vstsmodel.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vstsmodel.asp&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=429729" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/erichu/archive/tags/Architecture/default.aspx">Architecture</category></item></channel></rss>