2010-12-14 4 views
1

저는 2 년 반의 VB.Net 경험을 가지고 있습니다. 주로 독학을받습니다. 그래도 여전히 멍청한 것처럼 보이고 기본 사항 중 일부를 모르는 경우 나와 함께 견뎌주십시오. 나는이 일을 시작하기 전에 차를 마시는 것이 좋습니다. 꽤 오래 걸리는 것처럼 보입니다. ...VB.Net 응용 프로그램을 분할할지 여부를 결정하는 방법과 분할하는 방법은 무엇입니까?

나는 현재 15000 줄이 넘는 코드로 된 꽤 큰 응용 프로그램 (VB.Net 웹 사이트)을 가지고 있습니다. 마지막 카운트. 그것은 소매업이나 그와 같이 복잡한 것은 아닙니다. 관리 프론트 엔드, 카탈로그/카탈로그 관리 시스템 및 페이지 뷰 시스템을 갖춘 말 그대로 도매상의 웹 사이트입니다.

. 닷넷 응용 프로그램이 백그라운드에서 작동하는 방식에 대해 많이 알지 못합니다. 모든 스레드가 동일한 스레드에로드되어 있는지 또는 각 스레드마다 고유 한 스레드가 있는지 ... 저는 코드를 작성하는 방법을 알고 있습니다. 적어도 다음과 같이

기본적으로

내 응용 프로그램이 설정되어 :-) ... 내가 생각하고 싶다 :

두 가지 영역이 있습니다
  • - 고객 영역과 관리 프론트 엔드가.
  • 고객 프론트 엔드의 주요 부분은 카탈로그입니다. MasterPage는 제품 목록을로드하지만 그뿐입니다. 이는 모든 고객 프론트 엔드 페이지에 공통적입니다.
  • 변경 사항을 업로드하기 전에 한 번에 하나 또는 여러 부분의 응용 프로그램에서만 작업하는 경향이 있습니다. 예를 들어, 카탈로그의 계층 구조를 변경하고 카탈로그 페이지를 변경하여 계층 변경 사항을 일치시킬 수 있습니다.
  • 페이지 뷰 데이터베이스가 실제로 상당히 커지고 있으므로 작동하는 방식으로 인해 응용 프로그램이 처음 요청되면 다소 느려집니다.
  • 응용 프로그램 시간 초과가 5 분으로 설정되어 있습니다. 변경 방법을 모르는 경우에도이 질문을 여기에서 시도해 보았습니다. 솔루션이 매우 복잡하고 변경하지 않는 것이 좋습니다. 고객은 마지막 페이지보기 후 5 분 후에 응용 프로그램을 요청한 다음 응용 프로그램을 처음부터 다시로드합니다. 즉, 5 분 동안 사용하지 않으면 매우 느린 페이지로드가 발생합니다.

나는이 가장 모든 경우에 응용 프로그램을 분할하는 방법을 결정하는 데 고려를 필요로하는 경우 잘 모르겠지만, 다음과 같이 카탈로그 시스템의 각 부분이 설정되어

  • 관리자 클래스 관리자 프론트 엔드가 지정된 유형의 항목을 추가, 편집 및 제거하고 고객 프론트 엔드가 지정된 유형의 항목 목록을 검색하는 데 사용되는 최상위 레벨. 예를 들어, "RangeManager"는 제품 "Ranges"목록을 포함하며 고객 프론트 엔드에서 이들과 상호 작용하는 데 사용됩니다.
  • 속성 클래스가 들어있는 Range와 같은 Item 클래스입니다. 예를 들어 Name, Description, Visible, Created, CreatedBy 등이 있습니다. 추가/편집을위한 양식은이를 통해 관리자에게 관련 컨트롤을 표시합니다. 예를 들어 BooleanAttribute에 대한 체크 박스.
  • StringAttribute, BooleanAttribute, IntegerAttribute 등의 유형이 될 수있는 Attribute 클래스입니다. 또한 RangeAttribute, UserAttribute 등과 같은 사용자 지정 특성 (데이터 형식 만이 아님)이 있습니다. 이들은 데이터 필드가 주어지며,이 필드는 처음 요청되었을 때 포함 된 항목에 특정한 데이터를 가져 오는 데 사용됩니다. 기본적으로 항목에는 속성이 처음 요청되었을 때만 속성에 의해 저장되고 액세스되는 DataRow가 제공됩니다.
  • 한 항목은 특정 관리자에서 요청 관리자가 데이터베이스에있는 모든 항목을 반복하고 항목 클래스의 새 인스턴스를 만들 것 요청. 예를 들어 RangeManager에서 Range가 요청되면 RangeManager는 Ranges 테이블의 모든 DataRow를 반복하고 각각에 대해 Range 인스턴스를 새로 만듭니다. 위에서 설명한 것처럼 모든 데이터를 거기에로드하는 대신 DataRow를 사용하여 새 인스턴스를 만듭니다. 특성 자체는 DataRow에서 관련 데이터를 처음 요청할 때와 가져옵니다.

