2012-12-05 3 views
1

전 세계에서 사용되는 웹 사이트에서 일하고 있으며 지구상 어느 곳에서나 언제든지 사용할 수 있어야합니다. 그래서 사소한 유지 관리가 필요할 때 웹 사이트를 다시 컴파일/다시 시작해야 할 필요성을 최대한 줄이기 위해 가능한 모든 트릭을 사용하려고합니다.보기에 정의 된 모델은 무엇입니까?

Asp.Net MVC에서보기를 편집하고 서비스 중단없이 프레임 워크에서 자동으로 동적으로 다시 컴파일 할 수있는 기능은 정말 훌륭하고 완벽하게 필요합니다. 그러나 기본 모델을 비슷한 방식으로 편집 할 수없고 전체 내용을 다시 컴파일해야한다면 해당 관심이 크게 제한됩니다.

내 질문 : 어떤 식 으로든 (심지어 끔찍한, 해커 중 하나) 코드 블록에서보기 자체 내에 뷰 모델 클래스를 정의 할 수 있습니까?

"핫 편집 가능"웹 사이트를 만들기 위해 탐험 할 수있는 것은 무엇입니까? (즉, 사이트가 아직 살아 있고 변경 사항을 즉시 고려하여 재 컴파일 할 수 있습니다.)

미리 감사드립니다. :-)

+0

보기에서 모델을 정의 할 수 있다고 가정 해 보겠습니다. 컨트롤러는 이러한 변경 사항을 어떻게 알 수 있습니까? – cadrell0

+0

Unity (또는 IoC/DI 컨테이너)와 같은 것이 여기에 도움이 될까요? 따라서 뷰에서 모델을 정의하지 않으면 동적으로 변경 될 수 있습니다 ... –

+0

심지어 가능하다면 유지 보수의 악몽이 될 것입니다. – jrummell

답변

2

성능 및 가동 시간이 염려되는 경우 서버 팜을 사용하여 사이트를 호스팅하는 것이 좋습니다. 업데이트가 필요할 때마다 각 서버를 개별적으로 다운 받아 사이트를 항상 사용할 수 있습니다.

그러나 대부분의 배포에는 몇 초 밖에 걸리지 않습니다. 응용 프로그램을 돌리기 위해 더 많은 시간이나 더 적은 시간이 필요할 수 있습니다 (예 : EF보기 생성에는 10-20 초가 소요될 수 있음). 그러나 피크 시간대에 업데이트하는 동안 정상이어야합니다.

또한 라이브 서버에서 코드를 변경하는 것이 좋습니다. 결국 무언가를 깨뜨릴 것입니다.

+0

당신의 대답은 매우 논리적이며 확실히 제 질문이 제정신이 아닌 것처럼 보입니다. 그러나 그것이 내 조직에서 그렇게 간단하게 적용될 수없는 이유는 많이 있습니다 ("나쁜"이라고 말할 것입니다).당신이 범하는 좋은 습관은 또한 정착하기에 꽤 무거운 것이고 나는 그것을 거의 가질 여지가 없다. 그런 다음 작은 업데이트를 매우 신속하게 온라인에 적용 할 수있는 좀 더 유연하고 유연한 방법을 상상해야합니다. 물론 이러한 관점에서 변경 사항을 업로드하기 전에 집중적으로 테스트하는 것이 나에게 달려 있습니다. 그러나 우리는 C#에서 동적 유형을 사용할 때 이미 동일한 작업을 수행합니다 (예 : 아니오)? :-) – Ssithra

+0

하늘빛이 더 비용 효과적 일지 모르지만 나는 그것에 익숙하지 않다. 물론, 충분한 테스트와주의를 기울여 제안한 것이 실현 가능할 수 있지만 여전히 위험합니다. – jrummell

0

결국 나는 다른 전략으로 목표를 달성했습니다. 모든보기에는 DataSource이라는 동일한 모델이 있습니다.이 모델은 렌더링 전에 열려있는 레코드 세트로 전역 적으로 열려 있으며 (필요한 경우보기 내에서 면도날 코드에 의해 읽기가 수행됩니다).

레코드 집합의 열 목록이 사이트 충돌없이 라이브로 변경 될 수 있습니다.

양식 및 유효성 검사를 위해 기본 저장 프로 시저에 대한 데이터베이스에서 가져온 메타 데이터는 동적으로 C# 형식을 만드는 코드 방출로 이어지고 그 것입니다. sp가 변경 될 때마다 새로운 유형이 생성 되더라도 응용 프로그램 풀 재순환 비율은 메모리에서 너무 많이 사용되는 오래된 유형을 방지합니다.

관련 문제