2017-09-27 13 views
1

나는 Asp.net FW 4.6을 사용하고 있습니다.동일한 AppPool 내의 응용 프로그램간에 공유 변수가 있습니까?

변경하려는 개체 인 미리 정의 된 값을 (constatntly) 읽어야하는 동일한 응용 프로그램 풀 아래에 두 개의 응용 프로그램이 있습니다.

정적 변수를 사용할 수 없습니다 (동일한 앱 풀 에서조차도) 다른 앱은 공유 할 수 없습니다. 공유되지 않습니다.

DB/파일/서버는 알려진 옵션입니다.

그러나 :

질문 :

같은 응용 프로그램 풀 아래에 여러 응용 프로그램을 통해 액세스 할 수 있습니다 내가 그 MEM 값에 저장할 수있는 쓸 수있는 코드가 있습니까? 같은

뭔가 : 같은 Memory Mapped FilesNamed Pipes 등의 프로세스 간 통신의

MyAppPool 

    App1 -> func("royi") = 1 
    App2 -> var a= func2("royi"); //1 

답변

0

모든 방법은 또한 하나의 AppPool을 내 응용 프로그램에서 데이터를 공유하기 위해 사용될 수있다, 예를 Sharing memory between two applications를 참조하십시오.

같은 AppPool을 모든 응용 프로그램이 동일한 프로세스에 상주 그냥 AppDomain을 경계로 분리되어 있기 때문에, 당신은 몇 가지 추가 옵션이 있습니다

  • 사용 MarshalByRefObject 응용 프로그램 도메인 경계를 넘어 개체 인스턴스에 액세스 할 수 있습니다. Stephen ClearyCrossDomainSingleton 또는 this one 예를 들어, 크로스 응용 프로그램 도메인 싱글 톤을 구현하는 MarshalByRefObject를 사용 이미 래퍼가 있습니다.
  • Marshal.AllocHGlobal에 의해 할당 된 메모리에 직접 액세스하려면 포인터와 unsafe 코드를 사용하십시오. 특히 속도가 문제가되는 경우에는 특히 그렇습니다. 하지만 앞에서 설명한 방법 중 하나를 사용하여 응용 프로그램간에 할당 된 메모리의 메모리 주소를 공유해야합니다.