2009-05-16 5 views
0

나는 약간의 문제 앞에 서 있습니다. 모듈러 소프트웨어를 만들고 싶습니다.프로그래밍 모듈 형 소프트웨어

제 경우에는 좀 더 일반화하고 구체적으로 만들어 보겠습니다. 내가 만들고 싶은 것은 dll을로드하는 소프트웨어이고 그 dll은 소프트웨어에 기능을 추가합니다.

dll을 xvid, divx 또는 기타 코덱으로 생각하여 좋아하는 비디오 플레이어에 기능을 추가하십시오. 나는 좀 더 맞춤 모듈 식 프로그램을 원한다. 내 경우에는 고객, 송장 및 제품을 처리하는 소프트웨어를 만들고 다른 사용자는 서로 다른 요구를 가질 수 있으므로 어떻게 든이 문제를 해결해야한다!

그러나 소프트웨어를 다시 컴파일하고 각기 다른 사용자에게 새 파일을 전송하는 것은 "어리석은 짓"입니다. 모듈러 소프트웨어를 만드는 것이 좋습니다. 실제로 올바른 용어인지 여부는 알 수 없습니다.

그래서 내가 생각한 것은 내 DLL이 따라야하는 패턴을 만들기 시작한다는 것입니다.

그럼 실제 DLL을로드하고 그 안에 메서드를 호출하는 모듈 핸들러를 만듭니다 (여기에 패턴이 들어 있습니다!).

내가 알고 싶은 것은; 나는 올바른 길을 가고 있는가?

혹시이 문제에 대한 조언이나 예를 들려 주시겠습니까?

이 모든 것은 C#이지만 Java, Python 또는 C++에서도 어떻게 다를지 흥미로운 내용입니다.

답변

2

당신은 목적이 있어야합니다. 어떤 종류의 인터페이스 나 앱에서 처리 할 수있는 모듈 (예 : 리플렉션을 통해 찾은 알려진 속성을 가진 메소드)을 준수하도록 모듈을 필요로합니다. 인터페이스는 인보이스 생성, 송장 인쇄 등의 알려진 기능을 수행합니다.

또는 응용 프로그램이 특정 인터페이스를 준수해야하며 모듈을 응용 프로그램에 삽입하는 데 hooks을 사용합니다.

플러그인은 쉽게 분리 할 수있는 (미디어 코덱) 것이 좋습니다. 후크는 잘 정의 된 이벤트 모델 (웹 서버와 같은)을 가진 무언가에 유용 할 것입니다. 사용하는 방법은 고객, 송장 등의 모듈성을 어떻게 작동시키는 지에 달려 있습니다.

+0

C++, java, C# 및 python 사이의 코드 예제 및 비교가있는 경우 이것이 최고의 답이 될 것입니다. –

3

여러분의 모든 Modual 사이에 공통적 인 모든 것을 포함해야하는 클래스 용 IMyInterface를 생성하십시오. 당신은 Managed Extensibility Framework을 들여다보아야합니다. Codeplex에서 얻을 수 있다고 생각합니다.

+0

+1. 나는 유니에서 학생의 프로젝트를 위해 이미 그것을 사용했고 그것은 전체 모듈/플러그인을 정말 쉽습니다. – Joey

+0

사전 제작 된 것을 사용하고 싶지 않습니다. 작고 쉬운 시스템을 만들고 싶습니다. 그러나 그들의 아키텍처는 흥미로울 것입니다. 이 문제가 C++, python, java 또는 기타 다른 점을 확인하는 것은 여전히 ​​깔끔할 것입니다. –

관련 문제