달력

04

« 2008/04 »

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
Scott Guthrie가 발하는 Silverlight2의 RIA(Rich Internet Application)


출처 : 준서아빠가 생각하는 행복한 UX이야기 (http://www.uxkorea.net/blog_post_226.aspx )

'HCI & UX' 카테고리의 다른 글

User Experience Architecture  (4) 2008/06/23
Remix08 Beyond RIA  (0) 2008/06/07
User Experience란?  (0) 2008/06/04
Rich Internet Applications  (0) 2008/05/05
Scott Guthrie가 발하는 Silverlight2의 RIA(Rich Internet Application)  (0) 2008/04/27
웹 접근성을 위한 CSS(1)  (0) 2008/04/06
Posted by -세티-
2008/04/27 00:38

닷넷 전용 어셈블리 General .NET2008/04/27 00:38

2006년 10월 31일자 글이고, 기존의 네이버 블로그를 폐쇄하고, 가져온 글입니다.

 

l         어셈블리 전용(Private) 또는 공유(Shared) 형태로 배포됨.

l         전용과 공유의 차이점 명명 규칙과 버전관리 정책

 

l         전용 어셈블리의 특징

n         배포된 응용 프로그램에 의해서만 이용될 수 있는 모듈들의 집합.

n         해당 형식들을 소유하는응용 프로그램만이 이 형식들을 사용할 수 있고 시스템의 다른 응용 프로그램과 공유하지 않게 한다는 것을 의미.

n         클라이언트 응용 프로그램과 동일한 디렉토리(응용 프로그램 디렉토리)나 그 하위 디렉토리에 있어야 함.

n         전용 어셈블리의 resolution과 로딩은 어셈블리가 위치한 응용 프로그램 디렉토리(bin 디렉토리)에서 일어난다. 옮겨도 실행됨.

n         삭제를 하여도 머신의 다른 응용 프로그램에는 손상을 주지 않음.

 

l         전용 어셈블리 프로빙(기초)

n         프로빙 외부 어셈블리 참조자를 정확히 상응하는 바이너리 파일에 매핑하는 과정

n         프로빙이란?

u        닷넷 런타임이 어떤 모듈의 매니페스트로부터 .assembly extern CarLibrary 라는 라인을 읽게 되면 CarLibrary.dll이라는 이름의 파일을 검색한다. 이 때 이 파일을 검색할 수 없게 된다면 *.exe 버전을 검색하게 된다. 이 두 파일이 모두 검색되지 않으면 런타임 예외를 발생시킨다. 그러나 XML 구성 파일(*.config)을 이용하게 되면 런타임이 응용 프로그램 디렉토리 밖의 다른 위치에 에서 프로브하게 할 수 있다.

 

l         전용 어셈블리 식별하기

n         전용 어셈블리 식별자 문자열 이름과 숫자 버전으로 구성.

n         문자열 이름 어셈블리의 매니페스트를 포함하는 바이너리 모듈의 이름에 기초해서 만들어진다.

Ex) CarLibrary.dll 어셈블리의 매니페스트

.assembly CarLibrary

{

….

.ver 1:0:454:30104 ß--- 버전 번호는 다를 수 있다.

}

어셈블리의 버전 정책은 닷넷 런타임이 어셈블리를 로딩할 때 적용하려 하지 않을 것이다. 그 이유는 이 전용 어셈블리를 알고 있는 것은 바로 해당 클라이언트 응용 프로그램밖에 없기 때문이다. 그렇기 때문에 전용 어셈블리에 대해서는 정확한 버전 검사를 할 필요가 없는 것이다.

 

 

Reference

1. Part3 .NET 어셈블리를 이용한 프로그래밍, 9장 .NET 어셈블리, C# and the .NET Platform, p.440~442

'General .NET' 카테고리의 다른 글

닷넷2.0을 시작하며...  (0) 2008/07/22
세티의 닷넷강좌를 다시 살리겠습니다.  (0) 2008/07/22
닷넷 전용 어셈블리  (0) 2008/04/27
델리게이트(1)  (0) 2008/04/27
C# 전처리기 지시문  (0) 2008/04/27
기초 C# - 제너릭  (0) 2008/04/27
Posted by -세티-
2008/04/27 00:37

델리게이트(1) General .NET2008/04/27 00:37

2006년 10월 27일 작성된 글이며, 네이버 블로그를 폐쇄하고, 가져온 글 입니다.

1. 닷넷 델리게이트

-         응용 프로그램 내에 있는 다른 메소드를 가리키는 객체

1.1 델리게이트가 포함하는 3가지 중요한 정보

-         델리게이트가 호출하는 메소드 이름

-         이 메소드의 인수

-         이 메소드의 반환값

1. 2 닷넷 프레임워크에서는 동기 델리게이트와 비동기 델리게이트를 이용하는 것이 가능.

 

2. C#에서 델리게이트 정의하기

-         delegate 키워드를 사용.

-         내부적으로 System.MulticastDelegate로부터 파생되는 봉인 클래스가 생성됨.

Ex) public delegate void PlayAcidHouse(Person theDJ, int volumn);

sealed class PlayAcidHouse : System.MulticastDelegate

{

         public PlayAcidHouse(object target, unit functionAddress)

         public void Invoke(Person theDJ, int volumn)
         public IAsyncResult BeginInvoke(Person theDJ, int volumn, AsynCallback cb, object state)
         public void EndInvoke(IAsyncResult result)

}

 

