• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'2010/02/10'에 해당되는 글 2건

  • 2010.02.10 객체 지향 C#의 꽁수. Singleton 패턴.
  • 2010.02.10 2008 R2 x64의 IIS 위에서 32bit 응용 프로그램 돌리는데 꼭 확인 필요.

객체 지향 C#의 꽁수. Singleton 패턴.

기술자료/.NET 2010. 2. 10. 11:02

사실 전역변수 처럼 쓰이는 각종 응용 프로그램 설정 내역들이 있다.

보통은 app.config 혹은 web.config 를 통해 값을 읽어오게 되는데,

그 로직 아무리 짧아야, 2~3줄씩 되고,

설정이 필요할 때 마다 app.config 혹은 web.config에서 일일히 읽어오는 것도 나름대로 곤욕이다.

그러기 위해 Sigleton 패턴을 사용하는게 제일인듯.

 

그런데, 이런 Singleton 패턴은 Windows 응용 프로그램 같은 경우야,

하나의 인스턴스니 상관 없지만, 웹 응용 프로그램같은 경우에는 조금 난감한 것도 사실.

 

이에 현재 나름대로 고민해서 짜본 방법이 아래와 같다.

 

public static class ConfigManager()

{

        public static string TempFileLocation

        {

                get

                {

                          string sResult = string.empty;

                          try

                          {

                                 sResult = ConfigurationManager.AppSettings["tempfolder"];

                          }

                          catch

                          {

                           }

                           return sResult;

                 }

 

         }

}

 

저렇게 만들면 ConfigManager를 일일히 new 할 필요가 없다. Heap이 아닌 응용 프로그램 저장 위치에 단 한개의 인스턴스만 존재하므로, 최소한 이 부분을 띄워주는데에서는 무조건 저 한개의 로직에서 처리가 된다.

저 방법의 핵심은 static 인데, static으로 정의되는 내용은 어쨌던 별도의 Instance 생성이 필요없다는 훌륭한 강점을 가지게 된다.

 

그런데, 설정 구성이 많아지게 되면 그 만큼 코드도 무척 길어지게 된다. 처음 설정 내역이 4~5개 까지는 그럭저럭 봐주는데, 설정 내용이 20여개를 넘자, 매번 저렇게 구성하는것도 환장하겠고, 더욱이 appsetting의 Key 값이 변경될때도 나름 고역. 
더욱이  매번 appsetting 에서 값을 읽어오는게 영 마음에 꺼림찍했다.(NET 프레임워크 개발한 분들도 나름 천재들이니, 옵티마이징 하면, 저 로직도 나름 정리가 잘 되리라 생각은 하지만)

그럼 데이터를 1회만 읽어오고, 모두 한자리에 때려 박는 방법을 다시 생각했다.

public static class ConfigManager()

{

       static ConfigManager()

       {

                try

                {

                        ConfigManager.tempFolderLocation =
                                     ConfigurationManager.AppSettings["tempfolder"];

                }

                catch

                {

                }

         }

 

        static string tempFolderLocation;

        public static string TempFileLocation

        {

                get

                {

                          return ConfigManager.tempFolderLocation;

                 }

 

         }

}

 

즉 static 클래스 안에 Constructor를 만들어서 그 안에서 1회 읽어오게 하고,

실제 일반 사용자가 사용하는 부분에서는 static으로 저장된 변수 값만 읽어가게 되는 것이다.

직접 XML이나, INI 파일 파서를 만든 상태라면, 그 로직을 Constructor에 만들고

구성하면 되는 것이다.

즉 핵심은 static 클래스에서 static 생성자를 만드는 것!. 이게 핵심.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

2008 R2 x64의 IIS 위에서 32bit 응용 프로그램 돌리는데 꼭 확인 필요.

기술자료/Web 2010. 2. 10. 10:43

지금까지 2003 IIS만 주로 쓰고 있다가, 2008로 넘어오면서 나름 적응을 했다고 생각했다.

그런데, 2008 R2에서는 시스템 성능 및 보안 등등 여러가지를 손 본듯 싶었다.

 

이번에 지원 프로젝트건이 있어 잠시 나왔다.

ClearQuest 7.1.1 과 IIS간의 연동 부분이 있는데, ClearQuest에서 제공하는 COM 과 연결하는 작업이 반드시 필요한 내용이였다.

로컬 및 자체 Staging 서버(애석하게도 여기는 2008이였지, 2008 R2가 아니였다.)에서는

잘 돌다가, 갑자기 운영서버에 올라가니 다음과 같은 오류를 뿜었다.

 

'/' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------

80040154 오류로 인해 CLSID가 {94773112-72E8-11D0-A42E-00A024DED613}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.Runtime.InteropServices.COMException: 80040154 오류로 인해 CLSID가 {94773112-72E8-11D0-A42E-00A024DED613}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.

소스 오류:

줄 19: ....

 

처음에는 COM이기 때문에, 해당 서버에 저 COM이 제대로 등록되어 있지 않았나 싶었다.

그래서 구성 요소 서비스에 들어가, 해당 Component가 이상한가 봤는데,

애석하게도 내가 다루고 있던 COM은 서버형이 아니므로 전혀 무관계.

이번에는 RegEdit 를 띄운 뒤, 저 CLSID를 검색하는데,

잘 걸린다. 위치도 제대로 되어 있고, 모든 설정은 OK! 였다.

.NET Framework 문제인가? 3.5가 아닌 2.0 기반의 Classic .NET 설정의 문제인가.

아니면 내가 코드를 짤 때 레퍼런스 설정이 잘못된 것인가?

여러가지 의문점들을 하나씩 수정하면서 체크해봤다.

대략 1시간 정도 시간을 보내고 났다.

그러나 방법은 모르겠고.....

 

그러다가, 현재 동작 중인 응용 프로그램 설정에서 다음을 보았다.

3264compotableproblem

 

저게 x64 형태의 서버에서만 설정하는 부분인 것 같다.

성능상의 Issue를 최소화 시키기 위해 x86기반의 응용 프로그램 제외 모드가 있는 것 같다.

그런데, 애석하게도 저 옵션이 Default 값이 False인듯.

True로 바꾸자 모든게 매끄럽게 진행이되었다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2010/02   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28

MOSS 2007 불만 지름신 java 인터파크 개발환경 windows Tutorial 블로그 SharePoint twi2me Azure Buscuit Google Apps Engine me2dayzm 협업 매뉴얼 Visual Studio 수 2010 비스킷 친구 me2photo WSS 오류 moss 것 me2sms 좀 e-book

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바