2010-06-13 8 views
7

대규모 시스템 개발을 시작하려고하고 있으며 어떤 방향으로 나아갈 지 고심하고 있습니다. 이전에 많은 자바 웹 응용 프로그램을 만들었으며 서블릿 컨테이너 및 GWT에 대한 풍부한 경험과 Spring에 대한 경험이 풍부합니다. 문제는 내 웹 응용 프로그램의 대부분이 함께 개념의 증거로 던져졌고 내가 고민하고있는 것은 사용할 프레임 워크 집합입니다. 브라우저 기반 응용 프로그램과 모바일 장치 (Android 및 iPhone은 현재 지원)를 지원하도록 설계된 웹 서비스가 모두 필요합니다. 이상적으로는이 시스템을 설계하여 각 클라이언트 (브라우저 및 전화)에 대한 모든 서블릿을 다시 작성하지 않도록하고 싶습니다. 제대로 작성하기 위해 몇 가지 작은 수표를 가지고 있어도 괜찮습니다. 데이터.대규모 자바 웹 애플리케이션을 처음부터 설계하기위한 제안

또한 유일한 개발자이지만 지금은 반드시 그럴 필요는 없으며 트래픽과 개발자 수와 관련하여 잘 저울질 디자인을하고 싶습니다 (isn ' 유지하는 악몽이다).

이제 GWT를 사용하여 브라우저 기반 인터페이스를 설계 할 계획이지만 모바일 장치 용 인터페이스 (대부분 xml)를 제공하기 위해이 코드를 재사용하는 방법에 어려움을 겪고 있습니다. GWT RPC를 사용하면 브라우저에서 모든 AJAX를 비교적 쉽게 만들 수 있다고 생각하지만 휴대 전화 용 XML을 생성하기 어려울 수 있습니다. 또한, 나는 영속성을위한 Hibernate와 Spring Security와 같은 것을 사용하여 모든 것을 보호한다는 생각을 좋아한다. 다시 말하지만, GWT와 얼마나 협조 할 것인지는 잘 모르겠다. (나는 Hibernate가 잘되어야한다고 생각한다.)

분명히 여기에 제시된 것보다 훨씬 많은 것이 있지만, 당신에게 5 분의 개요. 나는 약간 혼란스럽고 지역 사회의 누군가가이 곳에서 시작한 경험이 있는지 궁금해하고있었습니다. 내가 뭘하려고하는지 이해가 되니? 현실적인가요? 나는이 모든 프레임 워크가 같은 언어로 말할 수 있다는 것을 의심 할 여지가 없다. 나는 그들과 싸울만한 시간이 필요한지 궁금하다. 또한 정말 유익 할 프레임 워크가 누락 되었습니까? 상대적으로 폭 넓은 질문에 대한 사전 및 유감의

감사합니다 ...

크리스

+0

닫지 마십시오. 대규모 프로젝트를 시작하기 전에 고려해야 할 점에 대한 유효한 질문입니다. –

답변

3

좀 관련 경험이 있기 때문에 내가 여기에 꽤 특정 수 있습니다. 내가 쓰는 모든 것이 적용되는 것은 아니지만, 나는 무언가가되기를 바라고 있습니다.

내 조언은 프레임 워크에 직접 의존하는 코드를 가능한 한 "어리석은"것으로 유지하는 것입니다. 가능한 경우 그런 코드를 더 일회용 또는 일회용으로 간주하십시오 (구현에 현명하고 고객에게 노출 된 API 계약은 물론 안정적이어야 함).

귀하의 응용 프로그램을 독특하게 만드는 것에 중점을 두어 GWT와 무관하게 만드십시오. facade pattern은 제가 권장 할 수있는 것입니다. 응용 프로그램 별 로직을 유지하고 프리젠 테이션 레이어를 배선하여 노출시키는 것이 좋습니다. 우리 잘. 백 엔드가 (웹 서비스 등을 통해) 타사 인프라에 의존하는 경우 adapter pattern을 사용하여 해당 종속성을 코드에서 분리하십시오.

저는 지난 5 년 동안 많은 시간을 당신이 여러면에서 설명한 것과 일치하는 것을 만드는 데 썼습니다. 현재는 앱 프레임 워크가 많아서 두 가지 브라우저 인터페이스 (WAP/표준 웹 + 아약스/Facebook 앱), 양방향 SMS 사용을위한 인터페이스, 두꺼운 모바일 클라이언트를위한 REST/XML 인터페이스가 있습니다. - BREW , 아이폰, 안드로이드 및 블랙 베리.

프레임 워크의 경우 지속성을 위해 Hibernate를 사용했습니다. 모든 다른 코드는 Spring과 함께 묶여 있습니다. 브라우저 인터페이스는 Struts (1.x)에서 Wicket으로 이식되었습니다. SMS 및 모바일 클라이언트 인터페이스는 Restlet 위에 구축됩니다.

여러 가지 다른 표현 계층 프레임 워크 (예 : 우리의 경우 Wicket과 Restlet)는 코드가 간결하게 유지되고 비즈니스 규칙이 가능한 범위 내에서 유지되는 한 문제가되지 않았습니다. 브라우저 인터페이스가 모바일 클라이언트 인터페이스와 동일한 WAR에 패키지되어야한다고 말하는 것은 없습니다. 스프링을 사용하면 동일한 외관으로 여러 웹 응용 프로그램을 쉽게 연결할 수 있습니다. 이는 특히 여러 개발자가 잘 격리 된 응용 프로그램에서 작업 할 수있게하는 데 도움이되었습니다.

제 생각에는 프레젠테이션 계층에서 최대한의 코드 재사용을 얻으려고하면 좋지 않은 결과가 발생했습니다. 이는 항상 우리가 기대했던 것 이상으로 애플리케이션에서 가장 변동이 심한 부분이었습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 네가 내게 큰 도움이 될 훌륭한 제안을 한 것 같아. 진심으로 당신의 경험에 감사드립니다! –

관련 문제