-         PalyAcidHouse 클래스에는 자동적으로 3개의 public 메소드가 만들어짐.

-         Invoke() : 델리게이트에게 현재 지시하고 있는 메소드를 호출할 때를 알리기 위해서 호출, C#에서 직접 호출 불가능

-         BeginInvoke(), EndInvoke() 는 비동기 호출하는데 이용

'General .NET' 카테고리의 다른 글

세티의 닷넷강좌를 다시 살리겠습니다.  (0) 2008/07/22
닷넷 전용 어셈블리  (0) 2008/04/27
델리게이트(1)  (0) 2008/04/27
C# 전처리기 지시문  (0) 2008/04/27
기초 C# - 제너릭  (0) 2008/04/27
닷넷의 소켓 클래스  (0) 2008/04/11
Posted by -세티-
2008/04/27 00:35

C# 전처리기 지시문 General .NET2008/04/27 00:35

2006년 8월 13일자에 작성된 글이며, 기존 네이버 블로그를 폐쇄하기 위해 가져온 글 입니다.

최초 작성자 세티
최초 작성일 2006년 8월 13일 일요일
최종 수정일
최종 수정자
C# '전처리기' 지시문

정의 : 컴파일 과정을 제어하기 위해서 사용됨.

C# 전처리기 지시문
#define, #undef - 조건부 컴파일 기호를 정의하거나 정의를 해제 하는데 이용.
#if, #elif, #else, #endif - 소스 코드의 일부를 조건적으로 건터뛰는데 이용.
#line - 에러와 경고의 줄 번호를 제어하는데 이용.
#error, #warning - 해당 빌드에 대한 에러와 경고 생성하는 데 이용.
#region, #endregion - 소스 코드의 일부를 명시적으로 표시하는데 이용.
- 표시된 영역 안의 코드는 확장, 축소 될 수 있다.


#region, #endregion 를 이용하여 코드 영역 지정하기
#region 전처리기를 이용한 코드 영역 지정하기
public class Class1
{
   //내용
}
public interface Interface1
{
   //내용
}
#endregion

조건부 코드 컴파일하기
- #if, #elseif, #else, #endif 를 사용하여 코드 블록을 조건적으로 컴파일 하게 한다.
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharpConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            #if(DEBUG)
            #warning 경고! Debug가 정의되어 있음. 릴리즈 빌드로 구성하시오.
            Console.WriteLine("App directory:{0}", Environment.CurrentDirectory);
            Console.WriteLine("Box: {0}", Environment.MachineName);
            Console.WriteLine("OS: {0}", Environment.OSVersion);
            Console.WriteLine(".NET Version: {0}", Environment.Version); Console.ReadLine(); #endif
        }
    }
}

'General .NET' 카테고리의 다른 글

닷넷 전용 어셈블리  (0) 2008/04/27
델리게이트(1)  (0) 2008/04/27
C# 전처리기 지시문  (0) 2008/04/27
기초 C# - 제너릭  (0) 2008/04/27
닷넷의 소켓 클래스  (0) 2008/04/11
ASP.NET MVC Framework  (0) 2008/03/27
Posted by -세티-
2008/04/27 00:34

기초 C# - 제너릭 General .NET2008/04/27 00:34

2006년 8월 12일에 작성된 글이며, 기존의 네이버 블로그를 폐쇄하고, 옮겨온 글입니다.

MSDN - Generic 소개

1. 제너릭 클래스와 메서드가 있다.
2. 제너릭 형식에서만 가능.
3. 재사용성, 형식 안정성, 효율성 달성이 가능.
4. 컬렉션과 컬렉션을 다루는 메서드에서 일반적으로 사용.
5. System.Collections.Generic 네임스페이스에 제너릭 기반 컬렉션 클래스가 존재.

using System;
using System.Collections.Generic;
using System.Text;

namespace VS2005
{
 //T형식 파라미터
 public class GenericClassTest<T>
 {
  //중첩된 Node 클래스도 T 제너릭
  public class Node
  {
   //T as private member data type
   private T data;
   public T Data
   {
    get { return data; }
    set { data = value; }
   }

   private Node head;
   public Node next;
   public Node Next
   {
    get { return next; }
    set { next = value; }
   }

   //중첩 Node 클래스의 생성자
   //생성자가 T를 받아서 타입을 결정
   public Node(T t)
   {
    next = null;
    Data = t;
   }
  }

  public GenericClassTest()
  {
   head = null;
  }

  public void AddHead(T t)
  {
   Node n = new Node(t);
   n.next = head;
   head = n;
  }
  public IEnumerator<T> GetEnumerator()
  {
   Node current = head;
   while(current != null)
   {
    yield return current.Data;
    current = current.Next;
   }
  }
 
 }

 public class GenericTest
 {
  public static void Main()
  {
   GenericClassTest<int> list = new GenericClassTest<int>();
   for (int i = 0; i < 10; i++ )
   {
    list.AddHead(i);
   }

   foreach (int i in list)
   {
    System.Console.Write(i + "");
   }
   System.Console.WriteLine("\nDone");
  }
 }
}

'General .NET' 카테고리의 다른 글

델리게이트(1)  (0) 2008/04/27
C# 전처리기 지시문  (0) 2008/04/27
기초 C# - 제너릭  (0) 2008/04/27
닷넷의 소켓 클래스  (0) 2008/04/11
ASP.NET MVC Framework  (0) 2008/03/27
Interface  (0) 2008/02/19
TAG c#, 제너릭
Posted by -세티-