2008-11-05 2 views
1

다른 개발자와 건축가가 특정 사이트에 대한 응용 프로그램의 특정 영역을 사용자 정의하는 다양한 방법에 대해 읽는 데 관심이 있습니다. 고객이 구현 한 사전 및 사후 처리, 이벤트를 동일하게 처리하고, 비즈니스 로직 방법을 재정의하고, 플러그 가능한 모듈, 데이터 구성 가능 프로세스 등을 사용하여 호출합니다. 규칙 엔진, 스크립팅 등이 포함됩니다.응용 프로그램을 사용자 정의 할 수있는 모범 사례?

목록은 계속 될 수 있지만, 나는 누가 이러한 접근법의 장점과 단점이 무엇인지, 또 다른 접근법이 무엇인지, 무엇을 사용했는지 묻습니다.

여기서는 이러한 사용자 지정을 위해 고객 지정 코드 분기를 만들지 않는다고 가정합니다.

답변

2

MS는 .NET에서이 두 가지 프레임 워크, 즉 Managed Extensibility Framework와 System.Addin에서 작업하고 있습니다.

아마도 응용 프로그램이 확장 성을 노출하는 가장 일반적인 방법은 종속성 주입/제어 반전을 런타임 유형의 해상도와 함께 사용하는 것입니다. 즉, 외부 엔터티가 컴파일 타임에 특정 구현에 바인딩하는 대신 런타임에 인터페이스의 구현을 "삽입"하도록 허용했습니다. 귀사의 IRepository가 귀사 또는 제 3 자에 의해 작성되었는지 여부는 귀하의 코드에서 다루지 않습니다. 인터페이스를 코딩하고 DI/IOC 프레임 워크를 사용하여 (this link provides a great overview of .NET frameworks)을 사용하면 응용 프로그램을 쉽게 사용자 정의 할 수 있습니다.

+0

DI/IOC이 아마도 갈 방법입니다. 컨트롤은 표준 모듈에 제공되거나 사용자 정의 컨트롤을 사용하여 대체 할 수 있습니다 (심지어 핫 스왑 가능). IOC 인터페이스에서 IOC 인터페이스를 노출하여 클라이언트가 상위 수준 서비스를 구현할 때 하위 수준 서비스를 선택할 수있게합니까? – ProfK

1

나는 모든 것을 모듈화 한 다음 고객이 요청할 때 프로그램에 추가하는 경향이 있습니다. 이를 고객이 제어 할 수있는 응용 프로그램 설정과 결합하여 모듈을 직접 추가하거나 제거 할 수 있습니다. 이 경우 기본 구성을 설정하면됩니다.

+0

요점은 모듈을 추가하고 제거하는 것이 이러한 프로세스를 매우 정교하게 분해하는 것을 의미하는 핵심 프로세스에 대한 사용자 정의 변경을 허용하는 것이었지만 좋은 접근 방법이었습니다. – ProfK

+0

모든 것을 모듈화하여 유지하는 데에는 추가 이점이 있습니다. 버그 수정을 보내면 전체 프로그램이 아닌 새 모듈을 보내고 고객이 새 모듈을 위해 이전 모듈을 교체 할 수 있습니다. – Elie

+0

좋은 지적이지만 모듈마다 방법없이 아키텍처를 구성하는 방법은 무엇입니까? 나는 여전히 사람들이, 대부분 당신은 아니지만, 커스텀 프로세싱이 추가 작업이 아니라 대체 작업이라는 점을 간과하고 있다고 생각합니다. – ProfK

0

제가 작업하는 제품의 경우 특정 고객 또는 고객 자신이 서비스 그룹에서 만든 맞춤 설정은 나머지 팀원들과 공유됩니다. 최신 버전에서는 "제품화"됩니다.

Google은 GUI가 수행 할 수있는 거의 모든 작업을 수행하는 데 사용할 수있는 [거의] 전체 액세스 API를 지원하지만 자동화 된 방식으로 지원합니다.

고객이 맞춤 스크립트를 작성한 다음 다시 공유하도록 권장합니다. 제품 지원이 공식적으로 지원 되든, 커뮤니티 도구로 남아 있어도 확장을 통해 제품을 사용할 수있는 용도를 늘리면 고객 기반에서 영업권을 창출하는 데 도움이됩니다.

사용자 정의를 위해 특정 고객에게 청구되는 초기 작업을 다른 곳에서 빠르게 구현할 수 있으므로 현재 및 미래의 사용자가 제품을 사용할 때 융통성을 발휘할 수 있습니다.

1

한 가지 방법은 스크립팅 언어 (파이썬과 자바 스크립트가 인기있는 것 같습니다)를 포함시키고 스크립팅 확장을 통해 상당 부분의 API를 노출하는 것입니다. 스크립팅 언어로 응용 프로그램의 일부를 구현하는 것이 더 쉬울 수도 있습니다.

0

훌륭한 임베디드 스크립팅 언어 (Lua가 정확하게 생성되었습니다!)에서 액세스 할 수있는 모듈 라이브러리로 앱을 만드는 것이 사용자에게만 유연성을 제공한다는 것을 알게되었습니다. 그러나 너 자신을 위해 너무.

관련 문제