0

저는 온라인 숙제 제출 시스템을 사용하여 학생들이 볼 수있는 텍스트 문서를 교사 (교사/교수)가 볼 수있는 권한으로 업로드 할 수 있도록 노력하고 있습니다. 이 사람은이 문서에 주석을 달거나 강조 표시 한 다음이 문서를 추가 검토를 위해 전달할 수 있습니다. 검토가 끝나면이 문서는 적절한 피드백을 가지고 학생에게 보내집니다.문서 displayer 건축 관련 질문

많은 움직이는 조각이 있으며 어디에서 시작해야할지 고민 중입니다. 나는이 프로젝트를 사용자 경험과 같은 데스크톱을 지원하지만 UI 프레임 워크 (Vaadin) 및 언어 (Java) 외에도 완전히 오픈 소스 도구를 사용하여 확장 가능/보안/빠른 웹 응용 프로그램을 디자인하는 연습으로 사용하고 있습니다. 로드맵을 파악하는 데 어려움이 많았으므로이를 통해 약간의 진전이 필요했습니다.

SO 전문가가 저를 통해 저를 멘토링하거나 올바른 방향으로 뉘앙스를 줄 수 있다면 좋을 것입니다.

편집 : 답변 해 주셔서 감사합니다. 이것은 응답에서 설명한 표준 3 계층 아키텍처입니다. 방대한 확장 성이 필요하며 응용 프로그램이 주로 문서 중심 일 것이므로 나중에 나중에 검색을 갱신해야 할 수도 있으므로 RDBMS에서 벗어나려고합니다. 주어진 시간에 (* .txt라고 말하면서) 대량의 사용자가 문서를 게시하고 있기 때문에 대량의 정보를 처리하기 위해서는 메시지 대기열이 필요합니다. 모든 형식의 문서를 가져와 주석 및 마크 업에 적합한 형식으로 표시하는 일종의 빠른 변환 계층이 있어야하며 .... 목록이 계속됩니다. 도메인 모델로 시작하여 아래로 내려가는 것이 이상적 일지 모르지만 나는 약간의 회의론자입니다.

답변

1

나는 자바 녀석입니다. 이 문제에 어떻게 접근 할 것인가는

  1. 입니다. 시스템이 사용할 객체는 무엇입니까?
  2. 디자인에 따라 데이터베이스. Ibatis 나 Hibernate와 같은 ORM 프레임 워크를 사용할 수 있습니다 (Ibatis는 테이블에 액세스 할 수있는 모든 DAO를 생성하는 코드 생성기를 가지고 있으며, CRUD 메소드를 제공하고 그 위에 추가 할 수 있습니다).
  3. 이 작업을 완료하면 서비스 계층 디자인을 시작할 수 있습니다. DAO를 컨트롤러 (MVC 패턴)에 직접 노출하는 것은 좋지 않습니다. 이것은 비즈니스 로직이 들어갈 곳입니다.
  4. 웹 프레임 워크 중 하나를 선택하십시오. 가장 많이 사용되는 자바 웹 프레임 워크는 Spring MVC이다. Google Guice를 사용해 볼 수도 있습니다.
  5. 최종 단계는 프런트 엔드를 디자인하는 것입니다. 귀하의 프로젝트에는 많은 자바 스크립트가 포함될 것입니다. 따라서 JQuery 또는 EXT JS

이 정보가 도움이되기를 바랍니다.

+0

응답 해 주셔서 감사합니다. 그러나 접근 방법에 대한 몇 가지 유언을 갖고 있습니다. 자세한 내용은 내 편집을 참조하십시오. –

+0

@sc_ray 나는 "Design as you go"를 강력히 믿는다. 그리고 처음부터 나는 그것을 간직하고 싶었다. 빠른 응답 시간에 대한 필요성. 문서 인덱싱을 고려해야합니다. Solr (Lucene 위에 구축 된 검색 서버)를 살펴보십시오. 시스템에 더 많은 요청을 처리하기 위해 메시징 서버 (JMS)를 살펴 보도록 조언합니다. 실시간 응용 프로그램이나 강의실 프로젝트를위한 것입니까? 하지만 종이에서 바로 얻으려면 활력에 감사드립니다. –

+0