내 생각에, 코드를 뒤집어 쓰는 단어에 대한 사소한 버그 나 맞춤법 오류를 수정할 때마다 전체 응용 프로그램을 다시 컴파일하고 업로드하는 것은 어리석은 것처럼 보입니다. 동적으로 레이블의 텍스트). 카탈로그 페이지에 대한 수정/변경, 현재 상황은, 같은 MasterPage를함으로써 차별화 카탈로그 페이지와 관련된 어떠한 방식에있는 연락처 페이지를 보려고 고객을 의미하므로 DLL 때문에 할 수 없어 업로드 중입니다.

는 기본적으로 제 질문은, 내 현재 주어진 상황에서 어떻게 사람들은 내가 여러 응용 프로그램으로 분할의 방법으로 응용 프로그램의 아키텍처를 변경 제안입니까? 내 생각에 고객/관리자, 고객/관리자 및 페이지 뷰 또는 다른 방법일까요? 아니면 전혀? 여기에 언급하지 않은 다른 대안이 있습니까? 웹 서비스가 여기에 도움이 될 수 있었습니까? 카탈로그 자체를 다른 응용 프로그램으로 분할하고 다른 모든 페이지의 마스터 페이지를 사용하여 웹 서비스를 사용하여 왼쪽에 나열 할 제품 이름을 얻으십시오. 나는 단지 길을 복잡하게 만드는 길 일까? 미리 :-) ... 나는 짧은 그것을 유지하기 위해 노력했다,하지만 난 항상 실패 ...

많은 감사를 아마 나는이 질문의 길이에 의해 판단하고, 처음되지 않을 것, 내가 너를 완전히 혼란에 빠지면 미안해! 읽기에 의해

감사합니다,

리처드

+0

나는 누군가가 아마도이 질문의 길이에 대해 슬픔을 줄 것이라고 생각한다. :) –

+0

이 ASP.NET인가? 당신은 웹 사이트와 마스터 페이지를 여러 번 언급하는 것을 언급하지만 VB.NET이 명시 적으로 언급 된 것을 볼 수 있습니다. –

+0

@ 엘 Ronnoco : 왜 내가 여러 번 사과하고 그것을 읽기 전에 차를 마시는 것이 좋습니다! :) @Cody : 그때 .net 태그를 제거합니다. 잠깐만 ... – ClarkeyBoy

답변

1
  1. 15000 LOC 정말 그렇게 크지 않다. 당신이 게시 사이트를 미리 컴파일되지 않습니다처럼

  2. 는 소리가 난다. 다음 내용을 읽어보십시오. http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx

  3. 응용 프로그램을 다시 컴파일하고 업로드하는 것이 가장 좋은 방법입니다. 마크 업이 변경되면 개별적으로 업로드 할 수 있습니다 (예 : aspx 페이지에서 일부 html 레이아웃 변경).

  4. 난 당신이 응용 프로그램 타임 아웃에 의해 여기 무슨 뜻인지 모르겠지만, 앱 도메인이 5 분마다 재활용하는 경우, 마우스 오른쪽 전혀 보이지 않습니다. 너는 이것을 조사해야한다. 또한

, 당신은 자신이 사이트의 여러 다른 부분 (즉, 여러 가지 변경) 작업을 찾을 수 있지만 소스 컨트롤을 사용하는 방법을 다음에 보일 것입니다, 고립에서 일부 항목을 배포해야하는 경우 도구 (당신은 하나를 사용하고 있습니까?). GIT 및 분기/병합과 같은 것을 조사하십시오.

+0

포인트 2에 관해서 : 예 나는 Publish (출판)로 가서 그것을 컴파일하고 있습니다. 포인트 4 : 그렇습니다. 약 5 분 후에 앱 도메인이 재활용됩니다. 세션은 1 시간으로 설정되어 있지만 사용자는 5 시간 후에도 로그 아웃됩니다 (운 좋게도 유일한 사용자는 관리자 임). 나는 이것을 더 자세히 조사 할 것이다. 나는 소스 컨트롤을 사용하지 않을까 두렵다. 내 배치 연도에서, 당신이 그것에 대해 작업하는 팀을 가지고 있다면 이것이 의미 였음을 나는 인상적으로 생각했다. 나는 독창적 인 개발자이므로, 내가 말한 것에 근거하여 내가 필요하다고 생각하지 않았다. – ClarkeyBoy

+0

포인트 3 : 그렇게하는 것이 매우 "불확실한"것처럼 보입니다. 불필요한 시간 낭비와 불필요한 것을 의미합니다. 나는 불필요한 다운 시간을 피하기 위해 자정 또는 그 이후에 업로드 할 것을 항상 확신하지만 회사는 전 세계적으로 알려 지므로이 접근법이 항상 작동하지는 않습니다. – ClarkeyBoy

+0

@ClarkeyBoy - 소스 컨트롤을 사용합니다. 심지어 그것은 단지 당신입니다 - 당신이 정말로 f * ck까지 롤백 할 수 있습니다. 다운 타임에 관해서는, 그것이 바쁜 경우, 당신은 너무 많은 사용자를 방해하지 않고 한 번에 개별 서버를 줄일 수있는 일종의 웹 농장을 봐야 할 수도 있습니다. – Paddy

1
+0

고마워. 나는 이것을 철저하게 읽을 것입니다! 솔직히 말해서이 링크를 회신 했더라도이 질문을하는 것이 유용했을 것입니다. – ClarkeyBoy

관련 문제