2011-02-28 3 views
2

내 질문은 ASP.NET 4.0 WebForms 응용 프로그램에서 자동 저장을 구현하는 고성능 방법에 관한 것입니다.큰 ASP.NET 폼 자동 저장 및 다시 채우기 메서드를 수행하는

다양한 jQuery 자동 저장 플러그인을 많이 읽었지만 모든 입력 요소를 최소화하는 데 가장 적합합니다. 그리고 사용자가 폼으로 돌아올 때 ASP.NET 폼을 다시 채울 솔루션을 찾지 못했습니다.

많은 요소와 중첩 된 listview 및 formview가있는 FormView가 있습니다. LinqDataSource를 사용하여 FormView와 그 자식을 채 웁니다.

웹 서버는 IIS 7입니다. DB는 Linq to SQL을 통한 SQL Server이고 MSMQ 또는 다른 서버 구성 요소에 대한 액세스 권한이 있습니다.

AutoPostBack으로 설정된 양식 요소 및 비동기 요청을 순차적으로 수행하도록 사용자 정의 JavaScript로 설정된 UpdatePanel을 사용하여 자동 절약을 구현했습니다. 이것은 Linq to SQL의 동시성 오류를 피하기위한 것입니다. 각 UpdatePanel 비동기 포스트 백은 전체 양식을 SQL Server의 초안 테이블에 저장합니다. 매우 우아하지는 않지만 천천히 작동합니다!

문제는 왕복이 너무 느립니다. 이로 인해 저장 중에 작성된 양식 변경 사항이 저장되지 않으며 사용자가 그 동안 스크롤 한 경우 양식이 저장된 요소로 다시 이동합니다.

  1. 이 같은 방법을 계속 양식에서 LINQ 엔티티를 채우고 MSMQ에 저장 :

    그래서 지금은 필요가 생각하고 있어요. 나는 이것을 풀어서 사용자가 양식을 제출할 때 (또는 세션 종료시 또는 다음에 다시 로그인 할 때) 계속 유지합니다. 또는

  2. https://github.com/nervetattoo/jquery-autosave/과 같은 것을 사용하고 직렬화 된 양식 데이터를 MSMQ에 저장하십시오. 이것은 매우 빠르지 만 문제는 사용자가 후속 세션에서 양식을 반환 할 때 ASP.NET 양식에 데이터를 다시 저장하는 방법을 모르겠다는 것입니다.

각 게시물에 '보내는'양식 입력 값 만 저장하려고 생각했습니다. 사전에서이 작업을 수행하고 MSMQ에서 사전을 유지 관리 할 수 ​​있습니다.

사용자가 브라우저를 닫더라도 양식 데이터가 유지되도록해야하기 때문에 캐시 또는 세션을 사용할 수 없습니다. 그래서 좀 더 견고한 것이 필요합니다.

귀하의 의견에 매우 관심이 있으 십니다.

건배 .. 이전 연구에서

+0

MSMQ가 로컬입니까? MSMQ가 설치되었는지 보장 할 수 있다면 흥미로운 생각입니다. –

+0

웹 서버의 로컬입니까? 예. 다른 곳에서도 구현 된 것을 보았지만 잘 수행됩니다. 현재 LinqDataSource를 사용하고 있지만 성능을 최적화하고 더 나은 스크립팅을 통해 비동기 저장 옵션을 사용자에게 숨기기 위해 노력하고 있습니다. 하지만 최상의 솔루션은 직렬화 된 형식을 MSMQ에 직접 저장하고 필요할 때 SQL Server에 저장하는 것입니다. 이 프로젝트에서 할 시간이 있는지 확실하지 않습니다! 곧 업데이트 될 예정입니다. –

답변

0

, 그냥 괜찮 았는데 내부에 숨겨진 버튼 또는 타이머 제어 패널을 가진. 사용자가 자동 ​​저장하는 동안/후에 자동으로 저장하는 것이 일반적입니다. 그래서 자동 저장 기능이 아닌 최종 기능입니다. 이러한 변경 사항은 다음 자동 저장시 저장됩니다.

전체 폼 (그 안의 컨트롤, 그 안에 타이머 컨트롤이나 단추 컨트롤)의 페이지에서 정상적인 하나의 UpdatePanel을 사용하면 순차적 JS 정도의 작업을 수행 할 필요가 없습니다. 자동 저장을 "매우"자주한다고 생각하십니까? 대형 폼의 경우 30-120 초가 적당합니다.

일반적으로 MSMQ 또는 DB 등에서 초안을 작성해야합니다. 사용자가 양식 작업을 할 때 존재한다면, 그렇지 않으면 정상적으로 작동합니다.

jQuery 플러그인 역시 매우 흥미 롭습니다.

+0

고마워요. 예, 자동 저장은 각 입력 요소에서 트리거되기 때문에 (모든 항목을 잃지 않도록) 2 초마다 발생할 수 있습니다. 아마도 약간 야심적 일 수 있습니다! :) 그러나 나는 그것을 해결하기로 결정했습니다. –

+0

문제가 너무 많다고 생각합니다. 당신이 그것을 풀더라도 나는 전혀 필요가 없을 것입니다. 합리적인 시간에 전체 양식을 사용할 수있게 만들고 이것이 문제라고 생각하고 최적화하십시오. – Meligy

+1

어쨌든, 모든 필드에 대해 양식 식별자 (초안이나 사용자에 특정한 것을 포함 할 수 있음), 필드 식별자 및 값을 웹 서비스 또는 그 밖의 것으로 만 보내는 모든 변경 이벤트 등에 대해 jquery 핸들러를 만드는 것이 가장 좋습니다 이 필드를 업데이트합니다. SQL을 사용하여 하나의 필드 만 업데이트하는 경우 LINQ to SQL을 통해 전체 엔터티를로드하는 경우 순차적 인 작업이 여전히 필요합니다. – Meligy