감사. 나는 내 자신의 지적 즐거움을 위해이 프로젝트를 진행할 것이다. 이 크기의 문제는 다양한 서로 다른 접선을 따라 이동합니다.Solr/Lucene과 JMS를 확실히 살펴볼 것입니다. 나는 "당신이가는 디자인"에 대해 당신과 동의합니다, 그것은 내가 처음에 어디로 가는지 알고 싶다는 것입니다. 필자는 만족할만한 고객이 없거나 둥근 구멍에 사각 못을 넣고 싶어하는 프로젝트 매니저가 없기 때문에 종이에 "다소" "맞다"고 생각했습니다. –

1

실제로 "완전한 대답"은 아니지만 생각하기에 좋은 음식입니다. 나는 완전히 오픈 소스 도구를 사용하여 확장/빠른/보안 웹 응용 프로그램을 설계하는 연습으로이 프로젝트를 사용하고

...

좋은 일을의

을 수행 할 - 제 질문이 왜 건축에 대한 걱정일까요?나는 이것이 자신을 건축가를지지하는 사람으로부터 오는 이상한 일이라고 인정하지만, "건축 학습"과 새로운 기술 습득은 모두 요구할 수 있습니다. 어쩌면 당신은 단지 처음으로 속도를 높이기를 원하고 다른 하나를 다루기를 원할 것입니다.

"확장 가능/안전/빠름"시스템을 설계, 설계 및 구축하는 것은 쉬운 일이 아닙니다. "현실적인"비즈니스 중심의 사례에서는 적합 할 시스템 컨텍스트가 있고 비 기능적 요구 사항은 다른 기술 스택을 제안 할 수 있습니다. 각기 다른 주요 요인은 사물에 접근하는 방법과 결정을 내리는 데 커다란 영향을 미칩니다. 물론 아키 텍처 (architecure)가이를 기반으로 구축 될 것입니다.

편집 :

내가 당신에게 더 중요한 무엇으로 시작 했죠

; 그런 다음 "다른"주제에서 시작하면서 나는 내가 배웠던/내 가정을 지속적으로 점검 할 것입니다.

두 피사체에 따라 다른 접근 방식을 제안하는 "시너지 효과"가있을 수 있습니다. 나에게 도움이되는 기본적인 지식을 얻고 다른 레벨을 비슷한 수준으로 끌어 올리라고 충고하고 싶다. 그렇게하면 좀 더 일관성있는 사람이됩니다.

내 또 다른 부분은 말합니다. 가장 흥미로운 부분을 해봅시다.

나는 앞으로 이동하기 전에 주어진 기술 스택의 깊이를 측량 할 또는 도구 불가지론 관점에서 오른쪽 청사진을 얻을해야 하는가?

처음에는 넓고 얕은보기를 원합니다. 그들이 당신에게 특히 중요하다면 좀 더 자세하게 특정 영역으로 들어갈 수도 있습니다.

또는

내 청사진 때문에 기술의 제약으로 바꿀 것입니다? 이로써

나는 당신이 그 의미 있으리라 믿고있어 : 당신은 "주어진 기술은 이러한 방식으로 작동"발견하고 그것을 당신이 기대했던 어떤 다른 형태를 어떻게 작동하는지 경우 - 다음이 청사진에 영향을 미칠 것인가?

관련 기술의 폭은 넓지 만 얕은보기는 가장 나쁜/가장 명백하게 나쁜 실수를 피하는 데 도움이됩니다. 나는 또한 당신이 당신이 이것을 시작할 때 당신이보고있는 것을 알기에 충분한 경험을 가지고 있다고 가정합니다 - 당신은 디자인을하기 전에 더 상세한 연구가 필요한 영역을 인식 할 수 있습니다.

높은 수준에서 옵션을 경로의 아래쪽으로 제한하지 않도록해야합니다.

+0

응답 해 주셔서 감사합니다. 당신은 훌륭한 지적을 제기합니다. 이 프로젝트의 이점은 이것이 교실 프로젝트 나 현장 배치 작업이 아니기 때문에 기업의 조직적 제약 조건을 준수해야하는 개발자/설계자의 잡동사니보다 약간의 여유가 있다는 것입니다. 이것은 어떻게 든 "달걀 앞에서 닭고기"시나리오로 변합니다. 전진하기 전에 주어진 기술 스택의 깊이를 내리거나 도구에 독립적 인 관점에서 청사진을 바로 잡을 수 있습니까? 아니면 기술적 제약 때문에 내 청사진이 바뀔 것입니까? –