기술 자료

지원

Cloud Code

Cloud Code

종속성 삽입

Decouple hard-coded dependencies in your code using dependency injection for easier unit testing.
읽는 시간 1분최근 업데이트: 한 달 전

Cloud Code는 DI(종속성 삽입)를 지원하며, 이 기능을 사용하면 코드에서 하드 코딩된 종속성을 분리하여 유닛 테스트를 더 쉽게 수행할 수 있습니다. DI는 .Net으로 구축한 유사 시스템을 기반으로 합니다. Cloud Code는 다음과 같은 종속성 유형을 지원합니다.
  • 싱글톤: 싱글톤 종속성은 한 번 생성된 후 필요한 곳에 삽입됩니다.
  • 범위 지정: 범위 지정 종속성은 요청당 한 번씩 생성됩니다. 생성자에서 사용하든 메서드 자체에서 사용하든 둘 다 동일한 오브젝트에 연결되므로 사용 위치는 상관없습니다.
  • 임시: 임시 종속성은 요청을 받을 때마다 생성됩니다. 생성자에서 임시 종속성을 요청한 후 메서드에서 다시 요청하는 경우, 이 두 요청은 두 개의 개별 인스턴스가 됩니다.

종속성 삽입 설정

종속성을 설정하려면
ICloudCodeSetup
인터페이스를 구현하는 클래스를 생성해야 합니다.
다음 예시에서는 싱글톤 인터페이스와 그 구현을 정의하지만
AddScoped
또는
AddTransient
를 사용하여 범위 지정 종속성 또는 임시 종속성을 사용할 수도 있습니다.
C#
using Unity.Services.CloudCode.Core;namespace ExampleModule;public interface IRandomNumber{ public int GetRandomNumber();}public class LockedRandomNumber : IRandomNumber{ private int randomNumber; public LockedRandomNumber() { randomNumber = Random.Shared.Next(); } public int GetRandomNumber() { return randomNumber; }}public class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton<IRandomNumber, LockedRandomNumber>(); }}
참고 사항
  • 싱글톤은 임의의 숫자를 한 번 생성한 다음 서비스가 운영되는 동안 이 숫자를 유지합니다.
  • 범위 지정의 경우 요청별로 새 인스턴스가 생성되지만 요청 위치와 관계없이 해당 요청의 숫자는 동일하게 유지됩니다.
  • 임시의 경우 요청받을 때마다 새 인스턴스를 생성하므로 매번 임의의 숫자를 반환합니다.

종속성 삽입 사용

종속성 삽입을 지원하려면 다음 예시에 나온 대로 클래스 생성자와 함께 메서드에
CloudCodeFunction
속성을 지정합니다.
C#
using Unity.Services.CloudCode.Core;namespace ExampleModule;public struct DependencyInjectionResult{ public int ConstructorNumber; public int MethodNumber;}public class TestDependencyInjection{ private int number; public TestDependencyInjection(IRandomNumber randomNumber) { number = randomNumber.GetRandomNumber(); } [CloudCodeFunction("TestInjection")] public DependencyInjectionResult TestInjection(IRandomNumber randomNumber) { return new DependencyInjectionResult { // Will always return the same number during the session ConstructorNumber = number, MethodNumber = randomNumber.GetRandomNumber(), }; }}
종속성 삽입 사용에 대한 Microsoft의 기술 자료(영문)를 참고하십시오.