C\#열 업데이트 서버 프로그램의 구체 적 인 과정 실현

5689 단어 c#업데이트서버
열 갱신 은 개발 문제 의 통 증 을 해결 하 였 습 니까?
사실 가장 먼저 논의 한 문 제 는 열 경 서버 프로그램 이 나타 날 필요 가 있 는 지,아니면 적용 장면 이 있 는 지 없 는 지 개인 적 으로 생각 합 니 다.
만약 에 응용 을 재 개 하지 않 은 상황 에서 논리 적 인 업 데 이 트 를 실현 할 수 있다 면 이것 은 일부 긴급 한 상황 에 좋 은 소식 이 아 닐 것 이다.특히 일부 작은 팀,작은 창업 회사 가 막 시 작 했 을 때 기술 테스트 절차 와 인력 이 규모 가 있 는 기업 처럼 완선 되 지 않 았 다.그러면 가 져 온 문 제 는 바로 온라인 후의 응용,게임 에 Bug 가 존재 할 수 있다 는 것 이다.심각 하지 않 으 면 다음 교체 업데이트 로 통일 적 으로 복원 할 수 있 습 니 다.그러나 심각 하면 지금 서버 를 닫 고 복원 하면 사용자 가 유실 되 는 것 을 고려 할 수 있 습 니 다.그러면 이 럴 때 계속 서버 열 업 데 이 트 를 하면 응용 장면 이 있 고 사용자 가 감지 하지 못 한 상황 에서 순찰 하고 복원 할 수 있 습 니 다.이것 도 열 경 기능 의 주요 적용 장면 으로 새로운 기능 을 추가 하거나 일부 기능 을 삭제 하 는 것 도 끊임없이 복용 하 는 방식 으로 조작 할 수 있다.
그러면 이 수 요 를 말 한 후에 이 기능 을 어떻게 실현 할 수 있 습 니까?사실 이 기능 은 주로 C\#자체 의 반 사 를 이용 했다.새로운 Dotnet 프레임 워 크 에서.net core 3.0 이후 와.net 5.0 이후 에 마이크로소프트 는 Assembly 로드 에 대해 진일보 한 정 리 를 했다.예전 에 도 비슷 한 기능 이 있 었 지만 모두 가 알 고 있 는 원인 은 예전 의.net 버 전이 혼 란 스 러 웠 기 때문이다.지금 은 마이크로소프트 가 오픈 소스 도 통일 화 된 버 전 으로 미래 시간 에.Net 의 잠재력 은 가늠 할 수 없다.그러면 내 가 말 한 것 도 비교적 새로운 프레임 워 크 버 전 을 바탕 으로 이 루어 진 것 이다.
열 갱신 실현 원리
Assembly Load Context 라 는 클래스 가 바로 오늘 의 주인공 입 니 다.그 주요 기능 은 격 리 식 프로그램 컨 텍스트 입 니 다.무슨 뜻 입 니까?동적 으로 불 러 오 는 프로그램 집합 이 정적 으로 불 러 오 는 프로그램 집합 과 혼합 되 지 않 고 샌 드 박스 와 유사 한 공간 에서 독립 적 으로 실행 되 지만 서로 접근 할 수 있 는 권한 을 가 집 니 다.이것 은 매우 대단 합 니 다.이렇게 되면 우 리 는 자신의 프로그램 집합 을 불 러 온 다음 에 원래 의 응용 호출 을 제공 할 수 있 습 니 다.업데이트 가 필요 할 때 새로운 프로그램 집합 을 불 러 오고 오래된 프로그램 을 교체 하 며 오래된 프로그램 집합 을 방출 하면 빈 틈 없 이 새로운 논 리 를 수행 할 수 있 습 니 다.
다음은 제 가 쓴 프레임 워 크 를 빌려 이 더 운 과정 을 실현 하 겠 습 니 다.만약 에 더 운 원리 자체 에 관심 이 있 으 면 제 가 쓴 더 운 소스 코드 를 보 러 갈 수 있 습 니 다.저 는 글 의 맨 아래 에 제 오픈 소스 프로젝트 주 소 를 붙 일 것 입 니 다.소스 코드 안에 주석 이 있 기 때문에 어렵 지 않 을 것 같 습 니 다.
구체 적 실현 과정
우선,우 리 는.Net 5.0 또는.Netcore 3.1 프로젝트 를 만 들 고 Abc 라 는 이름 을 지 었 습 니 다.​



