Microsoft MVP성태의 닷넷 이야기
글쓴 사람
C#7.1책구매자
홈페이지
첨부 파일
 

안녕하세요.
저는 (시작하세요 C# 7.1 책을 구매한) 닷넷프레임워크 4.5, ASP.NET MVC5의 환경에서 웹개발을 하고 있는 개발자입니다^-^
지금 외부에 Request, Response 하는 새로운 서비스를 웹에 추가하려고 개발을 진행하고 있는데요, 조언을 조금 얻고 싶습니다.
Controller 에서 RouteData 객체를 Controller의 ViewModel과 Service를 초기화 하기 위해서 InitializeService에 Service 인스턴스, ViewModel 인슽턴스, RouteData를 파라미터로 전달합니다.
InitializeService에서는 dynamic으로 전달 받은 RouteData를 다시 Business에 전달합니다.
Business에서 dynamic으로 받은 RouteData를 팩토리 하나 추가해서 일련의 ViewModel을 반환합니다.
Controller에서는 Business 로직 호출과 데이터를 View에 반환하는 작업을 제외하고는 그 어떤 작업을 하고 싶지 않습니다.

<Controller>
Service svc;
ViewModel vm;
SyndicationInitializer.Intialize(svc, vm, RouteData);

<IntializeBusiness>
public static void Intialize(object svc, object vm, dynamic rd)
{
    Business biz = new Business();
    svc = new Service();
    vm = biz.ViewModelFactory(rd);
}

<Business>
public ViewModel ViewModelFactory(dynamic rd)
{
    var type = rd.Values.ContainsKey("type") ? Convert.ToInt16(RouteData.Values["type"]) : 0;
                
    if(type === "A") {
        return new AViewModel;
    }
}

<ViewModel>
Common Entity

<AViewModel : ViewModel>
AEntity

이런 식으로 작업을 하고 있는데요,
Controller에서 초기화 할 때만 static 메소드 사용합니다.
dynamic으로 파라미터를 받고 전달하는 방식이 좋지 않은 방식인가요.?
그리고 위와 같은 작업 방식이 안좋은 방법일까요?
의존성을 고려하면서 작업을 진행하려고 하는데, 아직 공부가 부족한 것 같습니다.
더 좋은 방법을 말씀 해주시면 저에게 큰 도움이 될 것입니다. ㅠㅜ
감사합니다!








[최초 등록일: ]
[최종 수정일: 5/18/2018]


비밀번호

댓글 작성자
 



2018-05-17 11시47분
dynamic을 사용하는 것이 나쁠 이유는 없습니다. 단지, 더 이상 컴파일 단계에서의 보호를 못 받기 때문에 반드시 단위 테스트 등을 이용해 테스트 케이스를 작성해 혹시 있을 런타임 오류를 방지하는 대비책을 마련해야 합니다. 즉, 나중에 dynamic의 멤버가 이름변경/추가/삭제되는 등의 변화가 있을 때에도 응용 프로그램이 견고할 수 있는가? 하는 것을 신경쓰셔야 합니다.

즉, 저 코드 올려주신 걸로는 알 수 없고, 이와 함께 단위 테스트 같은 것을 하고 있느냐를 알려주시면 됩니다.
정성태

1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5772눈송이12/26/20226482Excel VSTO 는 왜 Net Core, Net 5, 6 버전을 사용하지 않나요? [2]
5771김훈12/26/20226493c# .net client application 망분리(내부망,외부망) 환경에서 의문의 외부사이트 호출 대기 [2]
5770lsh12/26/20226050클라우디움안에 있는 파일을 File.Copy 하고싶은데 코드로는 접근을 못하나요? [1]
5769울타리12/20/20226274Active Directory 2012R2 2016 또는 2019 마이그렝션 문의 드립니다. [1]
5768c++12/14/20227939Thread를 사용한 C++ DLL에 관련된 질문입니다. [6]파일 다운로드2
5767민성12/9/20226361안녕하세요 ashx로 화일을 저장하고 화일명을 리턴하는데요 [1]
5766김명훈12/9/20226443웹브라우저에서 묻지 않고 바로 다운로드 [2]
5765hong12/1/20226746Winform(.Net6) 클라이언트에서 SignalR Core 웹서버에 접속시 인증서 문제 [3]파일 다운로드1
5764요한11/30/20226732c++ 동일한 객체인지 비교 방법문의 [2]
5763고필석11/30/20226202시작하자마자 비정상 종료하는 프로세스에 대한 문제 해결 조언 요청 드립니다. [3]
5762흰털너부리11/30/20226167wpf mvvm ui update 로딩중 표시 [1]
5761민성11/29/20226055죄송하지만 한가지만 더 여쭈어 보겠습니다 [1]
5760민성11/29/20225951안녕하세요 [2]
5759문정환11/28/20226215c# socket 통신할때 빅엔디언으로 바꿔줘야 하나요? [1]
5758라떼11/28/20227965Linux 에서 winform UI 어플리케이션 실행하기 [3]
5757흰털너부리11/25/20226265asp.net core EF AddDbContext,AddDbContextFactory 차이점 알려주세요 [1]
5756흰털너부리11/25/20226131asp.net core web api에서 json 특정 property 무시하는 방법 문의 드립니다. System.Text.Json 사용중입니다. [1]
5755문정환11/24/20225931싱글스레드 프로그램도 컨텍스트 스위칭이 생길 수 있나요? [4]
5754초급11/24/20226427c# 소켓통신 [1]
5753흰털너부리11/24/20226017List와 ObservableCollection을 비교 해서 다른 값 추출 FirstOrDefault 객체 비교 [4]파일 다운로드1
5752푸헐11/15/20226221app.config 에 connectionStrings를 aspnet_regiis로 enctyption [4]
5751차가워11/8/20226976vs2022 preview net7 AOT 콘솔 실행 성능 [7]
5749차가워11/4/20226251전처리 지시문 #if DEBUG 배포시 실행 여부 [1]
5748김기헌11/3/20226654안녕하세요 선생님 싱글톤 패턴을 꼭 이렇게 사용해야 하나요? [6]
5747김기헌11/2/20226027안녕하세요 선생님 네트워크 관련 용어 중 IP 주소가 왜 논리적 주소라고 표현되는 건가요? [2]
5746물냉면이...11/2/20226186서로 다른 클래스에 있는 동일 함수의 일괄 호출 방법에 대해 궁금합니다. [3]
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...