2009-12-21 4 views
1

C# .NET의 엔지니어링 응용 프로그램을 작성합니다. 종종 이러한 응용 프로그램에는 복잡한 업데이트 메커니즘이 있습니다. 최소한 복잡한 업데이트 메커니즘을 작성해야합니다.업데이트 메커니즘 이론

업데이트 이론을 배울 수있는 책이나 무언가를 누군가 나에게 안내해 줄 수 있습니까? 재귀 함수에 대해 배우는 데 시간을 할애해야합니까? 비동기 업데이트? 이진 나무? 야구장에 들어가기 위해 주차장에도 있습니까?

자기가 포함되어있어 보이기 쉽고 청결하고 WPF 및 실버 라이트 GUI에 바인딩하기 때문에 속성을 사용하는 것을 좋아합니다. 스파게티를 줄이는 것처럼 보이기 때문에 이벤트를 좋아하지만 이론적으로는 좋지 않습니다. 이러한 것들에 대한 이해는 매우 건전합니다.

도움 주셔서 감사합니다.

다음은 내가 말하고자하는 것의 예입니다.

public delegate void ParentChangedEventHandler(object sender, EventArgs e); 

public class Parent 
{ 
    List<Child> Children; 

    private double parentCoefficient; 
    public double ParentCoefficient 
    { 
     get 
     { 
      return parentCoefficient; 
     } 
     set 
     { 
      parentCoefficient = value; 
      ParentChanged(this, EventArgs.Empty); 
     } 
    } 

    public double Chaos 
    { 
     get 
     { 
      double chaos = 0; 
      foreach(Child child in Children) 
      { 
       chaos += child.ChildChaos; 
      } 
      return chaos; 
     } 
    } 

    public event ParentChangedEventHandler ParentChanged; 

    public Parent() 
    { 
     ParentCoefficient = 42; 
     Children = new List<Child>(); 
     for (int i = 0; i < 12; i++) 
     { 
      Children.Add(new Child(this)); 
     }    
    } 
} 

public class Child 
{ 
    public double ChildChaos; 
    private Parent parent; 

    public Child(Parent theParent) 
    { 
     parent = theParent; 
     parent.ParentChanged += new ParentChangedEventHandler(parent_Changed); 
    } 

    private void parent_Changed(object sender, EventArgs e) 
    { 
     ChildChaos = 0.5 * parent.ParentCoefficient; 
    } 
} 

그래서, 당신은 부모 클래스를 변경 한 다음 부모가 아이가 변경 될 때 업데이트 할 필요가있을 때 자녀가 업데이트가 필요한 것을 알 수 있습니다. 부모 이벤트를 자식의 이벤트에 등록하여 부모를 업데이트하면 모든 자식이 업데이트 된 후에 만 ​​업데이트해야하는 모든 자식에 대해 한 번 업데이트됩니다.

여러분 중 일부는이 특정 문제에 대한 해결책을 생각해 낼 수 있지만이 내용은 단순화 된 예임을 명심하십시오. 실제 것들은 훨씬 더 복잡합니다.

저는 이런 종류의 기본적인 이론을 다루는 책을 실제로 사용할 수 있습니다.

+2

"업데이트 메커니즘"이 무엇을 의미하는지 알 수 없을 것입니다. 무엇을 업데이트합니까? –

+1

@Jonathon : 동의 함. 처음에는 X-version에서 Y 버전으로 앱을 업데이트하는 것에 대해 이야기하고 있다고 생각했습니다. b-trees가 어떤 역할을하는지는 알지 못합니다. – jcollum

+0

그건 내 문제입니다. 나는 어떤 단어를 사용해야 할지도 모릅니다. 내가 말하는 것에 대한 간단한 예제를 작성하여 추가 할 것입니다. – Eric

답변

1

규칙 엔진이 효율적으로 모델링 할 수있는 복잡한 상태 종속성에 대해 말하고있는 것 같습니다. 근대 규칙 엔진은 기본적으로 입력 집합을 가져 와서 규칙 집합을 적용하고 그 중 일부는 이전에 적용된 규칙의 출력에 다시 작용하고 이러한 규칙을 준수하는 출력을 생성합니다.

상위 엔티티가 변경되면 "카오스"누적을 강제하는 규칙이 있습니다. 예를 들어, 이것은 "혼란"이 문턱에 도달 할 때 다른 규칙을 해고 할 수 있습니다.

복잡한 종속성은 규칙이 선언적이므로 잘 관리됩니다. 실험적으로 사용한 규칙 엔진은 DROOLS.Net입니다. Inrule도 상용 제품을 만듭니다. http://www.inrule.com/

+0

그래서 나는 인터넷 검색을 해봤는데, 내가 배워야 할 중요한 것은 마치 상태 머신이라고 생각되는 것 같습니다. 그게 맞습니까? – Eric

+0

상태 머신은 기본 이론입니다. 그러나, 그것은 매우 광범위하고 광범위한 이론이며 많은 분야의 훈련이 있습니다. 규칙 엔진을 살펴 보는 것부터 시작하겠습니다. 그 자체로도 매우 광범위합니다. – codekaizen