2011-07-29 4 views
2

사용자가 자신의 연락처 정보를 업데이트 할 수있는 웹 응용 프로그램에 페이지가 있다고 가정 해보십시오. 나는 다음과 같은 클래스가이 정보를 검색하거나 저장하기 위해 척 :포스트 백에서 비즈니스 객체 지속성

public class User 
{ 
    DataAccesClass dataAccesClass = new DataAccesClass() 
    public string UserName {get;set;} 
    public string Address {get;set;} 
    public string EmailAddress {get;set;} 

    public User(){} 

    public static User GetUser(int userID) 
    { 
     User user = dataAccesClass.GetUser(userID); // 
     return user; 
    } 

    public void Save() 
    { 
     dataAccesClass.SaveUser(this); 
    } 
} 

가 내 Page_Load 이벤트에 내 사용자 클래스의 새 인스턴스를 만들 말을 (A에 싸여 IsPostBack을!). 그런 다음 공용 속성을 사용하여 웹 응용 프로그램에서 해당 페이지의 텍스트 필드를 채 웁니다. 이제 문제는 ... 페이지가 다시 게시되면이 클래스를 다시 작성하여 업데이트 된 정보를 저장하는 올바른 방법은 무엇입니까? 클래스가 Page_Load! isPostBack 이벤트에서 작성 되었기 때문에 사용할 수 없습니다. 이것을 처리하는 올바른 방법은 무엇입니까? 세션에 저장해야합니까? ViewState? 나는 모든 게시물을 다시 작성해야합니까? 이 예제의 User 클래스는 작기 때문에 올바른 방법에 영향을 줄 수 있지만 더 크고 복잡한 클래스에 대해서는 동일한 접근 방식을 사용할 수 있기를 바랍니다. 또한이 클래스는 수용 가능한 비즈니스 객체로 간주됩니까?

답변

2

이 클래스를 다시 작성하여 업데이트 된 정보를 저장하는 올바른 방법은 무엇입니까?

모든 포스트 백에서 클래스를 다시 작성하지 않는 것이 좋습니다. 첫 번째 요청에서 데이터를 작성하고 컨트롤의 값을 설정 한 다음 해당 컨트롤의 viewstate가 데이터를 유지하도록해야합니다.

데이터를 업데이트해야 할 가능성이있는 경우 업데이트 할 실제 필요가 있음을 나타내는 이벤트에 개체의 재 생성을 연결합니다.

세션에 저장해야합니까? ViewState? 나는 모든 게시물을 다시 작성해야합니까?

세션에 값을 저장할지 또는 데이터 계층에서 값을 다시 저장할지 여부를 선택하려면 개체의 메모리 사용 공간, 응용 프로그램의 확장 성 요구 사항, 데이터베이스 작업의 비용 가능성 및 우도 개체는 특정 요청에 액세스해야합니다. 그래서 저는 그것이 매우 상황이 좋다고 믿습니다.

또한이 클래스는 수용 가능한 비즈니스 객체로 간주됩니까?

나는 BLL의 경험이 많지 않지만 올바른 길을 걷고있는 것처럼 보입니다.

2

프로파일 링이 달리 표시하지 않는 한 모든 요청마다 개체를 재구성하는 것이 좋습니다. 데이터 액세스 코드에서 일종의 캐싱을 구현할 수도 있습니다. 클래스가 허용되는 비즈니스 객체입니다.

+0

일반적으로 이것은 사실이지만 재발행에는 반드시 필요한 것은 아니라고 생각합니다. +1 캐싱을 제안합니다. – pseudocoder

1

사용자 개체가 ViewState를 통해 노출하고 싶지 않은 정보를 가질 수 있다면 Session에 저장할 수 있습니다.

이것은 ASP.NET에서이 작업을 수행하는 "표준"방법입니다.

0

예를 들어, 개체를 재구성하면 작은 것처럼 잘 보입니다. 그러나 당신이 필연적으로 잠시 보관하는 작은 물건이 있다면, 저는 세션을 사용하게 될 것입니다. 개체가 큰 경우 직접 데이터베이스 연결을 사용하여 데이터베이스 또는 세션을 사용합니다.

0

knockout.js라는 JavaScript 프레임 워크를 얼마나 복잡하게 생각 하느냐에 따라 적절할 수 있습니다.json 객체를 생성하여 객체에 따라 HTML을 작성하는 jQuery 템플릿에 바인딩 할 수 있습니다. 복잡한 객체를 매우 잘 처리합니다.

관련 문제