2011-03-26 1 views
3

두 ASP.NET AOP 프레임 워크를 사용하여 수행 할 수있는 ASP.NET 응용 프로그램에서 2 작업을 수행 할 지점에 왔습니다 하지만 그들은 서로 다른 성격의 둘은 다음과 같습니다종속성 주입 (MVC 응용 프로그램에서) 및 간단한 AOP 작업 (특성 사용)에 대한 하나의 프레임 워크

    내 컨트롤러 및 서비스 나 사용자 지정 특성 NotNullAttribute을 만들어 그것으로 대신 이러한 매개 변수 또는 속성 경우 ArgumentNullException을 던지는 몇 가지 방법의 매개 변수 또는 속성을 표시 한
  1. 에 대한
  2. 의존성 주입 null이었다. AOP 프레임 워크가 컴파일 타임에 이러한 속성을 확인하고 대신 throw 원인을 추가하기를 원합니다. 예는 다음과 같습니다.

    //original code that I write 
    public void MyMethod([NotNull]string param1){ 
        //do something 
    } 
    

    .

    //code actually being compiled - after AOF processing/weaning 
    public void MyMethod(string patam1){ 
        if(param1 == null){ 
         throw new ArgumentNullException("param1"); 
        } 
        //do something 
    } 
    

그래서 나는 프레임 워크 (심지어 반드시 AOP 일 필요는 없습니다하지만 난 그게 될 것 같아요) 원하는 나를 단순히 모두 그 작업을 수행 할 수 것이다. , 종속성을 주입, 난 그냥 컴파일 Ctrl+F5을 누릅니다과 프레임 워크가 작동합니까 예외를 추가 -가 VS에

  • 통합

    • 작은 풋 프린트, 1 또는 2 어셈블리 :

      나는 몇 가지 추가 요구 사항이 심지어없이 코드 을 던지면서 나는 그것에 대해 알고있다. 커맨드 라인이나 그와 비슷한 것에서 미리 컴파일을하고 싶지 않습니다.
    • 예외 발생 코드 생성을 위해 클래스를 작성하고 싶습니다. 규칙적인 측면과 같습니다. XML이 아니며 구성이 없습니다 (규칙은 허용됩니다). 의존성 주입을 위해서 클래스도 선호하지만 XML이나 다른 설정 파일은 받아 들일 수 있지만 XML을 정말로 모르는 사람이 사용하기에 충분히 간단해야하며 정말 좋아하지 않는다.

    이러한 프레임 워크가 있습니까? 그들이 찬성/반대 의견이 더 있다면?


    편집 : 아, 네 난 아주 중요한 생각을 잊었 : 프레임 워크는 무료로해야합니다.

  • 답변

    5

    나는 개인적인 경험이 없지만, Linfu은 귀하의 설명에 맞다고 생각합니다. - 그 외에도에서

    , 당신은 동적 차단와 DI 컨테이너에서 AOP와 같은 동작을 얻을 수 있습니다 여기에 예제 : http://blog.ploeh.dk/2010/09/20/InstrumentationWithDecoratorsAndInterceptors.aspx

    상자 밖으로 다음 DI 컨테이너 지원 차단 :

    순수한 AOP (DI 없음)는 PostSharp 일 수 있습니다.

    +0

    감사합니다. 도움이됩니다. PostSharp는 T가 시도한 첫 번째 생각 이었지만 자유롭지는 않습니다. – drasto

    +0

    @drasto : PostSharp의 중요한 비트가 있습니다. 마지막으로 보았을 때 매우 자유 롭습니다. -이 공간에서 고려해야 할 중요한 점은 분명합니다. 유료 비트는 핵심 AOP (Eve, 당신이 당신의 맥락에서 실제로 옳다면, 나는 단지 당신이 당신의 솔질을 표현한 방식처럼하지 못했다면)을 극도로 강력하게 해준다. –

    +0

    동의 한 @drasto, PostSharp의 무료 비트는 더 많다. 당신이하고자하는 것을 성취하기에 충분하고, by에 의해 매우 견고한 틀입니다. 사이트에 좋은 예제도 많이 있습니다. – Perry

    관련 문제