기본적인 설정 파일을 log4net.xml 파일이지만 웹 서버에서 호스팅을 할 때 URL을 직접 치고 들어오면 사용자가 설정 파일을 받을 수 있기 대문에 제외되어 있는 config 파일 형식으로 수정하였다.
[코드3] Log4Net 설정 파일 - log4net.config
'코드3'에서의 설정 파일로 로그에 저장할 수 있는 형식과 저장 방법을 설정할 수 있다. 위 설정 파일을 root 노드에서 'RollingFile'을 사용하도록 설정하였으며 'appender name="RollingFile" '을 찾아가 보면 Log4Net에서 제공해주는 'log4net.Appender.RollingFileAppender' 형식으로 저장하도록 기본 제공하고 있다.
3. 로그 사용
해당 클래스에서의 객체 생성 하기
[코드4] 해당 클래스에서 객체 인스턴스 화 작업
위 '코드4'에서와 같이 로그를 사용할 해당 클래스에서 초기화를 수행하면 로그를 사용할 수 있게 된다. '코드5'를 통해 이제 로그를 저장하여 보자.
[코드5] Log4Net으로 로그 저장
'코드5'와 같이 필요한 곳에서 필요한 로그 저장 메소드를 추가하면 될 것이다. 그리고 추가로 '코드4'에서 주석 처리된 '로그네임'을 사용하여 초기화를 하면 설정파일에 '로그네임'의 노드를 찾아서 추가적인 로그 저장 방법을 추가할 수 있다.
( An old password still works after you change it in Outlook Web Access )
프로젝트를 한참 진행중에 암호 변경에 대한 싱크를 맞춰야 하는 사안이 있었다. 테스트를 하면서 AD까지는 실시간 동기화가 되어 정상적으로 변경이 되었으나 OWA를 로그인 하는 과정에서 이전 암호를 입력해도 정상적으로 진입이 되는 오류가 있게 되었다. 몇번의 암호 변경을 진행해도 이전 암호와 현재 수정된 암호를 입력하면 로그인이 되었다. 팀 내에서 이 이슈에 대해 고민 하다가 팀장님게서 해당 문제에 대해 기억을 해내셔서 해당 이슈에 대한 자료를 찾을 수가 있었다. 그 이유는 성능 이슈 때문에 익스체인지 2000부터 IIS에서 캐시를 사용하여 성능 향상을 도모하였던 것이다. 기본 세팅 시간을 15분이므로 이 시간동안은 이전 암호를 입력해도 로그인이 되었다. 이와 같은 일로 해매지 않기 위해 공유하고자 이 글을 올린다.
Chocolatey - package manager ( Windows에 특정 패키지를 쉽게 설치 하도록 지원 )
Visual studio의 Nuget은 필요한 라이브러리를 온라인을 통해 최신의 버전을 받아 추가할 수 있도록 해주는 편리한 도구이다. 이것과 같은 방식으로 Windows에 최신 프로그램을 손 쉽게 설치 할 수 있도록 지원해 주는 도구다. 리눅스의 apt-get과 같은 역할을 담당한다. 이 프로그램을 통해 설치할 수 있는 프로그램이 1000여가지가 넘고 있다. 리스트 확인은 'http://chocolatey.org/packages'으로 확인해 보면 된다. '그림3'에서 설치 가능한 리스트의 첫 페이지를 올려 놓았으니 확인해 보자.
Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy-path to all interactions.
Nancy is designed to handle DELETE, GET, HEAD, OPTIONS, POST, PUT and PATCH requests and provides a simple, elegant, Domain Specific Language (DSL) for returning a response with just a couple of keystrokes, leaving you with more time to focus on the important bits.. your code and your application.
Nancy는 가볍고, 작은 격식과 Mono와 .Net의 HTTP 서비스 기반 개발 프레임웍이다. Nancy는 Delete, Get, Head, Options, Post, Put 요청 처리를 간단하고 명쾌하게 처리되도록 디자인 되었다.
아래 코드는 NancyModule를 상속 받아 '/greet/{name}'로 주소로 요청을 했을 때 해당 값을 리턴하는 예제다. 이렇게 간단하게 Restful을 구현할 수 있는 프레임웍이다.
[코드1] Nancy에 소개된 예제 코드
[코드2] Hanselman에 소개된 에제 코드
ASP.NET MVC나 일반적이 MVC 스타일의 프레임웍이다.
[코드3] Hanselman에 소개된 JSON 리턴 예제 코드
Json으로 리턴되기를 바란다면 '코드3'과 같이 진행하면 될 것이다. 이 밖에도 Nancy.template, Nancy.Website, Nancy.Demo, View Engine 같은 도구나 데모도 있으니 살펴 보기를 바란다. ( https://github.com/NancyFx )
Built from the bottom up, not simply a DSL on top of an existing framework. Removing limitations and feature hacks of an underlying framework, as well as the need to reference more assemblies than you need. keep it light
Run anywhere. Nancy is not built on any specific hosting technology can be run anywhere. Out of the box, Nancy supports running on ASP.NET/IIS, WCF, Self-hosting and any OWIN
Ultra lightweight action declarations for GET, HEAD, PUT, POST, DELETE, OPTIONS and PATCH requests
View engine integration (Razor, Spark, dotLiquid, our own SuperSimpleViewEngine and many more)
Powerful request path matching that includes advanced parameter capabilities. The path matching strategy can be replaced with custom implementations to fit your exact needs
Easy response syntax, enabling you to return things like int, string, HttpStatusCode and Action elements without having to explicitly cast or wrap your response - you just return it and Nancy will do the work for you
A powerful, light-weight, testing framework to help you verify the behavior of your application
MonoDevelop is a cross-platform IDE primarily designed for C# and other .NET languages. MonoDevelop enables developers to quickly write desktop and ASP.NET Web applications on Linux, Windows and Mac OSX. MonoDevelop makes it easy for developers to port .NET applications created with Visual Studio to Linux and Mac OSX maintaining a single code base for all platforms.
MonoDevelop는 C#과 .NET 언어 개발을 위한 다중 플랫폼을 지원 IDE 도구다. 리눅스, 윈도우, 맥에서 Desktop와 ASP.NET Web application을 지원한다. 하나의 코드로 다중 플랫폼 지원을 지원할 수 있다.
Feature Highlights
Multi-platform Supports Linux, Windows and Mac OS X.
Advanced Text Editing Code completion support for C# 4, code templates, code folding.
Configurable workbench Fully customizable window layouts, user defined key bindings, external tools
Multiple language support C#, Visual Basic.Net, C/C++, Vala
Integrated Debugger For debugging Mono and native applications
ASP.NET Create web projects with full code completion support and test on XSP, the Mono web server.
Other tools Source control, makefile integration, unit testing, packaging and deployment, localization
아쉽게도 ASP.NET MVC는 기능 리스트에서 확인할 수 없네요. 이 도구와 Mono에 관계된 프로젝트를 진행해 보지 않아 많은 부분에 대해서 모르지만 조만간 Mono와 이 툴에 대해서 사용하며 테스트를 해봐야 겠습니다. 그리고 Xamarin으로 안드로이드나 iOS 앱 개발에 대해서도 흥미가 생기고 있습니다.
^^. 할일은 많은데 몸은 하나라 바쁘기만 하네요. 혹 멀티 플랫폼을 지원해야 하는 프로젝트가 있다면 한번 검토해 보시면 되겠습니다.
페이스북에서 엄준일 블로거(http://blog.powerumc.kr/)님이 친절하게 알려주신 정보입니다. Mono 프로젝트 호환성 페이지에서 살펴 보면 Mono 자체는 ASP.NET MVC4 ( - .Net framework 4.5까지 )까지 지원한다고 되어 있었습니다.
그림3은 In-process와 Cross-process로 호출 했을 때의 성능 비교 표다. 두번째와 세번째가 .Net과 통신 하였을 때의 차이점임을 볼 때 Node.js에서 호출 할 수 있도록 .Net에서 만들고 사용한다면 별도의 서비스로 만들어 통신할 때보다 성능 상의 이점을 많이 얻을 수 있을 것이다.
요즘 웹 개발의 트랜드가 Twitter에서 배포하기 시작한 BootStrap을 사용하여 개발하는 추세가 이전보다 많아 지고 있으며, BootStrap를 더욱 확장하여 제공하는 유,무료 사이트 들도 많이 존재 하고 있다. 그렇지만 기존에 jQuery와 일반 CSS로 개발된 사이트를 한번에 엎어서 개발 할 수 없다면 jQueryUI나 jQuery Tool UI가 대안이 될 수 있을 것이라 소개한다.