본문 바로가기

IT 살이

[메모] WCF 호출시 병목현상 관련 WCF 서비스를 호출할때, 클라이언트 수에 따라서 병목 현상이 일어날 수 있다. 이에 대한 이해 및 설정 내용을 다루는 포스트에 대한 링크들이다. How to throttle a Wcf service, help prevent DoS attacks, and maintain Wcf scalability Throttling in WCF InstanceContextMode, ConcurrencyMode, and Server-side Threading 더보기
[메모] Cross-domain 해결 방법 실버라이트에서의 Cross domain 해결 실버라이트도 웹 클라이언트 기술이기 때문에 클라이언트측의 웹 브라우저의 보안 샌드 박스에서 실행된다. 또한 웹 사이트 접근 제한 정책에 영향을 받는다. 그중의 하나가 하나가 바로 Cross-domain 접근 제한이다. 이게 뭐냐면, 한 domain에서 호스팅이되고 있는 웹 애플리케이션이 다른 domain에서 호스팅되고 있는 애플리케이션에는 기본적으로 접근할 수 없다는 것이다. 그러나 웹 애플리케이션에서 특정 도메인으로부터의 접근을 허용해주는 방법이 있다. cross-domain 정책 파일로 알려진 xml 파일을 이용하면 이런 접근에 대한 제한을 해제할 수 있다. clientaccesspolicy.xml crossdomain.xml 서비스를 제공하는 웹 애플리케.. 더보기
[메모] Getting Started with Silverlight development Microsoft Silverlight 사이트 Get started building silverlight 3 applications A blog by Tim Heuer Getting started with silverlight development 더보기
[메모] CLR v4 Security Policy Roundup .NET Security Blog 이 블로그의 주인이 어떤 사람인지는 모르겠지만, 이 포스트들을 읽다 보면 재밌다. 그래서 자주 들러보는 블로그중의 하나다. 이번에도 이 블로그에 올라온 글을 하나 메모해 두려 한다. CLR v4 Security Policy Roundup 더보기
[메모] Tying your IE Hosted Control to a Manifest .NET Security Blog에서 있는 포스트이다. Tying your IE Hosted Control to a Manifest I talked about the Orcas feature which allows you to provide a manifest to elevate your control's permissions declaratively. We also saw how to generate manifests that would state what permissions your control needs (and the rules associated with those manifests). Now it's time to tie it all together and create an HTML pag.. 더보기
MIXSH인증용 새 페이지 KygnjE5KWHVT4TUvNje7zmd0Ck7WR0_1ijq4FxstZDc, 더보기
[메모] White Box testing tool for .NET 웹 서핑을 하다, vs 2008 용 테스트 툴을 보게 되서 메모해둔다. Getting started with Pex in Visual Studio 2008 ( http://channel9.msdn.com/posts/Peli/Getting-started-with-Pex-in-Visual-Studio-2008/ ) “Pex”로 검색을 해 보니, MS 에반젤리스트들의 IT블로그에 툴을 사용하는 법도 정리되어 있다. .NET White Box Testing 도구, PEX (Program EXploration) ( http://blogs.msdn.com/eva/archive/2009/01/28/net-white-box-testing-pex-program-exploration.aspx ) 더보기
개발 프레임워크 만들기 대장정 47 - UI단 프레임워크 추가사항 UI단 프레임워크가 거의 완성되었다. 그러나 고려해봐야 할 녀석들이 몇 가지 있다. 달봉이가 참여한 프로젝트가 빡빡한 일정때문에 힘들어지고 있다. 아마 당분간은 정리가 힘들것 같다. 생각나는 대로 메모를 해 둬야겠다. 요즘은 메모를 해 두지 않으면 금방 잊어버린다. 이러다가 영화 “메멘토” 수준으로 될 것 같은 기분이 요즘 든다. -업무 화면의 베이스 클래스 타입 -업무 화면 객체의 출력 컨트롤 -화면 객체의 라이프사이클 -서버측 서비스 환경 설정 -사용자 정보 객체의 사이트별 확장 ■업무 화면의 베이스 클래스 타입 WPF의 루트 요소를 고려해서 UserControl, Page 두 종류의 베이스 클래스가 있어야 할 것 같다. ■업무 화면 객체의 출력 컨트롤 두 종류의 업무 화면 베이스 클래스를 출력할 수.. 더보기
개발 프레임워크 만들기 대장정 46 - 서비스 호출하기 이제 클라이언트에서 달봉이가 만들어놓은 프락시 팩토리를 이용해서 서비스를 호출해보자. ■ 서비스 참조 추가하기 우선 서비스에 대한 참조를 클라이언트 프로젝트에서 추가하자. BONG.WIN.CO.UserMgmt 프로젝트의 References 노드를 오른쪽 클릭해서 “Add Service Reference…”를 선택한다. 그럼 다음과 같은 서비스 참조 추가 창이 뜬다. Address 박스에 이전 포스트에서 봤던 주소를 복사해 넣는다. 그런 다음 “Go”버튼을 클릭한다. 그럼 앞의 그림처럼 SampleService가 보이게 된다. 이제 Namespace 텍스트박스에 “SampleAsyncService”라 입력한다. 그리고 마지막으로 “Advanced…”버튼을 클릭한다. 그래서 Generate aysnchron.. 더보기
개발 프레임워크 만들기 대장정 45 - 서비스 구성하기 이번 포스트부터는 달봉이가 제작한 ServiceProxyFactory 객체를 이용해서 동기 호출과 비동기 호출에 대한 코딩 예를 보여준다. ■ IIS 서비스 환경 구성하기 우선 서버측 서비스를 구성해 보자. 달봉이는 서비스 구현 프로젝트와 서비스 노출 프로젝트를 분리했다. 서비스 구현은 BONG.SVC.CO.UserMgmt에 있고, 노출 프로젝트는 웹 애플리케이션을 이용한다. SampleService.cs에는 다음처럼 간단한 서비스가 구현되어 있다. 다음 코드는 사용자 정보를 서버측으로 전달하는 과정을 설명하는 포스트에서도 봤다. namespace BONG.SVC.CO.UserMgmt { [ServiceContract] public interface ISampleService { [OperationCon.. 더보기
개발 프레임워크 만들기 대장정 44 - WCF 확장하기 III ( 프로그레스바 자동 보여주기) ■ 프로그레스바 출력 시나리오 프로그레스바 자동 출력 기능을 위해서 달봉이는 다음과 같은 시나리오를 정의했다. 프로그레스바를 보여주는 경우를 생각해보자. 이 녀석은 서비스를 호출할때마다 보여줘야 할까? 달봉이는 아니라고 생각하고 달봉이 개발 프레임워크를 구현했다. 예를 들어 업무성 코드 목록을 가져와서 드롭다운 리스트를 채우거나 사용자에게 보여줄 메세지를 가져오는 경우라면 프로그레스바 없이 내부적으로 조용히 처리하면 될 것이다. 달봉이는, 서비스 호출 결과가 늦어질 가능성이 있는 경우에만 프로그레스바를 보여주자고 결정했다. 프로그레스바 보여주는 것과 관련해서 또 한가지 달봉이가 결정한 것은 프로그레스바를 보여줄 정도로 시간이 걸리는 작업은 비동기로 구현하겠다는 것이다. 서비스 호출하고 나서 사용자를 아무.. 더보기
개발 프레임워크 만들기 대장정 43 - WCF 확장하기 II (사용자정보 전달하기) 이제 클라이언트측 behavior를 끼워넣는 작업을 해본다. 근데 behavior라는 단어를 들으면 느낌이 파악 오는지 모르겠다. 달봉이는 이 단어를 학교다닐때 참 많이 들었다. 달봉이는 토목의 구조를 전공했다. 예를 들어 교량같은 대형 건물을 설계할 때 이 단어가 많이 나온다. 우리는 교량이 어떻게 “거동(behavior)”하는가라는 식으로 표현했었다. 근데 밖에 나와서 거동이라는 표현을 썼더니 잘 모르는 것 같았다. 발음 그대로 “비헤이비어” 라고 표현하는 사람들도 많았다. 그러나 달봉이는 여전히 거동이라는 표현이 마음에 든다. behavior는 AOP의 advice같은 개념이다. 그 개념을 구현해 놓은 코드 조각을 인터셉터(interceptor)라고 한다. 이 behavior라는 것을 머리에 그릴때.. 더보기
개발 프레임워크 만들기 대장정 42 - WCF 확장하기 I (사용자 정보 받기 ) 앞의 포스트까지는 메뉴를 클릭했을 때 해당 업무 화면을 로딩하는 것까지 진행했다. 이제 업무 화면에서 서비스를 호출하는 기능을 구현하도록 하자. 이때 개발 프레임워크단에서는 흔히 서비스를 호출할 수 있는 프락시 객체를 제공한다. Visual Studio를 사용하면 쉽게 프락시 클래스를 만들어 주지만 개발자가 그것을 그대로 사용하기에는 너무 기능적으로 부족한 감이 있다. 개발시 사용했던 서비스에 대한 URI도 설정에 따라서 자동으로 변경해 줄 수 있어야 하고 사용자 정보도 서버측으로 건네줘야 한다. 그리고 필요하다면 프로그레스바도 출력해줘야 한다. Visual Studio가 만들어주는 프락시를 한번 더 감싸서 이런 기능을 할 수 있는 프락시 클래스를 만들어 볼까 한다. 이런 기능을 갖는 프락시 클래스를 만.. 더보기
개발 프레임워크 만들기 대장정 41 - 화면 객체 로딩 테스트 지난 포스트까지는 메뉴 정보를 로딩해서 트리로 출력하는 과정을 봤다. 오늘은 트리의 최종 노드를 클릭했을 때 화면을 로딩시켜보자. 샘플 화면을 하나 추가하자. 항목 추가 템플릿에서 User Control(WPF) 템플릿을 선택하고 이름을 UserMgmt.xaml이라고 넣는다. 이렇게 해서 추가된 사용자 컨트롤 코드를 좀 수정해야 한다. 우선 베이스 클래스를 우리가 이전에 만든 BongControlBase로 수정한다. public partial class UserMgmt : BongControlBase 그런 다음 xaml 마크업 코드도 다음처럼 수정한다. Hello 이게 무슨 말인가하면…모르겠다면, 이전 포스트를 보자. 간단히 말하면 UserControl의 베이스 클래스를 사용자 정의 클래스( 여기서는 B.. 더보기
개발 프레임워크 만들기 대장정 40 - 메뉴정보 로딩/출력하기 지금까지 작성한 코드는 다음 링크를 통해서 다운로드받을 수 있다. 이제 메뉴를 출력해보자. 그러자면 우선 메뉴 소스가 데이터베이스든 XML이든 구성되어 있어야 할 것이다. 그러나 여기서는 우선 아주 쉬운 방법을 택하겠다. 하드코딩 ! 메뉴 소스가 구성되어 있다면 그것을 읽어들여 메뉴 계층 구조를 만들겠다. 이 계층구조는 눈으로 볼 수 있는 트리구조가 아니다. 단지 논리적인 메뉴 객체들의 트리구조이다. 따라서 ‘논리적인 메뉴 구조를 구성’한다고 표현할 수 있겠다. 메뉴의 논리적인 트리 구조를 만들기 위해서 필요한 클래스를 만들어보자. 우선 메뉴 아이템 정보를 나타내는 클래스를 만들었다. 메뉴 아이템을 나타내는 클래스들은 Dalbong2.Win 프로젝트에 포함시켰다. 이 녀석들은 현장의 프로젝트와는 상관없기.. 더보기
개발 프레임워크 만들기 대장정 39 - 화면 객체 생성 이전 포스트에서는 Spring.NET에서 제공하는 XmlObjectFactory를 이용해서 화면 객체에 대한 정보를 로딩하는 작업을 했다. 이번 포스트에서는 XmlObjectFactory( Spring.NET 컨테이너 )에 화면 객체를 요구하는 작업을 하겠다. 아래 그림의 붉은 색 부분이 오늘 포스트의 주제이다. 컨테이너에 객체를 요구할때는 GetObject(“객체ID”)를 호출해서 그 참조를 얻을 수 있다. dalbong2ObjectFactory.GetObject("01"); 이 메소드 내부 소스를 분석해보면 이전 포스트에서 로딩한 객체 정보를 이용해서 해당 어셈블리를 로딩한 후 그 어셈블리를 통해서 동적으로 객체를 생성해낸다. 문제는 그 어셈블리를 어디에서 로딩하느냐이다. 기본적으로 Spring.NE.. 더보기
개발 프레임워크 만들기 대장정 38 - 화면 정보 로딩 달봉이는 프리젠테이션 레이어를 WPF로 구현할 것이다. ClickOnce로 배포되는 스마트클라이언트 애플리케이션을 염두에 두고 있다. 우선 사용자가 보게 될 시스템의 최종 실행 모습을 미리 보도록 하자. WPF용 애플리케이션을 만들겠지만, 아직 이것으로 만들어진 녀석이 없으니 우선 기존의 Window Form으로 만들어진 녀석을 보자. 사용자가 로그인을 하게 되면 제일 먼저 이런 유사한 화면을 보게 될 것이다. 업무 개발자가 담당할 부분이 가운데 있고, UI 컨테이너가 업무 화면을 둘러싸고 있다. 애플리케이션을 시작하면 UI 컨테이너의 상단과 좌측단에 메뉴가 로딩되고, 메뉴를 클릭하면 업무화면이 동적으로 생성되어 가운데 부분에 출력된다. UI 컨테이너 UI 컨테이너라 함은 말 그대로 Visual을 갖는 .. 더보기
WPF UserControl 베이스 클래스 만들기 Spring.NET의 컨테이너를 UI단에 적용하는 작업은 끝났다. 근데 정리할 시간이 없다. 7월부터 시작하는 UI단 프레임워크 개발 작업이 있다. 이것을 준비해야 하는 관계로 WPF를 좀 더 공부해야 한다. 그래서 정리 순서를 바꾸도록 했다. Spring.NET 컨테이너의 UI단 적용은 다음에 정리해야 할 것 같다. 흔히 기업용 애플리케이션을 제작할때는 윈폼 클래스 또는 사용자 정의 클래스들의 베이스 클래스를 만든다. 그래서 그곳에서 사용자 정보, 권한 정보들을 캐싱해 둔다. 현장의 개발자들은 그것을 상속해서 화면을 만든다. 달봉이도 이런 시나리오를 염두에 두고 WPF에서 제공하는 UserControl의 베이스를 하나 만들려고 했었다. 윈폼 시절의 UserControl을 생각해서 쉽게 될 줄 알았다. .. 더보기
개발 프레임워크 만들기 대장정 37 - POC 애플리케이션 - 개발구조 이미 Spring.NET이 기업형 애플리케이션에 적용되고 있다는 얘기도 가끔 듣고 있다. 그러나 달봉이가 직접 POC( Proof Of Concept) 애플리케이션을 하나 만들어서 Spring.NET이 기업에 어떻게 적용될 수 있는지 나름대로 검토를 해 보고자 한다. 달봉이가 만들 애플리케이션은 흔히 현장에서 사용하고 있는 3 티어 구조를 고려한다. 그리고 사용될 주요 기술은 다음과 같다. UI 레이어 WPF 기반, Spring.NET 컨테이너 통신 방법 Spring.NET 지원의 WCF 비즈니스 레이어 트랜잭션 관리 Spring.NET의 TxScopePlatformTransactionManager Spring.NET 컨테이너 데이터접근 Spring.NET의 DAO ( 그때의 기분이 동하면 NHibern.. 더보기
개발 프레임워크 만들기 대장정 36 - 개발 프레임워크 보안 설계 아직 Spring.NET의 구체적인 API 및 설정 방법 등에 대해서는 모두는 알아보지 않았다. 그러나 사용 컨셉은 알게 되었다. 따라서 최소한 달봉이 머릿속에는 기업용 개발 프레임워크를 만들기 위해서 어떻게 사용해야 하는지는 레이어별로 가닥이 잡힌 듯 하다. 혹시 Spring.NET을 어떻게 사용할까 또는 이것을 이용해서 기업용 개발 프레임워크를 직접 만들 수 있지 않을까 하는 기대를 가지고 이 글을 읽고 있는 독자들이 있다면 달봉이와 같은 마음이길 바란다. 그러나 아직 그렇지 않더라도 실망할 필요는 없을 듯 하다. 사실 달봉이는 몇개의 프레임워크 다뤄본 경험이 있다. 그래서 그것을 염두에 두고 글을 쓰고 있기에 기존의 기업용 개발 프레임워크에서 필요로 하는 요구사항들을 어느 정도는 알고 있다. 그래서.. 더보기