생 성 에 성공 하 였 습 니 다.게 으 른 항목 에 따라 Nuget 패 키 지 를 오른쪽 클릭 하여 탭 검색:Easy SharpFrame 을 선택 한 다음 선택 한 후 다운로드 단 추 를 누 르 면 설치 합 니 다.

설치 가 완료 되면 프레임 워 크 가 성공 적 으로 설치 되 었 다 고 할 수 있 습 니 다.그 다음 에 우 리 는 솔 루 션 오른쪽 클릭 으로 새로운 프로젝트 를 만 듭 니 다.이 프로젝트 는 열 보다 논리 적 으로 실현 되 는 동적 라 이브 러 리 입 니 다.이름 은 Hotfix 입 니 다.만 든 후에 솔 루 션 자원 관리자 란 에서 이 프로젝트 가 성공 적 으로 추 가 된 것 을 볼 수 있 습 니 다.그 다음 에 저 희 는 이 Hotfix 프로젝트 의 의존 항목 을 오른쪽 클릭 하여 추가 항목 인용 을 찾 아 abc 체크 를 통 해 확인 합 니 다.이로써 프로젝트 의 추가 생 성 절차 가 완 료 됩 니 다.​​​​




다음은 코드 를 실제 적 으로 사용 하기 시 작 했 습 니 다.먼저 abc 메 인 프로젝트 의 Program.cs 입구 에서 호출 프레임 워 크 의 열 관리 사례 입 니 다.Hotfix 프로젝트 의 기본 설정 을 변경 하지 않 았 기 때문에 생 성 된 Dll 파일 이름 은 Hotfix 입 니 다.그리고 Hotfix 프로젝트 에 Main.cs 의 입구 파일 을 추가 합 니 다.여 기 는 열 관리 자 를 통 해 초기 화 되 었 습 니 다.그 다음 에 다시 불 러 올 때마다 이 절 차 를 다시 시작 하면 됩 니 다.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");

        //           
        while (true)
        {
            //         Hotfix
            HotfixMgr.Instance.Load("Hotfix", "Hotfix.Main");
            //     ,    
            Console.ReadLine();
        }
    }
}
다음은 Hotfix 프로젝트 에 Main.cs 에 테스트 내용 을 추가 하 겠 습 니 다.

public class Main
{
    public void Hello()
    {
        Console.WriteLine("Hello World");
    }
}
그리고 방금 주 공정 코드 에 뭐 좀 넣 었 어 요.

//         Hotfix
HotfixMgr.Instance.Load("Hotfix", "Hotfix.Main");
//       Agent         
HotfixMgr.Instance.Agent.Hello();
//     ,    
Console.ReadLine();
이렇게 간단 한 열 경 사례 가 완성 되 었 고 그 다음 에 해결 방안 이 생 성 되 었 다.그리고 Hotfix 프로젝트 생 성 경 로 를 찾 아 Hotfix.dll 과 Hotfix.pdb 두 파일 을 Abc 생 성 경로 에 복사 하여 붙 여 넣 습 니 다.Abc.exe 를 더 블 클릭 하여 사례 를 시작 하여 결 과 를 봅 니 다.주:pdb 는 실행 중 오류 가 발생 했 을 때 오 류 를 정확하게 알려 주 는 설명 파일 입 니 다.실제 실행 은 dll 만 필요 합 니 다.문제 의 출처 를 볼 필요 가 없 으 면 dll 만 복사 하면 됩 니 다.​

이 때 콘 솔 을 닫 지 말고 VS 로 돌아 가 Main.cs 의 내용 을 수정 하고 이번 에는 Hotfix 프로젝트 만 생 성하 여 생 성 된 dll 과 pdb 를 abc 에 복사 합 니 다.

public class Main
{
    public void Hello()
    {
        //    
        // Console.WriteLine("Hello World");
        //    
        Console.WriteLine("Hello New World");
    }
}
교체 가 끝 난 후 콘 솔 에서 차 를 돌려 보 니 새로운 논리 가 프로그램 에 업데이트 되 었 습 니 다.

이상 은 간단 한 열 경 절차 전시 이 고 구조 가 제공 하 는 열 경 기능 은 더 많은 기능 이 있 습 니 다.여 기 는 열 경 원리 와 실현 을 간단하게 소개 할 뿐 입 니 다.프레임 에 관심 이 있 는 친 구 는 github 에 가서 알 수 있 습 니 다.
프로젝트 주소:github.com/suxf/EasySh..
총결산
C\#핫 업데이트 서버 프로그램 구현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C\#핫 업데이트 서버 프로그램 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기