<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
    <channel>
        <title>http://KingCrap.com 으로 옮겼습니다.</title>
        <link>http://acroama.isblog.net</link>
        <description>이 블로그는 개인블로그이며, 여기에 혹시 있을지 모를 정치적 성향이나 논점은 제가 속한 회사 방침과 무관하며, 전적으로 개인적인 것임을 밝힙니다.</description>
        <language>ko</language>
        <pubDate>Sat, 04 Sep 2010 05:17:36 +0900</pubDate>
        <generator>isBlog 0.9.0</generator>
        <image>
            <link>http://acroama.isblog.net</link>
            <url>http://acroama.isblog.net/Uploads/BlogSetting/isblog_rss.gif</url>
            <title>http://KingCrap.com 으로 옮겼습니다.</title>
        </image>
        <item>
            <title>블로그 이전합니다</title>
            <link>http://acroama.isblog.net/blog_post_69.aspx</link>
            <description><![CDATA[<p>&nbsp;호스팅 서비스가 불안정하여 자주 접속이 안되어 티스토리에 둥지를 다시 틀었습니다.<br />
몇가지 포스트만 가지고 떠납니다.<br />
<br />
&nbsp;<a href="http://kingcrap.com">http://kingcrap.com</a>&nbsp;<br />
<br />
지속적인 관심 부탁드립니다.</p>]]></description>
            <author>오롯이</author>
            <pubDate>Fri, 22 Feb 2008 05:46:04 +0900</pubDate>
        </item>
        <item>
            <title>자바와 C#에서의 polymorphism</title>
            <link>http://acroama.isblog.net/blog_post_68.aspx</link>
            <description><![CDATA[&nbsp;virtual과 관련된 몇 가지 현상에 대해 좀 더 살펴보자.<br />
<br />
<font color="#0000ff" size="2"><strong>자바의 경우<br />
</strong></font>자바의 경우 인터페이스를 구현하거나&nbsp;다른&nbsp;클래스를&nbsp;상속할 경우 항상 virtual로&nbsp;간주되기 때문에 virtual이라는 키워드가 존재않는다. 따라서 원하지 않는 virtual 적인 행위를 방지하기 위해 final이라는 키워드를 사용할 수 있다.&nbsp;<br />
<br />
&nbsp;클래스의 상속을 막기 위해 final class로 선언할 수 있고<br />
&nbsp;public final class Babo { ... }<br />
<br />
&nbsp;상속은 허용하되 일부 메소드의 override를 막기 위해 final 메소드로 선언할 수 있다.<br />
&nbsp;pubilc class&nbsp;Babo<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp; public final void tellMe() { ... }<br />
&nbsp; }<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;참고로 final은 멤버 변수를 상수로 선언하기 위해 사용되기도 하고<br />
&nbsp;public class Babo<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp; private final String name = &quot;바보&quot;;<br />
&nbsp;}<br />
<br />
&nbsp;메소드의 파라메터에 로컬 변수로 선언되기도 한다.<br />
&nbsp;public void tellMe(final String name) { ... }<br />
<br />
<br />
<font color="#0000ff" size="2"><strong>&nbsp;닷넷의 경우&nbsp;(C#의 경우)</strong></font><br />
&nbsp;C#의 경우에는 지난 번에 포스팅했듯이 인터페이스의 구현과 클래스간의 상속을 구분한다. 인터페이스의 구현은 polymorphism 성격을 띄지 않기 때문에 자식이 부모의 메소드를 override 할 수 없다. 또한 상속시의 경우에도&nbsp;자식이 override 할 수 있는 것과 하지 못하게&nbsp;할 것을 구분하기 위해 virtual 키워드를 쓴다. virtual 이 아닌 부모의 메소드는 override 할 수 없다.<br />
&nbsp;자바의 경우 처럼, C#에도 override를 방지하는 키워드 sealed가 있다. 즉, sealed 메소드가 있다. 하지만 자바와 조금 다른데, sealed 메소드는 반드시 상속을 받는 자식 클래스가 부모의 virtual 메소드를 override하면서 자신의 자식 클래스, 즉, 손자 클래스가 더 이상 override하지 못하도록 막는 역할을 한다. 반드시 override 하는&nbsp;상황에서만 사용된다는 특징이 있다.&nbsp;즉, 항상&nbsp;sealed는 override와 함께 다닌다.<br />
<br />
&nbsp;조금 다른 얘기인데 재밌는 사실은...<br />
&nbsp; interface IMsg<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; void Message();<br />
&nbsp; }<br />
&nbsp; class Parent : IMsg<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; public <font color="#ff0000">virtual</font> void Message()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;부모가 불렸네.&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;}<br />
&nbsp; class Child : Parent<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; public <font color="#ff0000">sealed override</font> void Message()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;자식이 불렸네.&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
C#에서 인터페이스 IMsg에 선언되어 있는 메소드 Message()의 IL 코드를 보면 abstract virtual로 자동 선언된다.<br />
&nbsp; .method public hidebysig <font color="#0000ff">newslot</font> <font color="#ff0000">abstract virtual</font>&nbsp;instance void&nbsp; Message() cil managed<br />
<br />
이 인터페이스의 메소드를 구현하고 있는 Parent 클래스의 Message() 메소드는 IL에서 virtual final로 선언된다.<br />
&nbsp; .method public hidebysig <font color="#0000ff">newslot</font> <font color="#ff0000">virtual final</font>&nbsp;instance void&nbsp; Message() cil managed<br />
<br />
하지만, 이 인터페이스를 구현하면서 해당 메소드에 virtual을 붙이면 Parent 클래스의 Message() 메소드는&nbsp;IL에서&nbsp;그냥 virtual로 선언된다.<br />
&nbsp; .method public hidebysig <font color="#0000ff">newslot</font> <font color="#ff0000">virtual</font>&nbsp;instance void&nbsp; Message() cil managed<br />
<br />
인터페이스를 구현한&nbsp;Parent를 상속받은 Child 클래스의&nbsp;sealed override&nbsp;Message() 메소드는 IL에서 virtual final로 선언된다. 즉, 더이상의 override는 불가하다.<br />
&nbsp; .method public hidebysig <font color="#ff0000">virtual final</font> instance void&nbsp;Message() cil managed<br />
<br />
&nbsp;정리하면, C#에서도(??) 인터페이스의 구현시에 자동 virtual이 선언되나 final이 있기 때문에 virtual적인 형태를 띄지 않아&nbsp;override가 되지 않는 것으로 추정되며, 구현 클래스에서 명시적으로 virtual을 붙이게 되면 final이 아닌 virtual로 선언되기 때문에 override가 가능하게 되는 것 같다. 또한 위에서 보듯이 이를 상속받은 자식 클래스에서 sealed 메소드로 선언해버리면 다시 vritual fianl이 되어 더 이상의 override는 불가능하다.<br />
<br />
자바는 모든 것을 virtual적인 것으로 간주하여 풀고 final을 써서 필요한 부분을 막고, C#의 경우 모든 것을 일단 막고 virtual 키워드를 써서 필요한 부분을 풀고 ... 이런 것인가 ?&nbsp;]]></description>
            <category>닷넷과 자바</category>
            <category>polymorphism</category>
            <author>오롯이</author>
            <pubDate>Wed, 30 Jan 2008 14:31:22 +0900</pubDate>
        </item>
        <item>
            <title>닷넷 프레임웍 리스트 - Beta</title>
            <link>http://acroama.isblog.net/blog_post_66.aspx</link>
            <description><![CDATA[&nbsp;닷넷 프로젝트에서 사용할 수 있는 프레임웍을 한눈에 볼 수 있도록 정리해보자<br />
프레임웍을 구분하는 방법은 여러가지이나 간단하게 티어별로 구분하도록 한다.<br />
<br />
<font color="#0000ff" size="2"><strong>프리젠테이션 티어 (웹)<br />
</strong></font>1. ASP.NET MVC - 2008년 1사분기에 출시 예정이 ASP.NET 기반의 MVC 프레임웍. 마이크로소프트&nbsp;제공<br />
&nbsp;&nbsp; - <a target="_blank" href="http://weblogs.asp.net/scottgu/search.aspx?q=%22ASP.NET+MVC%22&amp;o=Relevance">소개</a><br />
&nbsp;&nbsp; - <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=A9C6BC06-B894-4B11-8300-35BD2F8FC908&amp;displaylang=en">다운로드</a><br />
&nbsp;&nbsp; - <a target="_blank" href="http://forums.asp.net/1146.aspx">포럼</a><br />
2. <a target="_blank" href="http://www.castleproject.org/monorail/index.html">MonoRail</a> - 오픈 소스 Castle 프로젝트에서 만든 Rail와 유사한 MVC&nbsp;웹 프로임웍<br />
3. <a target="_blank" href="http://sourceforge.net/projects/mavnet/">Maverick.NET</a> - 자바 Maverick의 닷넷 버전으로 오픈 소스 MVC 웹 프레임웍, 업데이트 안됨<br />
4. <a target="_blank" href="http://www.dotnetnuke.com/">DotNetNuke</a> - 포털 프레임웍에 가까움. 오픈 소스<br />
<br />
<font color="#0000ff" size="3"><font size="2"><strong>비지니스 티어 (DI Container)</strong></font><br />
</font>1. <a target="_blank" href="http://www.springframework.net">Spring.NET</a> - 오픈 소스. 자바 Spring의 닷넷 버전. 대표적인 DI Container. <br />
2. <a target="_blank" href="http://www.codeplex.com/ObjectBuilder">ObjectBuilder</a> - Enterprise Library(EntLib)에 들어 있으며, EntLib, Composite UI Application Block 등에 사용된 DI Container<br />
3. <a target="_blank" href="http://www.castleproject.org/container/index.html">Windsor Container</a>&nbsp;- 오픈 소스 Castle 프로젝트 일환<br />
4. <a target="_blank" href="http://structuremap.sourceforge.net/">StructureMap</a> - 닷넷에서 가장 오래된 DI Container. Martin Fowler가 있는 <a target="_blank" href="http://www.thoughtworks.com/index.html">ThoughtWorks</a>에서 프로젝트 진행한 결과물이 정제된 것이라고 함<br />
<br />
<font color="#0000ff"><font size="2"><strong>데이터 티어</strong></font><br />
</font>1. ADO.NET<br />
2. LINQ to SQL - .NET Framework 3.5의 기본 기능. 엔티티와 테이블의 1:1 매핑. VS2008 툴 지원<br />
3. <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&amp;displaylang=en">ADO.NET Entity Framework (LINQ to Entity)<br />
</a>4. <a target="_blank" href="http://www.hibernate.org/">NHibernate</a>&nbsp;- 자바 Hibernate의 닷넷 버전. 오픈 소스<br />
5. <a target="_blank" href="http://ibatis.apache.org/">iBatis.NET</a> - 자바 iBatis의 닷넷 버전. 오픈 소스<br />
6. <a target="_blank" href="http://castleproject.org/activerecord/index.html">Active Record</a> - 오픈 소스 Castle 프로젝트의 일환. Active Record 패턴을 구현. NHibernate 기반이나 Configuration을 XML이 아닌 Attribute을 이용<br />
7. <a target="_blank" href="http://www.llblgen.com/defaultgeneric.aspx">LLBLGen Pro</a> - 상용.<br />
8. <a target="_blank" href="http://www.ormapper.net/">WilsonORMapper</a> - 상용.<br />
9. <a target="_blank" href="http://www.mindscape.co.nz/products/LightSpeed/">LightSpeed</a> - 상용.<br />
10. <a target="_blank" href="http://www.adapdev.com/codus/">Codus</a>&nbsp;- 상용.<br />
11. <a target="_blank" href="http://sourceforge.net/projects/sooda/">Sooda</a> - 폴란드에서 만든 오픈 소스 ORM 으로 폴란드에서는 구직시 도움되는 기술.<br />
12. <a target="_blank" href="http://www.subsonicproject.com">SubSonic</a> - 오픈 소스 ORM. ASP.NET 3.5 Extension에 포함된 ASP.NET Dynamic Data 기능 구현에 사용됨.&nbsp;<br />
<br />
<font color="#0000ff" size="2"><strong>기타 범용 프레임웍 (혹은 라이브러리)</strong></font><br />
1. <a target="_blank" href="http://www.codeplex.com/entlib">Enterprise Library</a> - MS patterns and practices(PnP) 팀이 Codeplex를 통해 제공. 캐싱, 로깅, 암호화 등등<br />
2. <a target="_blank" href="http://nvelocity.sourceforge.net/">NVelocity</a> - 템플릿 엔진. 진전이 없어 Castle 프로젝트에서 <a target="_blank" href="http://castleproject.org/others/nvelocity/index.html">별도 진행</a><br />
3. <a target="_blank" href="http://www.nunit.org">NUnit</a> -&nbsp;단위 테스트<br />
4. <a target="_blank" href="http://nant.sourceforge.net">NAnt</a> -&nbsp;빌드<br />
5. <a target="_blank" href="http://logging.apache.org/log4net">log4net</a> - 로깅<br />
6. <a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CruiseControl.NET</a> - 통합 빌드, ThoughtWorks에서 개발한 오픈 소스]]></description>
            <category>아키텍처</category>
            <category>Framework</category>
            <author>오롯이</author>
            <pubDate>Tue, 29 Jan 2008 20:34:01 +0900</pubDate>
        </item>
        <item>
            <title>구글과 IBM, Office Open XML을 지원하다.</title>
            <link>http://acroama.isblog.net/blog_post_67.aspx</link>
            <description><![CDATA[&nbsp;마이크로소프트 오피스 2007의 기본 문서 포맷은 OOXML (Office Open XML)이며, 현재 ECMA 표준으로 등록되어 있으며 ISO 표준을 위한 절차를 밟고 있다. OOXML과는 다른 표준으로는, 썬 마이크로시스템즈가 인수한 스타오피스의 소스를 공개하여 시작된 <a target="_blank" href="http://www.openoffice.org">Open Office</a> 로 부터 스키마 등을 추출하여 표준화시킨 ODF (Open Document Format)가 있다.&nbsp;이 두&nbsp;문서&nbsp;표준은 기본적으로&nbsp;각각 표준 XML 스키마가 존재하고 관련된 화일(텍스트, 이미지 등)을 Zip 포맷으로 묶어 단일한 파일로 저장하는 등 비슷한 형태를 취하고 있다. 크게 보면 결국 서로 다른 스키마 사이의 변환이라고 봐도 무방하다. 다만, 여기에 태생적인 특성이 있어 OOXML은 지금껏 만들어진 방대한 분량의 마이크로소프트 오피스 문서 포맷과의 호환성을 가지고 있고, ODF의 경우는 이런 면에서는 그다지 신경을 쓰지 않는 듯하다. 또한 OOXML이 문서를 관장하는 문서 수혜자 즉, 여러 나라 도서관, 애플, 도시바 등이 주축인 반면, ODF는 문서 처리기를 만드는 벤더 위주라는 차이도 있다. 또한 관점의 차이이긴 하나, OOXML이 자체적으로 완벽한 문서 포맷을 추구하는 반면, ODF는 여타 다른 표준에 의존하는 형태를 취하고 있다. 이 두 표준은 각각 ECMA, ISO 표준이라는 즉, 공개 표준이라는 특징을 가지고 있다.<br />
<br />
&nbsp;OOXML은&nbsp;마이크로소프트 오피스 만이 유일한 구현이라고 잘못 알려져 있으며, 현재 OOXML을 지원하는 제품으로는 몇&nbsp;가지만 들면,&nbsp;MS Office 2007,&nbsp;Corel Office, Altova XML Spy, PythonOffice,&nbsp;썬의 스타오피스, 맥용 Neo Office,&nbsp;리눅스 용 Gnumeric&nbsp;(스프레드쉬트) 등 플랫폼을 막론하고 다수의 제품에서 지원하고 있다. 또한&nbsp;한글과 컴퓨터 자회사인&nbsp;ThinkFree 오피스도 OOXML을 지원하기로 하였다. <br />
&nbsp;근래에 구글과 IBM도&nbsp;OOXML을 지원하는 것으로 나타났다.&nbsp;구글에서 검색을 하면 마이크로소프트 오피스 2007의&nbsp;문서 내용까지도 함께 검색이 되고 이&nbsp;결과를 온라인에서 보여주는 기능(&quot;HTML 버전&quot;)에서 마이크로소프트 오피스 2007의 화일까지도 브라우저에서 렌더링이 되는 것으로 나타났다. <img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200801/Thumbnail/google_t.jpg" />
<div align="left"><br />
IBM의 경우 Lotus Quickr collaboration platform, Websphere Portal for z/OS mainframes,&nbsp; DB2 Content Manager v8.4, &nbsp; DB2 9 pureXML database 등 제품차원에서 OOXML을 지원하는 것으로 나타났다.<br />
<a target="_blank" href="http://www-1.ibm.com/support/docview.wss?uid=swg21288972">http://www-1.ibm.com/support/docview.wss?uid=swg21288972</a><br />
<img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200801/DB2ContentManager2.jpg" /></div>
<br />
&nbsp;얼마전 IDC가 OOXML에 아주 우호적인 <a target="_blank" href="http://acroama.isblog.net/blog_post_63.aspx">리포트</a>를 발표한 적이&nbsp;있다. 여기에 대해 ODFA (Open Document Format Alliance) 차원에서 <a target="_blank" href="http://www.odfalliance.org/resources/BurtonGroupResponse.pdf">반박문</a>을 발표하기도 하였다. 완전히 동일한 목적을 가지고 동일한 기능을 하는 것이 아닌 서로 다른 배경과 목적을 가진&nbsp;두 개의 문서 표준에 대해 일반적인 기준으로 비교하는 것이 무리가 있을 수 있으며, 두 문서 표준에 대한 깊은 지식없이는 단편적인 스키마 수준에서의 기능 비교밖에는 이루어질 수 없다. 또한 지속적으로 변하는 두 표준의 스펙에&nbsp;대해서, 그리고 XML이라는 스키마의 특성상 무한 확장성을 염두해 둔다면 비교가 어쩌면 무의미할 수도 있다.&nbsp;두 스펙에 관한 비교를 원하는 사람을 위 링크를 참조하기 바란다.<br />
<br />
&nbsp;관련 기사<br />
- <a target="_blank" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9058038">http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9058038</a><br />
- <a target="_blank" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=311757&amp;intsrc=news_ts_head">http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=311757&amp;intsrc=news_ts_head<br />
</a>- <a target="_blank" href="http://blogs.zdnet.com/microsoft/?p=1121">http://blogs.zdnet.com/microsoft/?p=1121<br />
</a>]]></description>
            <category>OpenXML</category>
            <category>OpenXML</category>
            <category>ODF</category>
            <author>오롯이</author>
            <pubDate>Tue, 29 Jan 2008 10:28:34 +0900</pubDate>
        </item>
        <item>
            <title>초보 운전 경험기</title>
            <link>http://acroama.isblog.net/blog_post_65.aspx</link>
            <description><![CDATA[&nbsp;어제 저녁부터 운행중에 라디오가 꺼지고 시계 글자가 알아보기 힘들 정도로 희미해진 것을 보고 미루어왔던 배터리 교체 시기가 다가왔음을 짐작하고 오늘 배터리 교체하려 했었는데...<br />
&nbsp;출근 내내 자동차가 이상 신호를 보내왔다.<br />
가장 먼저 희미해진 시계 글자는 당연하였고, 냉각수 온도 게이지가 힘겹게 기준선 이하에 매달려있는게 보였다.&nbsp;<br />
조금 지나자 ABS 경고등이 들어왔다. 오호, ABS가 전자 어쩌구 하더니 전기공급이 원활치 않으니 문제가 발생할 수 있나보다.. 마치 하나 하나 알아가는 것 마냥 뿌듯하기 까지 했다.<br />
잠시후, Air Bag 경고등이 들어왔다. 오호.. 에어백까지 전기가 부족하면 안되는 구나..<br />
잠시후, 라디오가 제멋 대로 꺼졌다가 약간 전기가 모아 졌나 싶으나 다시 들어오고.. 또 나가고를 반복하고<br />
잠시후, 속도계가 춤을 추더니 0으로 떨어졌다.. 우와 속도계 게이지도 전기 없으니까 이렇구나...<br />
잠시후 눈에 들어온 건 언제부터인지 0를 가리키고 있는 RPM 게이지.. 모든 게이지가 전기 영향을 받네,,, 근데, 기름 탱크 게이지는 수동인가 ?.. 제대로 동작하는거 같네... 이런 생각을 하면서 계속 운전을 했는데,<br />
헉.. 이거 브레이크 작동 안하면 ? 아냐.. 브레이크는 유압식인것으로 언젠가 들었으니... 괜찮을 거야.. 괜찮아... 음.<br />
<br />
&nbsp;그리고 믿는 구석이 하나 있었다. 배터리는 시동 걸때만 필요하고 일단 시동 걸리면 발전이 되니까 시동꺼질일은 없을거라고..이대로 쭉 카센터까지 가는 거야..<br />
<br />
신호 대기... 차가 힘없이 재체기를 하더니 시동이 꺼지고 더 이상&nbsp;움직일 줄을 모른다.<br />
견인차 출동.. 이거 발전기 나갔네.. 헉.. 배터리외에 발전기까지...<br />
카센터 기사... 운전석 등속 조인트도 나갔네.. 저거 보이죠..베어링이 다 보이네.. &nbsp;브레이크 패드로 갈아야하고..엔진 오일 간지도 5000넘은 거 같은데...허거덕..<br />
<br />
평소, 때 되면 부품 갈아주어 견인차에 끌려가는 경우가 없었는데.. 오늘 제대로 걸렸다.<br />
<br />
카센터 기사의 훈시를 정리하면,&nbsp;<br />
발전기는 통상 10만 Km 안팎, 15만 Km 정도까지 견딘다고 한다. 울 뷰롱이는 17만을 탔으니.. 갈만했다.<br />
배터리는 통상 2~3년 마다 갈아준다. 이전에 우리 애 돌 전날 갈았으니 2년하고 5일 지났네..갈만했다.<br />
<br />
배터리는 시동 걸때만 필요하고 일단 시동이 걸리면 발전기가 전기를 생산하여 전기를 필요로하는 각종 전자 장치에 배전을 하고 남는 전기를 배터리에 다시 보관한다고 한다. 따라서 배터리가 문제가 생기면 시동이 안 걸릴 뿐 가던 차가 꺼지지는 않는다고. 하지만 발전기에 문제가 생기면 전기 생산이 안되므로 전기를 필요로하는 전기 장치에 전기를 줄 수가 없어서 배터리에서 전기를 끌어온다고 ... 만약 배터리에 충전된 양이 목적지 까지 충분하다면 시동이 꺼지지 않겠지만, 오늘 처럼 성능이 시원치 않은 배터리의 경우 전기가 바닥나면 차가 설 수도 있다고...&nbsp;<br />
<br />
10년 경력의 운전 초보 일기]]></description>
            <category>새소식</category>
            <author>오롯이</author>
            <pubDate>Wed, 23 Jan 2008 13:28:37 +0900</pubDate>
        </item>
        <item>
            <title>ADO.NET Entity Framework</title>
            <link>http://acroama.isblog.net/blog_post_64.aspx</link>
            <description><![CDATA[&nbsp;ASP.NET 3.5 Extension에는 ASP.NET MVC 이외에도 여러 기능이 들어 있는데, 그 중에서도 눈에 띄는 것이 ADO.NET Entity Framework이다. 현재 베타 3이며 아래 싸이트에서 다운로드 받을 수 있다.<br />
<br />
&nbsp;<a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&amp;displaylang=en">ADO.NET Entity Framework 다운받기</a><br />
&nbsp;<a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=D8AE4404-8E05-41FC-94C8-C73D9E238F82&amp;displaylang=en">ADO.NET Entity Framework Tool 12월 CTP<br />
</a><br />
ADO.NET Entity Framework Design Tool은 VS2008에서 데이터베이스로부터 드래그 앤 드롭 방식으로 Entity Domain Model을 쉽게 작성할 수 있도록 해 준다. 이 툴의 사용법은 아래 싸이트에서 동영상으로 게시되어 있다.<br />
&nbsp;<a target="_blank" href="http://asp.net/downloads/3.5-extensions/">ADO.NET Entity Framework Tool 사용법</a><br />
<br />
ADO.NET Entity Framework을 잠시 사용해보니, LINQ to SQL과 사용법이 유사하였다. LINQ to SQL이 1:1 매핑만을 제공하는 것과 달리 Entity Framework은 위의 Design Tool에서 엔티티를 데이터베이스 테이블 여러개에 매핑시킬 수 있으며 관련 Stored Procedure 조차도 툴에서 지정할 수 있다.<br />
<br />
LINQ to SQL에서는 Entity Model이&nbsp;System.Data.Linq.DataContext를 상속받아 partial class로 커스텀 DataContext에 매핑이 된다.<br />
Entity Framework에서는 Entity Model이 System.Data.Objects.ObjectContext를 상속받아 역시 partial class로 커스텀 컨텍스트로 매핑된다.<br />
<br />
LINQ to SQL에서는 Entity Model 상의 Entity가 두 개의 인터페이스를 구현한 일반 클래스로 생성되고 프로퍼트가 구현되어 있다.<br />
Entity Framework에서는 Entity들이 System.Data.Objects.DataClasses.EntityObject를 상속받은 클래스로 생성되며 역시 관련 프로퍼티들이 구현되어 있다.<br />
<br />
Entity Framework은 LINQ to Entity에서 처럼 LINQ의 특성을 활용할 수도 있고 LINQ 특성이 아닌 자체 API를 쓸 수도 있으며,&nbsp;LINQ to Entity는 Entity Framework을 쉽게 사용할 수 있는 또 하나의 Wrapper 같은 역할을 한다.<br />
<br />
참고로, LINQ to SQL에서도 syntax상에서 지원하는 from, where, select 등의 구문을 통한 type-safe한 방식이외에도 LINQ Dynamic Query Library를 써서 실시간으로 query 문장을&nbsp; string concatenation을 이용하여 만들어 낼 수 있다. LINQ Dynamic Query Library는 스캇 구슬리 블로그를 참고하길 바란다.<br />
<a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx">Scott Guthrie 블로그</a><br />
<br />
<br />
LINQ to SQL과 Entity Framework (LINQ to Entity)의 동작 방식이나 생성되는 화일 및 클래스의 형태가 너무도 유사하여 하나를 알게 되면 다른 하나도 쉽게 적응할 수 있을 것으로 보인다. 아울러, 예전 LINQ팀이 밝혔듯이 LINQ to SQL에서 LINQ to Entity로의 자동 변환 기능도 제공할 예정이기에 LINQ to SQL에 투여하는 시간이 헛된 것은 아닐 듯 싶다.<br />
<br />
<div align="left">
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px"  border="0" alt="" src="http://acroama.isblog.net/Uploads/1/200801/Thumbnail/LINQ2SQL1_t.jpg" /></div>
</div>
<br />
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200801/Thumbnail/LINQ2Entity_t.jpg" /></div>
<br />
<br />]]></description>
            <category>새소식</category>
            <category>LINQ</category>
            <category>Entity Framework</category>
            <author>오롯이</author>
            <pubDate>Tue, 22 Jan 2008 17:10:55 +0900</pubDate>
        </item>
        <item>
            <title>[버튼 그룹 리포트] What's Up, .DOC ?</title>
            <link>http://acroama.isblog.net/blog_post_63.aspx</link>
            <description><![CDATA[&nbsp;IT 전문 조사 기관인 Burton Group에서 문서 포맷에 관한 비교 조사 보고서를 만들었다.&nbsp;<br />
<br />
<a target="_blank" href="http://www.burtongroup.com/Guest/Ccs/WhatsUpDoc.aspx">What&rsquo;s Up, .DOC? ODF, OOXML, and the Revolutionary Implications of XML in Productivity Applications</a><br />
&nbsp;<br />
&nbsp;현재 마이크로소프트 주도로 ISO 표준으로 등록 프로세스를 밟고 있는 OOXML (Office Open XML)과, 썬, IBM이 주축이되고 Novell 등이 관련 소프트웨어를 만들고 있는 OpenOffice 기반의 ODF (OpenDocument Format)에 관한 심도 있는 분석 리포트이며,&nbsp;마이크로소프트와 전혀 상관없이&nbsp;독자적으로 발간한&nbsp;보고서이다. 아울러 등록만 하면 누구나 다운로드 받을 수 있다.<br />
<br />
&nbsp;내용을 간단히 언급하면,<br />
- Open XML은 ODF에 비해 상당히 표현 능력이&nbsp; 뛰어나고, IT 환경 친화적이며 애플리케이션 지향적이다. ODF보다 더 복잡하나 이것은 위의 기능에 비추어 봤을 때 필요이상으로 복잡한 것은 아니다.<br />
- ODF의 기능을 살펴보면, ODF는 현실 세계의 엔터프라이즈 요구사항에 대해 불충분하며, 따라서 ODF의 사용처는 복잡한 문서 모델링에 대한 요구 사항이 없거나, 마이크로소프트 오피스 문서와 일치(통합)의 요구 사항이 없는 시나리오에 한정될 것이다.<br />
- ODF와 Open XML은 서로 다른 디자인 요구 사항과 우선 순위를 위해 생겨난 복수 표준이며 서로 호환 가능한 포맷은 아니다.<br />
- Open XML은 마이크로소프트 오피스 애플리케이션을 지원하는 환경적인 요인으로 인해 광범위하고 빠른 속도로 확산될 것이다.<br />
- 저자의 포괄적인 권고사항은 Open XML의 광범위한 사용과 예외적으로 ODF를 사용하라는 것이다.<br />
<br />
전체적으로 40페이지가 넘은 보고서이기 때문에 훨씬 방대한 내용을 담고 있다.&nbsp;<br />
관심있는 사람은 위 싸이트에서 다운로드 받아 살펴보기 바란다.]]></description>
            <category>OpenXML</category>
            <category>OpenXML</category>
            <category>문서표준</category>
            <author>오롯이</author>
            <pubDate>Mon, 21 Jan 2008 16:05:43 +0900</pubDate>
        </item>
        <item>
            <title>오픈 소스 코드가 프로젝트를 위험에 빠뜨릴 수 있다 ??</title>
            <link>http://acroama.isblog.net/blog_post_62.aspx</link>
            <description><![CDATA[LinuxInsider 1월 15일자에 다음과 같은 기사가 실렸다. 숨겨진 오픈 소스 코드가 당신의 애플리케이션을 위험에 빠뜨릴 수 있다라는.<br />
<br />
<a target="_blank" href="http://www.linuxinsider.com/story/How-Vulnerable-Is-Your-Open-Source-Software-61202.html">Is Hidden Open Source Code Putting Your Apps at Risk?</a><br />
<br />
이 글에 언급된 오픈 소스로는 Apache Geronimo, JBoss Application Server, Libtiff, Net-SNMP, ZLIB 등이다.&nbsp;Apache Geronimo는 IBM(?)의 코드 기부로 시작된 무료 EJB 서버이며, JBoss는 얼마전 RedHat 인수한 역시 무료 EJB 서버이다.&nbsp;<br />
<br />
&nbsp;소프트웨어 위험 관리 솔루션 회사인 Palamida의 조사 결과에 지난 한해 따르면 금융, 기술, 정부 등 다양한 분야의 엔터프라이즈를 조사하여&nbsp;3억 라인 이상의 코드를 분석한 결과 위에 언급한 다섯 가지 오픈 소스에서 보안 위험성을 가장 많이 간과하며 애플리케이션이 구축되고 있음을 발견하였다.<br />
<br />
&nbsp;Palamida의 리포트는 오픈 소스가 상용 애플리케이션 보다 더 보안에 취약하다는 것을 지적한 것은 아니라고 밝히고 있다. 많은 프로젝트들이 시간이나 비용에 쫓겨 시스템을 구축시에 보안에 대해 전혀 고려하지 않고 진행되고 있으며 이로 인해 많은 위협 요소들이 발생한다고 지적한다.<br />
&nbsp;<br />
&nbsp;또 다른 견해로는 오픈 소스가 보안 위협 발생시 상용 보다 좀 더 빨리 패치 등이 나온다고 밝히고 있다.&nbsp;<br />
<br />
....<br />
<br />
&nbsp;개인적인 생각에, 오픈 소스를 중요한 애플리케이션 구축에&nbsp;적용할 때는 본인이 꼼꼼히 점검해야 한다. 하나 이상의 오픈 소스를 써서 이루어진, 특히 OS에서부터 다양한 오픈 소스 모듈을 엮어 이루어진 애플리케이션의 경우, 해당 오픈 소스 모듈의 보안 위협 때문에 해당 모듈에 대한 패치가 나오기 전까지 전체 시스템이 위험에 빠질 수 있다. 또한 오픈 소스들은 대부분 그러하듯 사용하는 사람, 즉, 자기책임하에 해당 모듈을 사용하는 것이 일반적이다. 물론 유명한 것들은 커뮤니티도 많고, 유료 서비스를 제공하지만...&nbsp;<br />
<br />
&nbsp;시장에서 특히 우리나라의 경우, 오픈 소스 하면 무엇이든지 용서가 되는 경향이 있다. 오픈 소스니까 좀 느려도&nbsp;되고, 오픈소스니까 좀 불편해도 되고, 오픈소스니까... 오픈소스이니까...&nbsp;오픈 소스를 쓰고 오픈 툴을 써서 불편하게 프로젝트하는 것이 오히려 근사해 보이기까지 한다. 자동화된 툴을 써서 GUI를 통해 각종 환경을 설정하면 초보 취급을 받고 커맨드라인에서&nbsp;파이프 써 가며&nbsp;다양한&nbsp;커맨드 엮어&nbsp;뭔지 모르지만 죽 화면 가득 띄우면 전문가다와 보이기 까지 한다.&nbsp;예전 회사에 겪었던 것인데, 미국 본사에서 온 박사는 윈도우를 주로 사용하면서도 Cygwin을 통해 커맨드라인&nbsp;열어&nbsp;어떤&nbsp;폴더까지 슬래시/백슬래시 써가며 찾아가 결국 노트 패드 열어 문서를 확인하는 것을 보면서 애처롭기까지 했다.&nbsp;윈도우에 포팅안 된 많은 오픈 서버를 위해 Cygwin을 써서 테스트하는 것은 이해할 수 있지만...&nbsp;&nbsp;혹은 세살 버릇 여든 간다는 속담처럼 한번 손에 익은 버릇일 수도...&nbsp;<br />
<br />
&nbsp;오픈 혹은 오픈소스 (이 둘은 엄연히 다르다)는 특정 플랫폼, 특정 언어의 문제가 아니다. 오픈 소스의 위력은 이미 자바에서 확인되었고 닷넷 또한 오픈 소스의 활성화를 기대하고 있다. 대부분의 경우 상용이 먼저 시장을 점렴하고 이후 오픈 소스가 차차 세력을 넓혀 상용 소프트웨어의 자리를 빼았는 것이 일반적이다. 각종 라이브러리 시장이 그러했고 프레임웍(특히 각종 컨테이너형 프레임웍)이 또한 그러했으며, 개발 툴 또한 점차 그런 양상을 띄는 듯 보인다. 오픈과 상용 소프트웨어가 전달하고자 하는 가치가 같다면 상용 소프트웨어는 존재 근거를 잃게 되겠지만, 많은 상용 소프트웨어 업체들은 바로 차별화를 내세워 시장에서 오픈 소스와 경쟁하고 있는 것이다.]]></description>
            <category>새소식</category>
            <category>오픈소스</category>
            <category>보안</category>
            <author>오롯이</author>
            <pubDate>Mon, 21 Jan 2008 11:05:07 +0900</pubDate>
        </item>
        <item>
            <title>Syndicated Client Experiences Starter Kit &amp; Reader SDK 공개</title>
            <link>http://acroama.isblog.net/blog_post_61.aspx</link>
            <description><![CDATA[&nbsp;WPF의 기능 중에서&nbsp;문서 처리 관련하여 온라인 신문 및 잡지 업체의 관심을 끈 기술이 News Reader 인데, 이번에 News Reader를 쉽게 개발할 수 있는&nbsp;SDK가 공개되었다.&nbsp;News Reader 형태의 솔루션으로 현재 많은 이들이 접할 수 있는 것은 <a target="_blank" href="http://windowsclient.net/wpf/starter-kits/sce.aspx">NewYork Times Reader</a>, <a target="_blank" href="http://seattlepi.nwsource.com/newsreader/">Seattle P-I Reader</a> 그리고 MSDN 잡지를 웹 브라우저가 아닌 전용 뷰어를 통해 볼 수 있는 <a target="_blank" href="http://windowsclient.net/wpf/starter-kits/sce.aspx">MSDN Reader</a>, Architecture Journal을 볼 수 있는 <a target="_blank" href="http://msdn2.microsoft.com/en-us/arcjournal/default.aspx">Architecture Journal Reader</a> 등이 있다.&nbsp;<br />
<br />
&nbsp;<a target="_blank" href="http://windowsclient.net/wpf/starter-kits/sce.aspx">Syndicated Client Experiences Starter Kit &amp; Reader SDK&nbsp;구경하기</a><br />
<br />
&nbsp;MSDN Reader나 Architecture Journal Reader 등은 마이크로소프트의 잘 정리된 기술 아티클을 접할 수 있는 좋은 도구이다.<br />
<br />
<div align="left"><a target="_blank" href="http://windowsclient.net/wpf/starter-kits/sce.aspx"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200801/Thumbnail/msdn_t.jpg" /></a></div>
<br />
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200801/Thumbnail/architecturejournal_t.jpg" /></div>
<br />]]></description>
            <category>SCE</category>
            <category>News Reader</category>
            <author>오롯이</author>
            <pubDate>Fri, 18 Jan 2008 16:43:06 +0900</pubDate>
        </item>
        <item>
            <title>Visual Studio 2008 정식 출시 !!!</title>
            <link>http://acroama.isblog.net/blog_post_44.aspx</link>
            <description><![CDATA[&nbsp;Visual Studio 2008 이 우리 시간으로 어제 (미국 시간으로 오늘) <a target="_blank" href="http://www.microsoft.com/presspass/features/2007/nov07/11-19developerqa.mspx">정식 출시</a>되었다. 이는 .NET Framework 3.5의 출시를 의미한다. .NET Framework 3.5에는 이전에는 볼 수 없었던 많은 기능들이 포함되어 있다. 가장 큰 특징으로는 LINQ를 들 수 있는데, 이는 함께 출시된 C# 3.0, VB 9.0에서 언어 차원에서 지원하는 OR Mapping 도구라 할 수 있다. LINQ 중에 LINQ to SQL이 엄밀히 하면 OR Mapping 이라 할 수 있으며, 향후 출시될 ADO.NET Entity Framework기반의 진정한 의미의 OR Mapping 방안인 LINQ to Entities가 대기하고 있다. LINQ to SQL과 LINQ to Entities의 가장 큰 차이는 객체와 테이블(혹은 뷰) 간의 일대일이냐 일대다 인가의 차이이며 그 밖의 차이에 대해서는 이전 포스팅을 참고하면 좋을 듯 하다. ADO.NET에 대한 큰 틀의 변화의 완성을 내년 상반기 .NET Framework 3.5 SP1에 완성될 것으로 보인다. 이때가 되면, ADO.NET Entity Framework이 출시되고 이를 기반으로 현재 진행중인 Astoria 프로젝트도 정식 출시될 것으로 보인다. Astoria는 한마디로 데이터베이스의 데이터 정보를 웹 서비스로 노출하여 REST 기반의 클라이언트가 호출하여 로컬 데이터베이스처럼 사용할 수 있는 신개념의 데이터서비스이다. Astoria의 홈페이지를 참고하면 좀 더 상세한 정보를 얻을 수 있다.<br />
<br />
&nbsp;<a target="_blank" href="http://astoria.mslivelabs.com/">Astoria 홈 페이지 가기</a><br />
<br />
&nbsp;<a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en">.NET Framework 3.5 Runtime 다운로드</a><br />
<br />
&nbsp;그 밖에 혁신적인 부분은 ASP.NET 3.5가 내장되어 AJAX 구현시 문제가 되었던 JavaScript에 대한 intellisense 기능이 추가되고&nbsp;JavaScript 디버깅이 가능하게 되어&nbsp;사용자의 개발 생산성을 획기적으로 증대시킬 것으로 보인다. 아울러 일반적인 intellisense 기능도 성능이 향상되어 좀 더 빠르게 화면상에 보여지며, 또한&nbsp;대용량 파일을 편집시&nbsp;느려지던 부분도 개선하였다.<br />
<br />
&nbsp;Visual Studio 2008은 현재 영문 버전만 출시되었으며 한글 버전은 내년 1월 중에 정식 발매될 예정이다. Visual Studio 2008 영문 버전은 현재 MSDN 가입자는&nbsp;MSDN&nbsp;싸이트에서 다운로드 받을 수 있으며,&nbsp;무료 버전인 Visual Studio 2008 Express는 아래 싸이트에서 다운로드 받을 수 있다.<br />
<br />
&nbsp;<a target="_blank" href="http://www.microsoft.com/express">Visual Studio 2008 Express 다운로드</a><br />
<br />
<br />
&nbsp;오늘 건대 새천년 기념관에서 <a target="_blank" href="http://www.microsoft.com/korea/msdn/devdays2007/seoul_session.aspx">DevDays 2007</a>을 개최하고 있으며 여기에서 Visual Studio 2008의 기능이 일부 소개될 것으로 보인다.&nbsp;<br />
<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: '맑은 고딕'; mso-bidi-font-family: 굴림; mso-ansi-language: EN-US; mso-fareast-language: KO; mso-bidi-language: AR-SA"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">&nbsp; <center>
<div align="left"><a target="_blank" href="http://www.microsoft.com/korea/msdn/devdays2007/seoul_session.aspx"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200711/devdays.jpg" /></a></div>
<br />
</center><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span>]]></description>
            <category>새소식</category>
            <category>VisualStudio2008</category>
            <category>.NET Framework 3.5</category>
            <category>Astoria</category>
            <category>DevDays</category>
            <category>.NET Framework</category>
            <author>오롯이</author>
            <pubDate>Thu, 17 Jan 2008 23:20:17 +0900</pubDate>
        </item>
        <item>
            <title>Visual Studio 2008 (코드명 Orcas) Beta 2 다운로드</title>
            <link>http://acroama.isblog.net/blog_post_27.aspx</link>
            <description><![CDATA[<p>&nbsp;Visual Studion 2008 Beta 2와 .NET Framework 3.5 Beta 2 가 오늘 오후에 공개된다. 아울러, Silverlight 1.0 RC 도 내일이나 모레 공개된다. 이와 함께 세 제품에 대한 Go Live license도 진행된다. Go Live는 정식 버전이 아니더라도 개발사나 고객의 책임하에 Production에 활용할 수 있는 제도이다.<br />
&nbsp;Visual Studio 2008과 Silverlight 1.0을 통해 그 어느때보다 화려하고 인터랙티브한, 사용자 경험을 가져다 주는 웹 애플리케이션을 손 쉽게 개발할 수 있게 된다. 이번 베타 공개와 맞물려 Visual Studio 2008 에 Silverlight Add-in 모듈이 CTP(Community Technology Preview)&nbsp;형태로 공개되기 때문이다.<br />
<br />
&nbsp; 지금까지의 사용자 피드백을 통해 얻어진 의견을 바탕으로 Visual Studio 2008, .NET Framework 3.5, Silverlight 1.0 정식 버전이 올해말 안으로 출시될 예정이다.&nbsp;<br />
&nbsp; 참고로 Visual Studio 2008 공식&nbsp;론치 행사는 미국 기준으로 2008년 2월 27일, 한국어 버전은 2008년 4월 초에 예정되어 있다. 이때는 Visual Stuio 2008, SQL Server 2008, Windows Server 2008이 동시에 론치된다.<br />
<br />
&nbsp; Visual Studio 2008 Beta 2는 아래 링크에서 다운로드 받을 수 있다.<br />
<a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx">http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx</a><br />
<br />
<br />
<br />
<br />
</p>]]></description>
            <category>새소식</category>
            <category>VisualStudio2008</category>
            <category>Silverlight</category>
            <category>.NET Framework</category>
            <author>오롯이</author>
            <pubDate>Thu, 17 Jan 2008 23:19:29 +0900</pubDate>
        </item>
        <item>
            <title>Dependency Injection (DI)</title>
            <link>http://acroama.isblog.net/blog_post_5.aspx</link>
            <description><![CDATA[Dependency Injection(DI)은 클래스 사이의 Dependency를 사람의 코딩에 의해서가 아니고 자동화된 코드나 미리 정의된 구성 파일에 의거하여 런타임시에 해소해주는 패턴을 말한다.<br />
<br />
DI를 제공하는 방식은 크게 두 가지로 나눌수 있다.(있었다?)<br />
<br />
소스코드 자체에 대한 변형(닷넷:Attribute-based programming, 자바:Annotation)을 수반하여 컴파일 타임시 해당 지시어가 해석되어 적절한 코드가&nbsp;삽입되거나 필요한 클래스가 생성되는&nbsp;정적인 방식과, 소스코드에 대한&nbsp;변형없이 DI에 대한 지시어가 XML&nbsp;기반의 설정파일에 기술되어 런타임시에&nbsp;Dependency가 해소되는 동적인 방식이 있다. (Spring framework)<br />
<br />
하지만, 현재 자바나 닷넷의 경우 소스코드에 지시어를 직접 기술하는 것을 제공하고 그것이 표준으로 채택하고 있기 때문에 두 플랫폼에서 DI를 사용하는 방식은 전자의 Attribute-based programming (or Annotation) 형태가 된다고 할 수 있다. (좀 더 엄밀히 말하면, 닷넷의 경우 Attribute은 DI를 위해 사용되기 보다는 AOP (Aspect-Oriented Programming)를 위해 사용되고 있다. 물론 Attribute가 확장 가능하기 때문에 충분히 DI를 위해 사용될 수 있는데 예로써 ObjectBuilder가 있다.)<br />
<br />
<br />
<strong>닷넷의 경우</strong><br />
&nbsp;<br />
기본적으로 System.ComponentModel namespace를 통해 lightweight, built-in 형태로 지원한다. 하지만, Enterprise Services와 달리 각종 서비스나 기능을 제공하지는 않고 단지 service injection 기능만을 제공한다. System.ComponentModel의 기능을 사용하기 위해서는 특정 인터페이스를 구현하여야 하는 단점이 있다.<br />
<br />
자바에서 언어 차원에서 기본적으로 DI를 제공하기 시작한 것과 대조적으로 닷넷에서는 닷넷 프레임웍만으로 DI를 프로그래밍에서&nbsp;사용할 수&nbsp;없다. 다만, MS의 Patterns &amp; Practices 팀에서 발표한 ObjectBuilder를 사용하면 Attribute 기반의 DI를 사용할 수 있다. ObjectBuilder가 제공하는 DI의 종류는 constructor injection, method injection, property injection이 있다.&nbsp;<br />
&nbsp;<br />
<br />
<span class="kwrd">&nbsp;&nbsp;&nbsp; using</span> Microsoft.Practices.ObjectBuilder;<br />
<br />
&nbsp;&nbsp;&nbsp; <span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> MyForm : Form<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">private</span> Customer _customer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">private</span> Foo _foo;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="rem">// Constructor Injection</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [InjectionConstructor()]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">public</span> MyForm(Customer customer) : <span class="kwrd">this</span>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">this</span>._customer = customer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="rem">// Setter Injection</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Dependency( SearchMode = SearchMode.Local, CreateType = <span class="kwrd">typeof</span>(Foo), NotPresentBehavior = NotPresentBehavior.CreateNew)]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">public</span> Foo Foo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">this</span>._foo = <span class="kwrd">value</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="rem">// Method Injection</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [InjectionMethod()]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="kwrd">public</span> <span class="kwrd">void</span> Display([Dependency(CreateType = <span class="kwrd">typeof</span>(Foo), NotPresentBehavior = NotPresentBehavior.CreateNew)] Foo foo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Diagnostics.Trace.WriteLine(foo.Name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
ObjectBuilder는 CAB(Composite Application Block)에서 컨테이너(Shell)에, Enterprise Library 2.0에서는 Factory로서 이미 사용되고 있다.<br />
<br />
참고로 닷넷에서 사용할 수 있는 DI기반 컨테이너로는&nbsp;PicoContainer.NET, Maverick.NET Spring.NET(<a class="con_link" target="_blank" href="http://www.springframework.net/">http://www.springframework.net</a>) 등 자바 진영에서&nbsp;널리 사용되고 있는&nbsp;프레임웍의 닷넷 버전들과,&nbsp;Castle Project (<a class="con_link" target="_blank" href="http://castleproject.org/">http://castleproject.org</a>)에서 만들어 배포하고 있는 MicroKernel, Winsor Container 등이 있고, 그외 실제 프로젝트에서 따온 StructureMap(<a class="con_link" target="_blank" href="http://structuremap.sourceforge.net/">http://structuremap.sourceforge.net</a>)이 있다. (참고로 Castle Project에서는 웹 개발 프레임웍에 돌풍을 일으키고 있는 Rails의 닷넷 버전인 MonoRail도 제공하고 있다.)<br />
&nbsp;<br />
<br />
<strong>자바의 경우</strong><br />
<br />
- EJB 3.0 (JSR 220)에서 EJB에 대한 DI를 정의하고 있고<br />
- JAX-WS 2.0 (JSR 224)에서 Web services end-point 레퍼런스에&nbsp;대한 DI를 정의하고 있고<br />
- Common Metadata annotations for Java Platform (JSR 250)에서 각종 resource (DataSource, JMS, Mail, URL 등)에 대한 DI를 정의하고 있으며 이들 스펙을 포함하는 Java EE 5.0 은 당연히 DI를 포함하고 있다.<br />
<br />
따라서 Java EE 5.0 compliant한 컨테이너는 DI를 지원해야 하며 현재 오라클 10g, JBoss 등은 이미 EJB 3.0을 지원하고 있기 때문에 DI를 지원한다고 할 수 있다.<br />
Java EE 5.0에서 지원하는 형태로는 field injection과 setter injection이 있다.<br />
<br />
<br />
field injection은<br />
<br />
<em>@Resource</em><br />
<em>private javax.sql.DataSource AdventureDB;</em><br />
<br />
와 같이 field 선언앞에 바로 annotation으로 선언하며 별다른 정보가 없을시 field로부터 필요한 타입이나 이름을 얻어 처리한다.<br />
&nbsp;<br />
<br />
setter injection은<br />
<br />
<em>@Resource</em><br />
<em>private void setAdventureDB(javax.sql.DataSource ds)</em><br />
<em>{</em><br />
<em>&nbsp;&nbsp; adventureDB = ds;</em><br />
<em>}</em><br />
<br />
<em>private DataSource adventureDB;</em><br />
<br />
와 같이 field 선언 앞에 setter를 정의하여 컨테이너가 자동으로 setter를 호출하여 injection한다.<br />
<br />
@Resource외에도, ejb에 대한 Dependency 해소를 위해 @EJB를, 웹 서비스에 대한 Dependency 해소를 위해 @WebServiceRef를 제공한다.<br />
<br />
<em>@EJB LocalStatelessInterface sless;</em><br />
public class MyComponent {<br />
&nbsp;&nbsp;<em> @WebServiceRef(MyHelloService.class) HelloIF helloPort;</em><br />
<br />
&nbsp;&nbsp; public void myMethod() {<br />
&nbsp;&nbsp;&nbsp;&nbsp; // Use helloPort directly.<br />
&nbsp;&nbsp;&nbsp;&nbsp; helloPort.sayHello();&nbsp; // Invoke an operation.<br />
&nbsp;&nbsp; }<br />
}<br />
&nbsp;<br />
Java EE 5.0 DI의 단점으로는 managed class에서만 지원하다는 점 즉, EJB나 Servlet과 같이 컨테이너가 관리하는 클래스에서만 DI를 지원 받을 수 있고 helper class의 경우 여전히 JNDI lookup을 사용하여야 한다. 닷넷과 달리 자바는 JDK 5.0이 되어서야 Annotation을 도입하였기 때문에 아직 이에 대해 개발자들이 익숙치 않아 예전 방식을 고수하는 경향이 있다.<br />
&nbsp;<br />
DI 기반 오픈 프레임웍으로는 Spring 프레임웍, PicoContainer/NanoContainer 가 있다.<br />
&nbsp;<br />
<br />
------------------------------------<br />
&nbsp;<br />
<br />
DI에 대한 좀더 딱딱한(?) 문서를 원한다면 아래 파틴 파울러의 글을 추천한다.<br />
<br />
<a class="con_link" target="_blank" href="http://www.martinfowler.com/articles/injection.html">http://www.martinfowler.com/articles/injection.html</a><br />]]></description>
            <category>닷넷과 자바</category>
            <category>DI</category>
            <author>오롯이</author>
            <pubDate>Thu, 17 Jan 2008 23:16:01 +0900</pubDate>
        </item>
        <item>
            <title>드디어 .NET Framework 소스 공개하다.</title>
            <link>http://acroama.isblog.net/blog_post_60.aspx</link>
            <description><![CDATA[&nbsp;.<font color="#0000ff">NET Framework 소스 코드가 드디어 공개되었다</font>. 지난 10월 Scott Guthrie가 블로그에 .NET Framework 소스 공개를 언급한 이후 많은 이들이 소스 공개 시점을 궁금해하였는데, 오늘 소스 코드가 공개되었다. 이미 알려진 바대로 Visual Studio 2008에서 실시간으로 .NET Framework의 소스코드를 다운 받으며 디버깅을 진행할 수도 있고 로컬에 심볼을 캐시하여 다운로드 시간을 줄일 수 있다. 현재 소스 코드를 볼 수 있는 .NET Framework 라이브러리는 다음과 같다.
<p><font color="#0000ff">.NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).&nbsp;<br />
ASP.NET (System.Web, System.Web.Extensions)&nbsp;<br />
Windows Forms (System.Windows.Forms)<br />
Windows Presentation Foundation (System.Windows)&nbsp;<br />
ADO.NET and XML (System.Data and System.Xml)</font>&nbsp;<br />
<br />
현재 LINQ, WCF, WF 등을 포함한 추가적인 라이브러리의 소스 공개를 추진중에 있다.<br />
<br />
예전 발표때와 달라진 것은 라이선스에 관한 것이다. 윈도우 기반 애플리케이션 개발이 아니라면 본 소스 코드에 접근하여 볼 수 있는 권한이 원칙적으로 부여되지 않으며, 반대로 개발중인 애플리케이션이 윈도우 플랫폼 기반이라면 설사 .NET Framework의 기능과 유사하더라도 .NET Framework 소스에 접근할 수 있다. 본 라이선스는 read-only reference license 이다.<br />
<br />
자세한 사항은 Scott Guthrie의 블로그와&nbsp;&nbsp;Shawn Burke의 블로그를 참조하기 바란다.<br />
<br />
<a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx">Scott Guthrie 블로그</a> - 발표 내용 및 전반적인 사항<br />
<a target="_blank" href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx">Shawn Burke 블로그</a> - 디버깅 방법 설명</p>]]></description>
            <category>새소식</category>
            <category>소스공개</category>
            <category>.NET Framework</category>
            <author>오롯이</author>
            <pubDate>Thu, 17 Jan 2008 23:14:42 +0900</pubDate>
        </item>
        <item>
            <title>닷넷 프레임웍 소스 공개 예정</title>
            <link>http://acroama.isblog.net/blog_post_37.aspx</link>
            <description><![CDATA[&nbsp;<font color="#0000ff">마이크로소프트가 닷넷 프레임웍의 소스를 공개하기로 하였다</font>. 닷넷 프레임웍 3.5와 Visual Studio 2008 출시에 즈음하여 소스를 공개하기로 한 것이다.&nbsp; 공개 범위는 <strong>Basic Class Library</strong> (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime,&nbsp;System.Text, etc), <strong>ASP.NET</strong> (System.Web), <strong>Windows Forms</strong> (System.Windows.Forms), <strong>ADO.NET</strong> (System.Data), <strong>XML </strong>(System.Xml), and <strong>WPF</strong> (System.Windows) 등이다. 위 소스들은 Microsoft Reference License (MS-RL)에 동의하는 조건에서 접근이 허락된다.&nbsp;<br />
&nbsp; 또하나&nbsp;주목할 만한 점은, <font color="#3366ff">Visual Studio 2008에서 설정만으로 위 소스들을 다운로드&nbsp;받지 않고도 디버깅에서 사용할 수 있도록 마이크로소프트가 소스를 웹으로 서비스한다는 점이다</font>.&nbsp;<br />
<br />
&nbsp;자바는&nbsp;초기부터 소스를 공개하여 많은 초보 개발자들로 하여금 소스 작성의 본보기로 사용하도록 하였고, 때로 말로 설명하기 어려운 소스 구현 부분(예. 객체 동일 여부 판단)을 직접 확인하면서&nbsp;예를 들면 equals와&nbsp;= 연산자의 쓰임새 차이를&nbsp;확인할 수 있도록 하였다.&nbsp;이제 닷넷도 프레임웍의 소스를 공개하면서 이러한 개발자들의 소스 작성 능력을 배가하고 및 베스트프랙티스를 직접 확인할 수 있으며 디버깅에서 이를 활용할 수 있음으로 해서 질높은&nbsp;코드의&nbsp;생성에 도움이 줄 것으로 보인다.&nbsp;아울러 WPF 등 최신&nbsp;기술에 대한 소스 공개를 통해 신기술의 확산에도 기여할 것으로 기대된다.&nbsp;<br />
<br />
&nbsp; C#과 CLI (Common Language&nbsp;Infrastructure) 스펙은 이미 ECMA 표준으로 등록되어 공개되어 있어&nbsp;노벨에서 리눅스 버전의 닷넷 운영 환경 (CLR)을 개발/배포하는데 활용하고 있다. 이번 닷넷 프레임웍의 소스 공개는 이보다 더 나아가 닷넷 개발 환경에 대한 이해를 높이고 개발자들의 개발 생산성 향상에&nbsp;크게 기여할 것으로 보인다.<br />
<br />
&nbsp;좀 더 자세한 발표 내용과 웹 상의 닷넷 소스코드를 활용한 디버깅에 대한 사항은 Scott Guthrie의 블로그를 참조하기 바란다.<br />
<br />
&nbsp; <a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">Scott Guthrie 블로그 바로가기</a>&nbsp;]]></description>
            <category>닷넷과 자바</category>
            <category>닷넷 프레임웍</category>
            <category>.NET Framework</category>
            <category>소스공개</category>
            <author>오롯이</author>
            <pubDate>Thu, 17 Jan 2008 23:10:13 +0900</pubDate>
        </item>
        <item>
            <title>DI Container 현황</title>
            <link>http://acroama.isblog.net/blog_post_59.aspx</link>
            <description><![CDATA[&nbsp;ASP.NET MVC 프레임웍의 출시와 더불어 함께 부각되고 있는 것이 IoC (Inversion of Control) 혹은 DI (Dependency Injection) 컨테이너이다. <a target="_blank" href="http://www.martinfowler.com/articles/injection.html">마틴 파울러</a>는 이 두 용어의 쓰임새를 분명히 하고자 패턴 이름으로 DI를 쓰자고 했으나 여전히 시장에서는 IoC, DI, Hollywood Principle 등을 거의 같은 의미로 사용하고 있다.&nbsp;<br />
&nbsp;현재 ASP.NET과 연동하여 비지니스 티어에 사용할 수 있는 DI Container로 주로 언급되는 것들로는 <a target="_blank" href="http://structuremap.sourceforge.net">StructureMap</a>, <a target="_blank" href="http://www.castleproject.org/container/index.html">Windsor Container</a>, <a target="_blank" href="http://www.springframework.net">Spring.NET</a>, <a target="_blank" href="http://www.codeplex.com/objectbuilder">ObjectBuilder</a> 등이 있다.&nbsp;<br />
<br />
ObjectBuilder는 Enterprise Library (EntLib)&nbsp;2.0&nbsp;부터 도입되기 시작하여 EntLib를 구성하는 각종 App Block들의 Factory 역할을 하는 DI 컨테이너이다. 다만, EntLib를 염두해두고 만들어졌기 때문에 외부 개발자가 애플리케이션 개발에 활용하기에 적합한 API 등을 갖추고 있지는 않았고 불편하다. 이점 때문에 많은 개발자들이 이의 개선을 요구하였고 마침내, ObjectBuilder를 대신할 새로운 Lightweight한 DI 컨테이너의 개발 계획이 발표되었다. <a target="_blank" href="http://www.codeplex.com/entlib/Wiki/View.aspx?title=EntLib4%20Backlog&amp;referringTitle=Home">EntLib v4 개발의 일환</a>으로 발표되었지만, EntLib와는 함께 배포도 하고 혹은 DI 컨테이너 별도로 배포하여 다른 용도로의 활용을 쉽도록 하였으며 아울러 EntLib v4도 다른 DI 컨테이너와 사용될 수 있도록 할 예정이다. 자세한 사항은 아래 싸이트를 참조하길...<br />
<br />
&nbsp;<a target="_blank" href="http://www.codeplex.com/entlib/Wiki/View.aspx?title=EntLib4%20Backlog&amp;referringTitle=Home">Enterprise Library v4 개발</a><br />
<br />
<br />
Spring.NET은 자바 진영에서의 성공에 힘입어 닷넷으로 포팅된 DI 컨테이너이다. Spring.NET은 Spring.Java와 마찬가지로 핵심이 되는 DI 기능이외의 모든 모듈은 쉽게 빼고 넣을 수 있어서 개발자가 원하는 부분만을 취할 수 있다. 아울러 대부분의 모듈은 이미 시장에서 그 품질이 인정된 다른 프레임웍이나 기술을 그대로 활용할 수 있도록 일종의 Wrapper와 같은 모듈만을 제공함으로써, 개발자가 갖고 있는 다른 프레임웍이나 기술에 대한 경험을 그대로 활용할 수 있는 융통성을 제공하고 있다.&nbsp;&nbsp;Spring.NET은 다음과 같은 모듈로 구성되어 있다.<br />
Spring.Core : DI 기능을 구현하는 Factory이자 Registry와 같은 역할을 한다.<br />
Spring.Aop : DI와 더불의 Spring의 핵심 기능으로 불리며 AOP (Aspect-oriencted Programming)을 제공한다.<br />
Spring.Data : ADO.NET에 대한 wrapper 기능을 제공<br />
Spring.Data.NHibernate : NHibernate를 사용할 수 있는 wrapper 기능을 제공<br />
Spring.Web : ASP.NET을 사용할 때 Page에 대한 DI 기능까지 제공한다.<br />
Spring.Web.Extensions : 웹 서비스를 자바스크립트에서 접근할 수 있도록 해주는 기능이나, WCF 3.5에서는 ASMX 웹 서비스나, WCF 서비스에 기본 기능으로 제공해주고 있기 때문에 그다지 사용할 필요가 없을 듯..<br />
Spring.Services : 일반 닷넷 클래스 (PONO - Plain Old NET Object)에 대해 자동으로 proxy 등을 생성해줌으로써 ASMX 웹 서비스, Enterprise Services, .NET Remoting 이 가능해도록 하는 기능이나, WCF가 이미 제공하고 있다. 다른 점은 Spring.Services는 각종 proxy등을 통해 기존 기술을 사용할 수 있게 해주는 것이나, WCF는 새로운 방식으로 더 나은 성능을&nbsp;제공한다는 점... 예전 기술을 사용하는 경우가 아니면, 별로 효용이 없을 듯.<br />
Spring.Testing.NUnit : 단위 테스트 NUnit 사용하도록 하는 기능<br />
<br />
전반적으로 Spring.NET은 .NET Framework 2.0 기반으로 작성되었으며, 자바와 달리 닷넷의 빠른 변화를 따라잡지 못하는 면이 있다.&nbsp;]]></description>
            <category>닷넷과 자바</category>
            <category>DI</category>
            <category>Enterprise Library</category>
            <category>Spring.NET</category>
            <author>오롯이</author>
            <pubDate>Wed, 16 Jan 2008 16:51:54 +0900</pubDate>
        </item>
        <item>
            <title>[재미삼아] C# 인터페이스와 자바 인터페이스의 차이</title>
            <link>http://acroama.isblog.net/blog_post_58.aspx</link>
            <description><![CDATA[&nbsp;C#은 자바의 장점을 수용하고,&nbsp; 자바가 모델로 삼은 C++의 장점도 일부 수용하였기에 C#은 자바보다 표현 능력은 약간 낫다고 할 수 있다. C#에는 있지만 자바에는 없는 기능으로는 C++의 function pointer의 객체 버전이라 할 수 있는 delegate, 멤버 변수이외에 별도의 Property 둔 것, delegate 기반의 Event,&nbsp;indexer&nbsp;등을 들 수 있다. C#의 Interface는 자바의 Interface와 달리 위에서 언급한&nbsp;property, event,&nbsp;indexer&nbsp;등을 선언할 수 있다. 또한 이글에서 말하고자하는 아주 작지만 재밌는 차이도 있다. 예전에 유익하게 읽었던 Effective Java 기억에 Effective C#을 읽다가 의심이 나서 테스트를 하게 되었다.<br />
<br />
// C#<br />
&nbsp; interface IMsg<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; void Message();<br />
&nbsp; }<br />
&nbsp; class Parent : IMsg<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; public void Message()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;부모가 불렸네.&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;}<br />
&nbsp; class Child : Parent<br />
&nbsp; {<br />
&nbsp;&nbsp;&nbsp; public new void Message()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(&quot;자식이 불렸네.&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }<br />
<br />
// Java<br />
public interface IMsg <br />
{<br />
&nbsp;void Message();<br />
}<br />
public class Parent implements IMsg<br />
{<br />
&nbsp;public void Message()<br />
&nbsp;{<br />
&nbsp;&nbsp;System.out.println(&quot;부모가 불렸네.&quot;);<br />
&nbsp;}<br />
}<br />
public class Child extends Parent<br />
{<br />
&nbsp;public void Message()<br />
&nbsp;{<br />
&nbsp;&nbsp;System.out.println(&quot;자식이 불렸네.&quot;);<br />
&nbsp;}<br />
}<br />
<br />
두 언어 중 하나만 아는 사람이 봐도 위 코드는 같게 구현되어 있음을 알 수 있다. 이 경우 아래와 같은 코드에 의해 찍히는 값은 어떻게 될까 ?<br />
&nbsp;&nbsp;IMsg message = new Child();<br />
&nbsp;&nbsp;message.Message();<br />
<br />
C#의 경우는 &quot;부모가 불렸네&quot;, Java의 경우 &quot;자식이 불렸네.&quot; 이다.<br />
Effective C# (빌와그너 저, 김명신 역)는 이렇게 적고 있다. C#에서 Inferface의 구현은 virtual 메소드의 overriding과는 전혀 다른 것이며, Interface는 그것을 구현한 클래스를 바라보는 제한된 창이며 계약이다.<br />
<br />
Java와 같은 결과를 얻으려면 어떻게 할까 ?<br />
우선, Child 클래스의 선언시 Interface를 구현하는 것으로 지정한다. 즉,<br />
class Child : Parent, IMsg<br />
<br />
자바와 마찬가지로 C#도 클래스의 단일 상속, 인터페이스의 복수 상속을 규정하고 있다.<br />
혹은 다음과 같은 Parent 클래스의 IMsg 구현시 메소드를 virtual로 선언하고 Child에서 override하면 된다.<br />
<br />
class Parent : IMsg<br />
{<br />
&nbsp; public virtual void Message()<br />
&nbsp; {<br />
<br />
class Child : Parent<br />
{<br />
&nbsp; public override void Message()<br />
&nbsp; {<br />
<br />
이 테스트에서 추론할 수 있는 것은 자바의 경우 Interface의 구현과, 상속을 통한 polymorphism이 동일하게 동작하는 듯 하며, C#은 이를 분명히 구분하고 있다.]]></description>
            <category>닷넷과 자바</category>
            <category>Interface</category>
            <author>오롯이</author>
            <pubDate>Fri, 11 Jan 2008 17:06:27 +0900</pubDate>
        </item>
        <item>
            <title>ASP.NET MVC Framework에 대한 기사</title>
            <link>http://acroama.isblog.net/blog_post_52.aspx</link>
            <description><![CDATA[&nbsp;얼마전 공개한 ASP.NET 3.5 Extension CTP에 대한 시장의 반응이 뜨겁다. 그 중에서도 ASP.NET MVC에 대해 많은 기대와 함께 격려가 이어지고 있다. 닷넷을 엔터프라이즈용 개발 플랫폼으로 매김하는 데 있어서 기존 VB 스타일의 드래그앤 드롭 및 컨트롤 기반의 개발 방식으로는 한계가 있어 많은 개발자들이 마이크로소프트에게 다른 방식의 접근 방식을 요구해왔었고 이에 대한 마이크로소프트의 응답이 ASP.NET MVC인 것이다. 아래는 RedmondDeveloper에 실린 ASP.NET MVC에 대한 기사다.<br />
<br />
<a target="_blank" href="http://reddevnews.com/news/devnews/article.aspx?editorialsid=911">ASP.NET on Rails, Finally</a><br />
<br />
<br />
&nbsp;기존 ASP.NET이 VB 스타일의 개발 방식,&nbsp;ViewState에 의존 등으로 인해 개발자들에게 유지보수성 높고 확장성 뛰어난 엔터프라이즈 웹 애플리케이션 개발하는데 있어서 대안을 찾게 만들었다면, 새로운 MVC 프레임웍은 쉬운 직관에 의한 매핑 방식 채택과 대부분의 개발자들에게 익숙한 MVC 패턴의 적용, 그리고 여러 다른 기술을 각 부문(MVC) 마다 적용할 수 있는 확장성을 제공하고 있다.&nbsp;흥미로운 사실은 SubSonic 창업자를 고용하여 SubSonic의 scaffolding 기능을 ASP.NET에 추가하여 Rails의 Scaffolding 기능을 ASP.NET에서도 적용할 수 있게 하였다. 참고로 SubSonic은 창업자가 마이크로소프트에 고용되었더라도 앞으로도 계속 오픈 소스로 제공된다.<br />
<br />
&nbsp;개인적인 생각에,&nbsp;이제껏 ASP의 성공과 VB 개발자의 충성도에 도취되어 마이크로소프트가 ASP.NET의 개발 방향에 대해 너무 느긋해하지 않았나하는 생각이 든다.&nbsp;패턴 앤 프랙티스 책자에서도&nbsp;오래전부터 Page Controller와 Front Controller의 차이와 이의 적용을 언급하면서 복잡한 분기문이 많아지고 확장성을 원할 때 Front Controller가 적합하다며 샘플까지 공개해놓고 지금껏 Page Controller 기반의&nbsp;ASP.NET 자체만을 드라이브한 것도&nbsp;아이러니한 모습이&nbsp;아닐 수 없다.&nbsp;다행히도 ASP.NET MVC의 등장으로 인해 오랜 개발자들의 숙원을 해소하였고,&nbsp; 오픈 소스의 접목이라는 모습을 함께 보여줌으로 인해 앞으로 닷넷 웹 개발의 방향성을 명확히 한 것이&nbsp;의미 있는 일이라 생각한다.&nbsp;오픈 진영을 끌어 안으려는 마이크로소프트의 적극적인 모습과 오픈 진영에 대한 닷넷 개발자들의 꾸준한 관심, 그리고&nbsp;이를 통해 닷넷 개발 역량의 확대 및 시장의 확대야말로 지금 우리 닷넷 개발 진영에 필요한 일이라 생각한다.<br />]]></description>
            <category>새소식</category>
            <category>ASP.NET MVC</category>
            <author>오롯이</author>
            <pubDate>Wed, 09 Jan 2008 17:09:24 +0900</pubDate>
        </item>
        <item>
            <title>ASP.NET MVC Framework에 대한 Scott Guthrie의 첫번째 공개 강연 동영상</title>
            <link>http://acroama.isblog.net/blog_post_57.aspx</link>
            <description><![CDATA[&nbsp;ASP.NET MVC Framework이 매월 CTP 형태로 공개 되면서 출시가 임박함을 알리고 있다. ASP.NET MVC가 개발자들의 관심을 끄는 이유는&nbsp;기존 WebForms 기반의 ASP.NET 웹 애플리케이션 개발 방식이&nbsp;갖는 ViewState와&nbsp;Postback의 한계로 인해를 발생하는 여러 문제점을 극복해줄 수 있는 프레임웍이기 때문이다. ASP.NET의 ViewState 역할과 Postback 처리 방식은 각 Page의 라이프싸이클 관리와&nbsp;이벤트 처리 로직을 통해 Stateless한 HTTP의 속성과 배치되는 개발 방식에 개발자들을 익숙하게 만들어 복잡하고 방대한 스케일의 웹 애플리케이션 개발에 많은 어려움을 가져다 주었다. 많은 웹 개발자들이 유독 닷넷에만 없는 MVC 기반 프레임웍의 출현을 바라고 있었고, 마이크로소프트가 Page&nbsp;Controller 기반의 WebForms에 주력하고 있을때, 닷넷&nbsp;오픈 진영에서 하나 둘 이에 대한 구현이 나타나기에 이르렀고 마침내 마이크로소프트가 Front Controller 기반의 프레임웍을 제공하기에 이른 것이다.<br />
<br />
&nbsp;아래는 Scott Guthrie가 처음으로 ASP.NET MVC 프레임웍 대해 공개 강연한 동영상이다. 화질이 썩 좋지는 않으나 ASP.NET MVC의 배경이나 특징, 사용법 등을 쉽게 설명하고 있다. 언뜻 언뜻 비치는 코드가 현재의 CTP 버전과 조금 다른 듯 하다.<br />
<br />
&nbsp;<a target="_blank" href="http://www.hanselman.com/silverlight/ScottGuAtAltNetConf/">Scott Guthrie 동영상</a><br />
<br />
&nbsp;본 동영상은 Silverlight가 설치되어 있는 브라우저에서 볼 수 있다.]]></description>
            <category>닷넷과 자바</category>
            <category>ASP.NET MVC</category>
            <author>오롯이</author>
            <pubDate>Wed, 09 Jan 2008 17:08:48 +0900</pubDate>
        </item>
        <item>
            <title>자바 진영의 SCA, JBI, ESB 용어 정리</title>
            <link>http://acroama.isblog.net/blog_post_56.aspx</link>
            <description><![CDATA[&nbsp;Service Component Architecture (SCA)에 잠시 살펴보자. SCA는 IBM, BEA 등이 주축이 되어 Sun의&nbsp;입김이 강한 JCP (Java Community Process)를 거치지 않고 독자적으로 표준화를 진행한&nbsp;SOA 기반의 서비스 구축에 관한 스펙이다. 당시 자바 표준을 정하는 JCP를 거치지 않고 독자 행보를 한 이들 업체들에 대해 곱지 않은 시선이 있었지만, 이들 외에도 그 당시에 JCP를 벗어나 독자 스펙을 제정하는 일이 여럿 있었다.&nbsp;(가령 볼랜드가 주축이 됐던 툴 표준화라던가...)&nbsp;그만큼 JCP에 대한 Sun 역할에 불만이 적지 않았던 것이 사실이다.&nbsp; 현재 SCA는 Oasis에 넘겨져 표준화 절차를 밟고 있으며 SCA의 홈페이지는 <a href="http://osoa.org">http://osoa.org</a>이다.<br />
&nbsp;SCA는 현재 자바만을 위한 스펙은 아니나 자바가 주축을 이루고 있다. SCA는 서비스를 제공할 애플리케이션을 컴포넌트 기반으로 어떻게 작성하고 이들 컴포넌트를 어떻게 엮어서 좀 더 복잡한 Composite Application을 만드는 가에 관한 스펙이다.&nbsp;예전에 한국마이크로소프트가 주최한 아키텍트 포럼에서 강연한 David Chappell (<a href="http://davidchappell.com">http://davidchappell.com</a>)이 언급한 바와 같이 SCA는 WCF와 여러 면에서 유사하다.&nbsp;<br />
&nbsp;가장 큰 유사성은&nbsp;하나의 비지니스 기능을 구현한 후 다양한 Binding을 제공하는 것이 Configuration 파일에서 선언하는 것만으로 가능하다. 필요한 모든 요소는 SCA 벤더가 제공하는 런타임이 다 제공한다.&nbsp;차이점이라면 WCF는 닷넷 진영에서 제공해왔던 다양한 분산 환경에서의 통신 기술들은 통합한 전혀 새로운 표준 개발 방식이라면, SCA는 새로운 분산 환경에서의 통신 표준이라기 보다는 자바 진영의 기존 분산 환경 통신 기술들을 쉽게 사용할 수 있게 중간에서 매개 역할을 하며 필요한 것들을 자동화한다는 것이다.<br />
&nbsp;서비스를 제공하는 컴포넌트를 만드는 방식에서도 WCF의 ABC (Address,Binding,Contract) 기법이 그대로 적용된다. 다만 약간의 용어가 다를 뿐....uri, binding, service 라고. 다른 점이라면 SCA는 컴포넌트들을 조합하여 좀 더 복잡한 컴포넌트를 만들기 위한 스펙이 있어서 서비스를 노출하는 인터페이스외에 서비스를 참조하는 인터페이스를 기술하도록 하고 있다. 즉, 내가 필요로하는 서비스는 이런 이런 기능을 갖춘 서비스입니라..라는 식의 인터페이스를 기술하여 툴을 통해 비주얼하게 서비스를 해당 컴포넌트에 엮을 수 있게 하고 있다.<br />
&nbsp;둘의 가장 큰 차이는 구현 언어에 있다. WCF는 당연 닷넷 언어로 구현하여야 하나, SCA는 자바와에 C++, BPEL 등이 가능하며 Container 형태로 추가가 가능하다. 아울러 Spring Framework과 궁합이 잘 맞아 구현 Container로 Spring을 바로 적용할 수도 있다.<br />
<br />
&nbsp;자바에는 SCA외에도 이와 유사한 기능을 하도록 만든 스펙 및 프레임웍이 존재한다. JBI (Java Business Integration)과 ESB (Enterprise Service Bus)가 그것이다. 이 셋을 어떻게 자리매김하는 가에 대해 상이한 의견이 있는 듯 하며&nbsp;이들이 향후에 어떻게 교통정리가 되어 자리매김할 지&nbsp;추측해보자.<br />
&nbsp;SCA의 홈페이지에서는 SCA와 JBI에 대해 언급하면서 이 둘은 서로 충돌하여 하나가 배제되는 것이 아닌, 필요하면 함께 구현 가능하고 혹은 별개로 사용 가능하다고 밝히고 있으며, JBI가 애플리케이션 서버를 만드는 업체에서 JBI Container 만드는데 사용되는 것이며, SCA는 벤더가 아닌 개발자 및 배포자가 컴포넌트를 어떻게 만들고 조작하는가에 중점을 둔 스펙이라고 하고 있다. 이 둘의 아키텍처는 아주 유사하여 런타임이 있고 이를 기반으로 각종 container 형태의 것들이 실제 서비비스를 구현한 컴포넌트를 담고 있고, 이들간 혹은 이들과 외부 서비스간의 통신은 binding을 통해 제공되는 형태이다. 하여 SCA입장에서 JBI는 SCA 런타임위에 올라가는 각종 container를 구현하는 표준 API로서 역할로 자리매김하는 듯 하다. 하지만, JBI를 자세히 들여다 보면 SCA 만큼이나 개발 영역에도 할 말이 많음을 알게 된다. JBI 런타임 혹은 서버 구현은 물론 서비스 모니터링 기능 및 서비스 조합을 위한 에디터 등 컴포넌트 개발과 운영에 관해 큰 그림을 그리고 있음을 알 수 있다. 하지만, 대체적인 분위기는 SCA가 앞단에서 서비스를 조합하는 역할에 치중하고 JBI는 뒷단에서 서버 구현을 표준화시켜 3rd party가 만든 container를 맘껏 올릴 수 있게 하는 것으로 자리매김되고 있는 듯 하다. 썬이 엔터프라이즈&nbsp;웹 서비스 분야에서의 좁아진 입지를 만회하고자 JCP를 통해 강력히 밀고 있는 JBI는 SCA의 구현을 원활히 하는 표준화 쪽으로 가닥을 잡을 것 같다. 현재 SCA를 구현한 오픈 소스 런타임으로는 아파치의 Tuscany와 Codehaus에 올라있는 Fabric3가 대표적이며 이들은 JBI와 무관하게 구현되어 있다.<br />
<br />
&nbsp;그럼 ESB와 SCA 혹은 JBI와는 어떤 관련이 있을까 ?<br />
ESB는 SCA,JBI와 달리 스펙이 아니다. 마케팅 용어로 시작되어 현재는 SOA 기반 개발 표준 프레임웍으로 자리잡고 있으며 SOA 기반의 제품을 표방한 서버 치고 ESB를 언급하지 않은 업체가 없을 정도이다. 심지어 마이크로소프트까지도.. 그것도 뒤늦게..<br />
ESB의 아키텍처는 JBI와 유사하며 다수의 구현에 따라 얼마든지 바뀔 수 있다. JBI의 아키텍처에는 명시적으로 런타임의 가운데에 NMR (Normalized Message Router)라는 메시지 버스가 있고 이 주변에 서비스 구현체에 해당하는 Service Engine과 바인딩을 위한 Binding Component라는 것이 있어서 서비스간 바인딩을 제공한다. ESB는 표준이 없으나 태생이 MOM (Message-oriencted Middleware) 업체의 마케팅 용어이기 때문에 아키텍처 또한 메시지 기반의 백본에 (웹) 서비스를 표준 바인딩 수단으로 하고 중간에 메시지 변환 및 addressing, routing, 메타데이터 관리&nbsp;등을 제공하는 형태로 되어 있으며 근래에는 BPM 기능도 ESB의 요소로 간주하고 있다. 현재 오픈 기반의 ESB 구현체로 OpenESB가 있으며 이는 JBI 스펙을 구현한 ESB이다.<br />
&nbsp;결국, ESB 제품을&nbsp;구현함에 있어서 SCA 기능을 제공할 수도 있고 JBI 스펙 기반으로 ESB 서버를 만들 수도 있는 것으로 보인다. 현재 일부 ESB 제품이라고 얘기하는 자바 진영의 서버 가운데 SCA 주도한 업체들은 대부분 SCA를 지원하는 ESB를 선보이고 있고, 썬의 애플리케이션 서버는 OpenESB를 지원하며 SCA 기능은 제공하지 않는 것으로 보인다. 참고로 썬도 Open SOA 그룹 (<a href="http://osoa.org">http://osoa.org</a>)의 늦깍이 회원이다.&nbsp;<br />
<br />
&nbsp;애초 생각은 WCF와 기능면에서 유사한 SCA에 대해 살펴보고자 했는데,&nbsp;SCA 이전부터&nbsp;썬이&nbsp;JBI 기반 구현체를 오픈/상용&nbsp;형태로 개발 중이었고, 이를 애플리케이션 서버에 Servlet 컨테이너,&nbsp;EJB&nbsp;컨테이너와 나란히 JBI&nbsp;컨테이터&nbsp;형태로 올리려했다는 것을 알고 있었기에 JBI까지 언급하기에 이르렀다. 현재&nbsp;JBI 입장에서 JEE 컨테이너와의 연동은&nbsp;중간에 브릿지 역할을 하는 JEE용 Service Engine을 통해 이루어지고 있다. ESB를 또 끌어들인 이유는, 서비스 기반 개발 방법에는 소위 ESB 서버를 빼 놓고는 현재 시장에서 관심을 끌지 못하고 있는게 현실이며 많은 소위 SOA 제품군들이 ESB를 핵심 백본으로 그리고 있어서 결국 SCA가 하고자 하는 일이 이루어지는 바탕은 ESB가 구현된 SOA 제품군 위에서이다.&nbsp;<br />
&nbsp;속 깊은 내용은 알 길이 없으나 표면적으로 볼때 현재 ESB를 표방한 IBM의 SOA 제품군은 예상대로 SCA를 지원하며 특히 컴포넌트 조합을 위한 개발 툴을 통합시킨 형태로 가고 있고 JBI에 대해서는 그다지 관심이 없어 보인다. 반면 썬의 경우 JCP를 통해 표준화한 JBI관점에서 접근하며 OpenESB (<a href="http://open-esb.dev.java.net">http://open-esb.dev.java.net</a>) 라는 구현체를 통해 JBI를 구현하여 자신들의 오픈 소스 애플리케이션 서버인 Glassfish (<a href="http://glassfish.dev.java.net">http://glassfish.dev.java.net</a>) 에서 OpenESB를 지원함으로써 JBI를 드라이브하고 있고 SCA에 관해서는 그다지 큰 관심을 보이는 것 같지는 않다.<br />
&nbsp;밖에서 보는 입장에서 그리고 상용 벤더 입장에서 보면 SCA가 훨씬 많은 매력적으로 보인다. 컴포넌트를 WISWIG형태로 조합해서 서비스를 만드는 개발 툴과 이를 자신들의 ESB 서버에 바로 디플로이하게 함으로써 개발을 쉽게 할 수 있고, JBI는 ESB 서버를 구현할 때 확장팩 형태로 각종 자바 관련 기술들을 엮는 방식으로 지원하는게 합리적일 듯 싶다.<br />
<br />
&nbsp;언제까지 SOA가 시장을 지배할지, 그리고 ESB가&nbsp;SOA의 핵심이 될 지 모르겠으나, 이런 추세라면 중첩된 기능을 통합하여 SCA + JBI = ESB 스펙으로 통합 제정함이 어떨까..닷넷하는 사람으로서 대응하기 힘들어서 .... ;)<br />
<br />
&nbsp;위 내용은 개인의 생각을 적은 것으로 의도적으로 사실을 왜곡하는 내용은 없을 듯 하나 일부 부정확한 내용이 있을 수 있다.]]></description>
            <category>닷넷과 자바</category>
            <category>SCA</category>
            <category>JBI</category>
            <category>ESB</category>
            <category>WCF</category>
            <author>오롯이</author>
            <pubDate>Sat, 05 Jan 2008 23:01:26 +0900</pubDate>
        </item>
        <item>
            <title>자바 JRE의 향후 모습</title>
            <link>http://acroama.isblog.net/blog_post_55.aspx</link>
            <description><![CDATA[&nbsp;현재 자바의 런타임은 JDK 6 Update 3 까지 나와 있는데, 이와 병행하여 &quot;JDK 6 Update N&quot;이라는 이름의 새로운 시도가 진행되고 있다. JDK 6 Update N은 이전에 &quot;Consumer JRE&quot;라고 불리던 것으로, 이름이 의미하듯이 일반 사용자가 자바 기반의 애플리케이션을 사용할 때 불편하게 여겼던 점들을 개선하기 위해 고안된 것이다. JDK 6 Update N이 현재 Early Access 상태이지만, 이의 특징을 간단히 살펴보는 이유는, 그간 자바가 엔터프라이즈 특히 서버 싸이드에 치중하여&nbsp;그것도 엔터프라이즈 웹 솔루션 구축 전용처럼 여겨지던 부분을 어느 정도 해소하여&nbsp;JRE 기반의 솔루션, 즉 데스크탑 설치 버전의 솔루션 구축에도 지속적으로 관심을 가지고 있음을 인식할 수 있는 계기 일 뿐더러, 자바 뿐만아니라 닷넷도 동일하고 고민하고 있는&nbsp;JRE/CLR로 인한 문제들에 대한 해결 방식을 살펴볼 수 있기 때문이다.<br />
&nbsp;JDK 6 Update N의 특징은 다음과 같다.<br />
1. Startup Time 줄이기<br />
&nbsp;자바의 JVM이나 닷넷의 CLR이 처음 기동할 때, 즉 Cold Startup 일 경우, 애플리케이션에 따라 다르나 수초에서 십여초까지 걸리기도 하는 것은 이미 알려진 사실이다. 이는 JVM이나 JRE를 메모리에 올리는 과정이 필요하기 때문인데, 이를 얼마나 줄일수 있는가의 여부가 데스크탑 애플리케이션으로 할 건지 웹으로 할 건지를, 혹은 구축된 데스크탑 애플리케이션의 만족도에 지대한 영향을 미친다. 자바가 선택한 길은 PC가 처음 기동할 때 기본적으로 함께 기동되도록 하는 것이며, 이를 위해 제어판의 Java 항목에서 &quot;Java Quick Starter&quot;를 설정할 수 있도록 했다. Vista를 제외하고 다른 OS는 디폴트로 설정된다.<br />
2. 하드웨어 가속기를 이용한 그래픽 처리<br />
&nbsp;마이크로소프트의 Direct3D 9 API 기반으로 하드웨어 가속 기능을 사용할 수 있도록 하여 Swing 기반의 애플리케이션에서 2D, 3D 구현을 좀 더 빠르고 현실감 있게 구현할 수 있다. 예제를 보니&nbsp;정확히 할 수는 없으나,&nbsp;하드웨어 벤더인 Radeon 9550이 언급되고, atiumdag.dll 등이 로드되는 것을 보니 가속기를 제대로 사용하는 듯 하다.&nbsp;그외에도 &quot;Nimbus&quot;라는 cross-platform look &amp; feel을 탑재하고 있다.<br />
3. 실시간으로 사용자 PC에 깔려 있는 JRE 버전 감지 기능 향상<br />
&nbsp;사용자 PC에 설치되어 있는 JRE 버전을 Update 레벨까지 감지할 수 있는 &quot;Deployment Toolkit&quot;을 제공하여&nbsp; 애플리케이션에서 API를 통해 Toolkit을 통해 이 버전 정보에 근거하여&nbsp;적절한 대응을 할 수 있게 해주는 기능이다.<br />
4. Kernel Installation 모드<br />
&nbsp;이번 Early Access에는 포함되지 않았지만, Kernel 모드를 지원하여 최초로 JRE를 다운 받아야 하는 경우에 모든 JRE를 다운 받을때까지 사용자가 기다리지 않도록 일단 Kernel 모드에서 동작할 수 있게 한다. 기본 Kernel 모드로 일단 실행하고 향후에 필요한 라이브러리는 추가적으로 다운로드 받도록 한다.<br />
<br />
&nbsp;이 정도가 큰 특징으로 보여지며, 일부는 닷넷 CLR에도 기본적으로 탑재되어야 할 기능이라 여겨진다.]]></description>
            <category>닷넷과 자바</category>
            <category>Consumer JRE</category>
            <category>JDK 6 Update N</category>
            <author>오롯이</author>
            <pubDate>Thu, 03 Jan 2008 10:51:01 +0900</pubDate>
        </item>
        <item>
            <title>자바가 코볼의 전철을 밟고 있다고 ??</title>
            <link>http://acroama.isblog.net/blog_post_54.aspx</link>
            <description><![CDATA[&nbsp;흥미로운 기사가 InfoWorld에 실렸다. 자바가 이제 새로운 코볼이라고... <br />
<br />
<a target="_blank" href="http://www.infoworld.com/article/07/12/28/52FE-underreported-java_1.html">Java is becoming the new Cobol</a>&nbsp;<br />
<br />
&nbsp;자바는 여전히 많은 영역에서 왕성한 생명력을 보여주고 있다. 특히 한국을 비롯한 동아시아에서 자바 + Unix + Oracle의 삼각 편제는 과히 무시무시할 정도다. 하지만, 전 세계적인 추세는 자바에게 유리하게 돌아가고 있지 않다는 것이 일반적인 견해다.&nbsp;우선, 많은 영역에서 Ruby on Rails (이하 RoR)에 의해 프로젝트들이 win-back 당하고, 신규 프로젝트들이 RoR이 제공하는 pre-built Structure, scaffolding 등의 매력에 빠져 자바에서 이탈하고 있다. 또한 JEE의 복잡함은 더 이상 자바 진영의 비밀만은 아니다. Write Once Run Everywhere를 외치며 플랫폼 비종속성을 내세웠지만, 정작 서로 다른 Web Application Server (WAS) 사이에서의 호환성은 불가능할 뿐 더러, 새로운 프로젝트가 시작될 때 마다 도입되는 이전과 다른 WAS에 적응하느라, 또한 같은 WAS라도 버전이 다르면 또 적응하느라 가뜩이나 복잡한 엔터프라이즈 개발에&nbsp;골머리를 썩이고 있는 개발자들의 불만은 커져가는 것이 현실이다. 모바일 영역에서도 자바 기반 개발 플랫폼이 사라지고 있으며 구글이 안드로이드를 만들고 있는 것도 이와 무관하지&nbsp;않다고&nbsp;적고 있다.<br />
<br />
&nbsp;이런 와중에 지난달 조사했다는 Info-tech 설문 결과는 자바 개발자들에게 당혹감을 줄 만 하다. 1850 여 영역에서 비지니스 사이즈와 영역에 상관없이 자바보다 닷넷을 선택한다는 조사 결과는 RoR에 쫓기고, 닷넷에 치이는 자바의 현실을 반영하고 있는 듯 하다.<br />
<br />
<br />
&nbsp;개인적으로는 위 본 기사보다는 기사에 달린 댓글를 유심히 봐 주었으면 한다. 현장에서 개발하고 혹은 팀을 이끌고 있는 사람들이 바라 본 자바와 닷넷에 대한, 혹은 개발 일반에 관한 생생한 기록이며, 크게 엇갈린 반응을 보이고 있다. 하지만, 자세히 살펴보면,&nbsp;위 글의 논조와 크게 다르지 않은 글이 더 많다는 것을 알게 될 것이고, 대체로 자바의 복잡성과 닷넷의 간편함을 거론하며 C# 은 더 나은 자바이며, 자바의 다양성 및 복잡함으로 인한 TCO 부담은 관과될 수 없다는 등 한 번쯤 훑고 지나갈 만한 코멘트가 많다.<br />
<br />
&nbsp;한 언어가 우수하고 다른 언어가 저급하다는 것을 지적하는 것이 절대 아니며, 현실 개발에 있어서&nbsp;적합한 언어/플랫폼과 불편한 언어/플랫폼이 있고 점점 더 닷넷이 더 많은 영역에서, 이제는 엔터프라이즈 영역까지도 개발하는 데 좀 더 편리하고 실용적이고 합리적인 언어 및 플랫폼이라는 점이 입증되고 있다는 사실이다.]]></description>
            <category>닷넷과 자바</category>
            <category>.NET</category>
            <author>오롯이</author>
            <pubDate>Thu, 03 Jan 2008 09:43:08 +0900</pubDate>
        </item>
        <item>
            <title>ASP.NET 3.5 Extentions - MVC Framework </title>
            <link>http://acroama.isblog.net/blog_post_48.aspx</link>
            <description><![CDATA[&nbsp;지난 달 출시된 Visual Studio 2008과 .NET Framework 3.5에 이어, 내년 상반기에 제공될 ASP.NET 3.5&nbsp;Extentions에 ASP.NET MVC Framework이 포함되어 있다. ASP.NET MVC Framework은 ASP.NET 개발자들이 꾸준히 갈구해왔던, 그래서 닷넷 웹 애플리케이션 개발에 있어 무언가 부족하다고 느껴온 부분을 채워 줄 수 있을 것으로 기대되고 있다. 내년 상반기 공식 출시되며, 올 12월 Preview 형태로 제공될 ASP.NET MVC Framework의 특징을 간단히 살펴보기로 한다.<br />
<br />
&nbsp;닷넷이든 자바든 혹은 루비든 PHP든 MVC 프레임웍 기반의 개발을 해 본 경험이 있는 사람들에게 있어서 ASP.NET이 제공하는 Page 기반의 웹 처리 방식에 있어 Page가 컨트롤러가 되고, Page가 뷰가 되기도 하는 모습은 어딘지 프로페셔날해 보이지 않고, 좀 더 나은 무언가가 나올 것 같은 조짐을 보여왔다. 특히, 자바 진영에서 Model 1 - Model 2 논쟁을 겪으면서 컨트롤러와 뷰의 역할 분담과 이를 통한 확장성 등은 이제 거의 모든 웹 개발 방식에 있어서 정석처럼 여겨져왔고, 이는 곧 자바 진영의 수 많은 MVC 프레임웍의 양산을 가져왔으며 지금도 자바 진영에 있어 MVC 기반의 웹 개발 프레임웍은 개발 시작의 필수 조건 처럼 여겨지고 있다.&nbsp;닷넷 진영에서도 이러한 오픈 기반의 프레임웍이 하나 둘 씩 생겨나고, 혹은 자바 진영의 오픈 프레임웍이 서서히 포팅이 되면서 실제 닷넷 프로젝트에서도 이러한 오픈 프레임웍 기반 개발 방식이 자리를 잡아가고 있다. 여기에 마이크로소프트에서는 ASP.NET 기반 MVC 프레임웍을 통해 이러한 개발 흐름에 확고한 지지 기반을 제공하고 있다.<br />
<br />
&nbsp;내년 상반기 정식 출시될 ASP.NET MVC 프레임웍의 내용을 간단히 살펴보면...<br />
&nbsp;첫재, 컨트롤러에 있어서 System.Web.MVC.Controller Base 클래스를 제공하며 (Ruby on) Rails와 유사한 특징이 많다. 특히 핵심 사상인 Convention over configuration은 ASP.NET MVC 프레임웍에도 그대로 적용되며 많은 편리한 이점을 주고 있다. Global.asax의 code behind class에 요청 정보에 따른 컨트롤러 선택을 자동화해주는&nbsp;매핑이 잡히기 때문에 별도의 설정 파일 없이 매핑을 이용할 수 있고, 원치 않으면 이를 변경하면 된다.&nbsp;예를들면, /Products/Detail?id=3 혹은 /Products/Detail/3 은 실제 ProductsController라는 컨트롤 클래스의 Detail()이라는 메소드에 id라는 파라메터로 3을 넘겨주는 것을 의미한다. 여기에 필요한 별도의 매핑을 필요없다는 것... Rails 스럽다..<br />
<br />
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200712/controller.jpg" /></div>
<br />
&nbsp;둘째, 모델에 있어서 현재 가장 자연스러운 조합은 LINQ to SQL을 쓰는 것이다. 특별한 설명이 필요없을 듯...<br />
<br />
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200712/model.jpg" /></div>
<br />
&nbsp;셋째, 뷰에 있어서는 현재 Masterpage 기반의 설정을 제공한다. 하지만, 대부분의 MVC 프레임웍이 그러하듯이 뷰는 다른 기능을 써서 표현할 수 있다. 즉, NVelocity와 같은 템플릿 언어를 통한 뷰 구현도 ASP.NET MVC 프레임웍에서 가능하다. 뷰의 구현을 위해 Base 클래스로서 System.Web.MVC.ViewPage&lt;T&gt;를 제공하고 있다.&nbsp;여기서 T가 ViewPage에 넘겨질&nbsp;ViewData를 의미한다.<br />
&nbsp;컨트롤러에서 뷰를 찾는 방법 또한 Convention over Configuration을 따르고 있다. 컨트롤러의 RenderView() 메소드에 원하는 뷰 이름을 파라메터로 넘겨주면 Views 서브 폴더 밑에 해당 컨트롤러 서브 폴더 밑에서 해당 이름의 aspx 파일을 찾는 방식이다. 즉, ProductsController.RenderView(&quot;Categories&quot;, category)라면 이는 /Views/Products/Categories.aspx가 불리며 category의 뷰 데이터가 넘어가서 렌더링되는 식이다.<br />
&nbsp;또한 &lt;a href=&quot;&nbsp; &quot;&gt;를 지원하기 위해 HtmlHelper.ActionLink를 두어 소스코드 상에 URL이 정적으로 명시되는 것을 방지하고 중앙에서, 즉 Global.asax에 명시된 RouteTable을 통해 동적으로 URL을 생성하게 됨으로써 향후 URL 체계가 바뀌어도 전체 소스를 바꾸지 않고 한 군데에서만 변경하면 바로 적용되는 효과를 거둘 수 있다.<br />
<br />
<div align="left"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200712/view.jpg" /></div>
<br />
좀 더 상세한 설명은 Scott Guthrie의 블로그를 참조하기 바란다.<br />
<a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx">http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx</a><br />
<a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx">http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx</a><br />
<a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx">http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx</a><br />
<a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx">http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx</a><br />
<br />
블로그 내용을 보고 드는 느낌은 Ruby on Rails의 장점을 모두 수용하면서 ASP.NET이 제공할 수 있는 기능, Visual Studio가 제공할 수 있는 기능 등을 모두 활용할 수 있다는 점과 무엇보다도 군더더기 없이 깔끔하게 MVC에 충실하려는 모습이 매력인 듯 하다.&nbsp;많은 개발자들의 ASP.NET MVC 프레임웍의 출현을 고대하는 것도 이런 장점들 때문이 아닐까 한다.<br />
<br />
시간적 여유가 된다면 다른 오픈 기반 프레임워들, 특히 Spring.NET&nbsp;과의 연계 혹은 비교를 해 볼 계획이다.]]></description>
            <category>닷넷과 자바</category>
            <category>MVC</category>
            <category>ASP.NET MVC</category>
            <author>오롯이</author>
            <pubDate>Fri, 28 Dec 2007 14:16:09 +0900</pubDate>
        </item>
        <item>
            <title>Microsoft Dynamics CRM 4.0 출시</title>
            <link>http://acroama.isblog.net/blog_post_53.aspx</link>
            <description><![CDATA[&nbsp;마이크로소프트의 CRM 솔루션인 Microsoft Dynamics CRM 4.0 (코드명 Titan)이 출시되었다. CRM 4.0의 출시는 신제품 출시의 차원을 넘어선 의미를 담고 있기에 여기에서 잠시 언급하려한다.<br />
<br />
&nbsp;마이크로소프트는 줄기차게 Software + Services (이하 S+S)를 주장하여 왔다. 오늘날 처럼 복잡하고 급변하는 비지니스 환경 속에서 사용자의 요구, 비지니스의 요구를 충족시키기 위해서는 Software나 Services 그 어느 하나 가지고는 불충분하다는 것이며, 고객을 최우선시 하여 그 목적을 달성시키고자 한다면 S+S가 답이라는 것이다. Software가 필요하면 Software적으로, Services만으로 충분하다면 Services 방식으로, 혹은 이 둘의 적절한 조합이 가장 최상이라면 이들의 결합을 통해 비지니스 문제를 해결해야 한다는 것이 S+S의 핵심이다. Microsoft Dynamics CRM 4.0은 바로 이러한 S+S를 보여주는 대표적인 사례인 것이다. 전통적인 Software Package 제품이었던 Dynmics CRM 제품을 Software 방식으로, 혹은 Services 방식으로 제공할 수 있도록 만들 것이다.&nbsp;<br />
&nbsp;따라서 고객이 라이선스를 사서 자체 서버를 통해 CRM을 운영하든지, 혹은 파트너가 운영하는 CRM 시스템을 다달이 사용료를 내면서 이용하든지, 혹은 마이크로소프트가 운영하는 Dynamics CRM Live를 통해서 이용하든지, 고객은 자신의 회사 규모와&nbsp;비지니스&nbsp;환경에 맞는 최선의 방식을 선택할 수 있게 된다.<br />
<br />
&nbsp;참고로 Dynamics CRM 4.0은 내부적으로 .NET Framework 3.x의 핵심 요소인 WF (Windows Workflow Foundation)을 적용하여 프로세스 자동화를 구현하였고, OCS (Office Communication Server)와 연계하여 사용자의 상태 정보 (Presence)를 CRM 애플리케이션에서 확인할 수 있다. 아래 그림은 SaaS 기반 애플리케이션의 특징인 온라인에서 바로 시험 계정을 만들어 테스트해볼 수 있는 것을 나타낸다.&nbsp;<br />
&nbsp;<br />
<a target="_blank" href="http://www.microsoft.com/dynamics/everyonegetsit/default.mspx?WT.mc_id=otherbanners">Dynamics CRM 테스트 계정 얻기<br />
</a><br />
<div align="left"><a target="_blank" href="http://www.microsoft.com/dynamics/everyonegetsit/default.mspx?WT.mc_id=otherbanners"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200712/Thumbnail/dynamics_t.gif" /></a></div>]]></description>
            <category>Software+Service</category>
            <category>Dynamics CRM 4.0</category>
            <category>Software+Services</category>
            <author>오롯이</author>
            <pubDate>Thu, 20 Dec 2007 11:06:06 +0900</pubDate>
        </item>
        <item>
            <title>Visual Studio International Pack 1.0 Beta 1 공개</title>
            <link>http://acroama.isblog.net/blog_post_51.aspx</link>
            <description><![CDATA[<p><span>Visual Studio International Pack 1.0 베타 1이 공개되었다.&nbsp;VS2005와 VS2008에서 사용할 수 있는 Visual Studio International Pack은 .NET 개발자의 국가별 기능이 가능한 응용프로그램 개발을 지원하기 위해 설계된 클래스 라이브러리를 포함하고 있다. VS International Pack 1.0 배포 판은 .NET Framework이 제공하는 국제화 기능을 강화하기 위하여 다음과 같은 구성요소를 포함하고 있다.</span></p>
<ul>
    <li><span><font color="#ff0000">East Asia Numeric Formatting Library - 숫자 데이터를 한국어, 중국어 간체/번체, 및 일본어 통화 형식의 문자열로 서식을 지정.</font> </span></li>
    <li><font color="#ff0000">Korean Auto Complete TextBox Control - 한국어 입력 시 자동 완성과 Intellisense 기능을 지원하는 TextBox 컨트롤을 제공.</font> </li>
    <li>Japanese Kana Conversion Library - 가나 문자 집합을 다른 문자 집합으로 변환. </li>
    <li>Japanese Text Alignment Library - 특정 일본어 정렬 형식으로 문자열을 렌더링을 할 수 있는 클래스 라이브러리를 제공. </li>
    <li>Japanese Yomi Auto-Completion Library - 일본어 IME를 인지하여 자동 완성을 제공하는 클래스 라이브러리와 TextBox 예제를 제공. </li>
    <li>Simplified Chinese Pin-Yin Conversion Library - 중국어 간체문자에서 일반적으로 사용되는 다음자, 동음자, 중국어 음역(Pinyin) 혹은 획수와 같은 문자 속성을 추출. </li>
    <li>Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 중국어 번체에서 간체로 혹은 그 반대로 텍스트를 변환. 이 구성 요소는 VS IDE에서 중국어 간체 리소스 파일을 중국어 번체로 변환하기 위한 추가 기능 도구를 포함. </li>
</ul>
본 Visual Studio International Pack 1.0 베타1은 아래 링크에서 다운로드 받을 수 있다.<br />
<br />
<a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e432aeaa-7b6f-4b0d-968b-b6aafda05e34&amp;displaylang=ko">다운로드 바로가기</a><br />
<br />
<div align="left"><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e432aeaa-7b6f-4b0d-968b-b6aafda05e34&amp;displaylang=ko"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" src="http://acroama.isblog.net/Uploads/1/200712/vs.gif" /></a></div>
<br />
<br />
<br />]]></description>
            <category>새소식</category>
            <category>VS International Pack</category>
            <author>오롯이</author>
            <pubDate>Tue, 11 Dec 2007 15:26:42 +0900</pubDate>
        </item>
        <item>
            <title>ASP.NET 3.5 Extentions CTP Preview 출시</title>
            <link>http://acroama.isblog.net/blog_post_50.aspx</link>
            <description><![CDATA[&nbsp;ASP.NET 3.5 Extensions CTP Preview가 발표되었다. ASP.NET 3.5 Extension Preview에는 다음과 같은 것들이 포함되어 있다.<br />
<br />
- ASP.NET AJAX 성능 개선 : 이번 Preview에 포함된 ASP.NET AJAX관련 개선 사항으로는 브라우저에서 History 지원 기능 (이전/다음 버튼과 통합), 서버쪽 History 관리 지원 기능, 향상된 AJAX 컨텐츠 링크 지원, 추가적인 JavaScript 라이브러리 향상 등이 있다.<br />
- <font color="#ff0000">ASP.NET MVC</font> : ASP.NET 기반의 MVC 프레임웍이 드디어 실체를 나타냈다. 이전 포스트에서 밝혔듯이 ASP.NET 기반의 웹 애플리케이션 개발에 있어서 제대로된 프레임웍을 만날수 있게 되었다. ASP.NET MVC는 TDD를 지원하며, Request를 해당 비지니스 로직에 매핑 시키는데 있는 Convention over Configuration 을 수용하였고, 아울러 로직 처리 후 뷰 페이지를 매핑하는 데에도 이를 사용하고 있다.<br />
- ASP.NET Dynamic Data Support : 데이터 중심적인 웹 싸이트 구축에 사용할 수 있는 것으로서 ASP.NET WebForms와 ASP.NET MVC 프레임웍을 기반으로 data-driven&nbsp; 방식으로 웹 싸이트를 쉽게 개발할 수 있는 Scaffolding 프레임웍을 제공한다.<br />
- ASP.NET Silverlight 지원 측면 : 이번 Preview에는 ASP.NET 애플리케이션 내에 Silverlight를 쉽게 적용할 수 있는 기능을 제공한다. ASP.NET 서버 컨트롤로서 Silverlight 비디오/미디어 콘트롤을 제공한다.<br />
-<font color="#ff6600"> ADO.NET Data Services</font> : ASP.NET 3.5 Extension과 함께 출시될 예정이 ADO.NET Entity Framework을 이용하여 로컬 데이터베이스를 원격지에 웹 서비스를 통해 노출하는 데이터 서비스도 함께 제공될 것이다. 이러한 데이터 서비스를 이용하여 REST 기반 URI 매핑을&nbsp;통해 데이터베이스의 테이블 등의 데이터를&nbsp;웹 서비스로 ASP.NET에서 쉽게 제공할 수 있도록 Astoria&nbsp;프로젝트가 진행되고 있다.&nbsp;<br />
<br />
&nbsp;<a target="_blank" href="http://asp.net/downloads/3.5-extensions/">ASP.NET 3.5 Extension CTP Preview 다운로드</a><br />
<br />
<div align="left"><a target="_blank" href="http://asp.net/downloads/3.5-extensions/"><img style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 5px; CURSOR: hand; MARGIN-RIGHT: 5px" alt="" border="0"  src="http://acroama.isblog.net/Uploads/1/200712/Thumbnail/asp_net_ext_t.gif" /></a></div>
<br />
<br />]]></description>
            <category>새소식</category>
            <category>ASP.NET 3.5 Extension</category>
            <category>ASP.NET MVC</category>
            <author>오롯이</author>
            <pubDate>Mon, 10 Dec 2007 19:49:05 +0900</pubDate>
        </item>
    </channel>
</rss>