2008-10-16 8 views
0

공통 라이브러리가 호출 앱인 어떤 컨텍스트를 알 수있는 가장 좋은 방법은 무엇입니까? 필자는 매우 통제 된 엔터프라이즈 환경에있다. 설정 파일에서 설정을 읽는 것보다 라이브러리에서 호출되는 응용 프로그램을 알 수있는 더 좋은 방법이 있는가? 이런 종류의 것을 위해 무엇을 사용합니까?앱 이름/ID를 가져 오는 가장 좋은 방법

//the rest of the story
포춘지 선정 500 대 제조 회사의 인트라넷 팀에서 일하고 있습니다. 모든 새로운 .NET 응용 프로그램이 사용할 공용 라이브러리를 만들었습니다. 공통 데이터베이스에서 응용 프로그램에 대한 정보와 해당 질문과 관련이없는 다른 많은 정보를 쿼리합니다. 상상할 수 있듯이 공용 라이브러리는 어떤 응용 프로그램이이를 호출하는지 알 필요가 있습니다. 모든 응용 프로그램이 일부 정적 클래스 나 다른 무언가에 속성을 설정하도록 할 수는 있지만 대신 무언가를 조금 뒤에서 만들고 싶었습니다. 현재 개발자는 app.config 또는 web.config에 ApplicationName 키와 응용 프로그램 이름 (이는 고유 한 변경하지 않는 ID)을 사용하여 설정해야합니다. 그런 다음 현재 사용하고 있습니다. 을 사용하여 이것을 가져옵니다.

답변

3

방법이있을 수 있습니다. 나는 당신의 실제 질문에 전혀 답할 계획이 없기 때문에이 투표를 할 가능성이 가장 높지만, 아무 말도하지 않고 계속 나아갈 수는 없습니다. 나에게 이것은 가능한 최악의 결합의 예이다. 실제로 DB를보고 호출하는 응용 프로그램에 따라 다르게 작동해야합니까?

+0

예. 우리는 연결 정보, 의존성, 보안 및 기타 다른 것들을위한 중앙 저장소를 구현했습니다. 응용 프로그램이 연결을 요청할 때 어떤 응용 프로그램이 연결을 요청하는지 알아야합니다. 예, 응용 프로그램을 전달할 수 있지만 낭비처럼 보입니다. –

0

getenv()는 환경 변수를 얻습니다. 그러면 차례대로 원하는 것을 제공해야합니다. 그러나 일반적으로 호출 프로그램의 이름에 따라 다른 동작을하는 것은 이 아니며은 모범 사례로 간주됩니다. 로그 메시지에 호출 프로그램의 이름을 인쇄하려면 예외입니다. 물론 다른 예외가 있으며 귀하의 상황이 그 중 하나 일 수 있습니다.

프로세스 ID (w/getpid())를 통해 정보를 얻을 수도 있습니다.

0

여기 EBGreen에 동의합니다. 이것은 내게 붉은 깃발 질문입니다.

그렇다면 필자는 제안한 것과 정반대로 제안하고 단순히 응용 프로그램 이름 또는 기타 키를 응용 프로그램의 매개 변수로 전달하면됩니다. 당신은 진입 점이 무엇이든 공공 정적 속성으로 프로그램에 그것을 구울 수 있으며 기본적으로 저장소에 대한 호출을 과부하시키는 약간의 도우미 기능을 만듭니다. 그걸 숨기고 오류가 발생하기 쉬운 반복을 줄일 수 있습니다.

더 나아가 진입 점 클래스가 응용 프로그램 이름을 가져 오는 메소드 (단지 문자열 상수를 반환)와 설정 메소드 값은 데이터베이스에서 반환 .. "IIntranetApp"또는 뭔가를 호출하십시오. 그런 다음 "IIntranetApp"를 예상하는 함수에 "this"를 전달하면 중앙 저장소에서 필요한 공백이 마술처럼 채워집니다. 같은

뭔가 :

public interface IIntranetApp 
{ 
    string GetApplicationName(); 
    void SetConnectionString(string connectionString); 
    // etc... add methods as necessary 
} 
1

또한 단지 공용 라이브러리 클래스 내에서 Assembly.GetEntryAssembly를 호출 할 수 있습니다.

그런 다음 반환 된 어셈블리의 .Name 속성을 사용하십시오.

즉, appsettings 테이블 (또는 그 무엇이든)은 어셈블리 이름으로 키를 입력해야하며 어셈블리 이름을 변경해야한다면 모두 중단된다는 것을 의미합니다. 이는 네이밍/키 선택에 약간의 유연성이 있음을 의미합니다.

+0

asp.net 웹 앱에서도 작동해야합니다. 내가 추측 한 URL의 일부를 읽음으로써 수행 될 수 있지만, 여전히 옳지는 않습니다. –

관련 문제