소프트웨어/C# & ASP.NET 85

ASP.NET 2.0 프로젝트의 특정 폴더의 설명

l App_Browsers 폴더 각 브라우저를 식별하고 기능을 확인하기 위해 ASP.NET에서 사용하는 브라우저 정의 파일을 포함합니다. l App_Data 폴더 Microsoft Access 데이터베이스(.mdb 파일), XML 파일, 로컬 파일에 저장된 기타 데이터 등을 포함합니다. 응용 프로그램을 실행하는데 사용되는 사용자 계정(예: 로컬 ASPNET 계정)에는 이 폴더에 대해 파일을 읽거나 쓰고 만들 수 있는 권한이 부여됩니다. 웹 사이트관리 도구와 다양한 ASP.NET 응용 프로그램 기능(예: 멤버 자격 및 역할에 대한 공급자)은 App_Data 폴더에만 사용되도록 구성되었습니다. l Bin 폴더 이전 버전의 Visual Studio와 마찬가지로 컴파일된 코드를 포함합니다. Bin 폴더의 코드가..

.NET Assembly

.NET Assembly 닷넷을 어느정도 공부해본 사람들은 어셈블리(assembly)에 대한 말을 많이 듣게 되는데, 닷넷 어셈블리가 무엇인지, 어떻게 사용하는 것인지 한번 생각해 보도록 합시다. 어셈블리란 무엇인가 1. 어셈블리는 코드들의 논리적인 묶음이다. 2. 어셈블리는 물리적으로 DLL또는 EXE로 존재한다. 3. 한 개의 어셈블리는 한 개이상의 파일을 포함할 수 있다. 4. 어셈블리안에는 어떤 형태의 파일도 포함될 수 있다(예: 텍스트 파일, 이미지파일등) 5. 작성된 소스코드가 어셈블리로 묶여지지 않다면, 다른 어플리케이션에서는 이용할 수가 없다. 6. 어셈블리파일엔 자체정보를 가지고 있는데 이를 어셈블리 메니페스트(Manifest)라 한다. 어셈블리 메니페스트(manifest)에 대해 1. ..

연산자 오버로딩 - 인덱스

class Point { public int x; public int y; public Point(int x, int y) { this.x = x; this.y = y; } public override string ToString() { //(x,y)값 return String.Format("({0},{1})",x,y); } // + 연산자 메서드 public static Point operator +(Point pt1, Point pt2) { return (new Point(pt1.x + pt2.x, pt1.y + pt2.y)); } // - 연산자 메서드 public static Point operator -(Point pt1, Point pt2) { return (new Point(pt1.x - p..

C#에서의 데이터형

값형과 레퍼런스형 비교 닷넷에서 제공하는 데이터형은 변수가 어떤 값을 갖느냐에 따라 분류 값(value) 형 변수가 실제 데이터 값을 직접 가지고 있는 경우 값(value) 형은 스택(stack) 메모리 공간에 저장되며, 할당 연산을 했을 때 별도의 메모리 영역에 할당 레퍼런스(reference) 형 변수가 실제 데이터 값이 있는 곳을 가리키는 값을 갖는 경우 레퍼런스(reference) 형은 힙(heap) 메모리 공간에 저장 할당 연산을 했을 때 힙 메모리 공간을 가리키는 레퍼런스 변수 값 사이에서 할당이 일어남 IntObj r1 = new IntObj(); 스택(Stack)데이터 값을 임시로 저장하는 메모리 영역으로, 보통 메서드의 인자, 메서드 안에 선언한 변수들이 스택 공간에 할당 힙(Heap)일..

닷넷 3.5를 이용한 디자인 패턴의 구현 (4)

이름에 짐작할 수 있듯이, Observer 패턴은 오브젝트의 상태를 관잘하는 데 사용된다. 이 패턴이 약간 변형된 패턴이 출판 (Publish)과 구독(Subscribe)이다 관찰 대상 오브젝트는 어떤 이벤트 혹은 이벤트들을 "출판"하고 이들을 주시하고 있던 오브젝트들(관찰자들)은 발생한 이벤트를 "구독"한다. 이것을 좀 더 단순화하기 위해, 두 패턴을 모두 Observer 패턴이라고 부를 것이다. 사실 이 두 가지 패턴의 차이는 보는 관찰 시점의 차이일 뿐이다. 쉽게 얘기해서, '당신이 나를 관찰하고 있나요? 와 내가 당신이 구독하려는 나의 이벤트를 출판하고 있나요? 의 차이와 같다. 전자는 나를 보는 관점이 타인이 시점이고 후자는 자신의 시점에서 일어나는 이벤트를 관찰하게 된다. Observer 패턴..

ILMerge - 닷넷 어셈블리를 하나의 파일로 묶어주는 툴

- 시작전 잡설 : 참으로 오랜만의 포스팅이네요^^; 요 근래 두어달간 몇가지 흥미진진한(그만큼 구글링도 엄청한) 프로젝트를 진행하느라 좀 바빴는데, 다시 블로그에 관심을 가져줄까 합니다. (뭐, 기다리시는분은 없었겠지만-_-;;) - 상황 : 부서내 다른팀(개발이 아닌)에게 업무에 사용할 툴을 만들어 주는데, 이것저것 참조된 어셈블리를 같이 배포했더니, 불편하다고 파일하나만 가지고 실행할 수 없겠냐고 합니다. (엑셀에, DB접속에, 각종 UI들까지 몇가지 있깄했죠.) 그래서 구글님께 물어보니, 아니나 다를까 ILMerge 라는 툴이 있었고, Microsoft 공식 사이트에서 배포중이었습니다. - 다운로드 : ILMerge.msi - ILMerge 를 설치하면 기본적으로 c:\Program Files\M..

개발자가 알아야 할 웹 보안

SQL Injection, 파라미터 변조, 쿠키 변조, 세션 변조 공격 등으로부터 필자가 개발 중인 블로그 형태의 "바투"라는 웹 사이트가 얼마나 안전한지, 문제점은 무엇인지에 대해 알아보자. 1. SQL Injection SQL Injection 공격으로부터 사이트를 보호하기 위해서는 우선적으로 다음 3가지 과정을 지켜야 한다. ① DB 최소권한으로 웹 사이트를 운영한다. ② 입력값 검증( ' " ) # || + > )을 통해 SQL Injection 공격을 대비한다. ③ 저장 프로시저(Stored Procedure)를 이용한다. 바투 웹 사이트에서 테스트 결과 SQL Injection에 대한 공격이 발생하지 않는다. 모든 데이터 처리를 저장 프로시저로 처리하기 때문에 ' or 1=1 등과 같은 공격이..

WCF Tip : Transaction 처리 주의사항

WCF에서 TransactionAutoComplete는 기본 true 입니다. 아래와 같이 직접적으로 complete(), rollback()을 하지 말고 사용 하세요. 개념은 기존에 COM+나 웹서비스에서 사용 하시던 방법 개념과 비슷합니다. 코드를 잘 살펴 보세요~ [OperationBehavior(TransactionScopeRequired=true)] public void BadTransaction() { try { // 작업 코드 ... OperationContext.Current.SetTransactionComplete(); } catch (Exception ex) { // 예외 로깅한후 예외를 반드시 던진다. Transaction.Current.Rollback(); // (X) } } [Op..