고급 통합 항목Advanced Integration Topics

통합 어셈블리 참조 해야 합니다 Xamarin.Workbooks.Integrations NuGet합니다.Integration assemblies should reference the Xamarin.Workbooks.Integrations NuGet. 체크 아웃 우리의 빠른 시작 설명서 NuGet 패키지를 사용 하 여 시작 하는 방법에 대 한 자세한 내용은 합니다.Check out our quick-start documentation for more information about getting started with the NuGet package.

클라이언트 통합도 지원 됩니다 및 에이전트 통합 어셈블리와 동일한 이름의 JavaScript 또는 CSS 파일이 동일한 디렉터리에 배치 하 여 시작 됩니다.Client integrations are also supported, and are initiated by placing JavaScript or CSS files with the same name as the agent integration assembly in the same directory. 예를 들어 (NuGet 참조)이 표시 하는 에이전트 통합 어셈블리 이름은 SampleExternalIntegration.dll, 한 다음 SampleExternalIntegration.jsSampleExternalIntegration.css 있을 경우 클라이언트 에서도에 통합 될 예정입니다.For example, if the agent integration assembly (which references the NuGet) is named SampleExternalIntegration.dll, then SampleExternalIntegration.js and SampleExternalIntegration.css will be integrated into the client as well if they exist. 클라이언트 통합은 선택적입니다.Client integrations are optional.

자체 외부 통합 NuGet으로 패키지, 제공 되 고 수와 함께 배치 하거나 에이전트를 호스트 하는 응용 프로그램 내에서 직접 참조는 .workbook 사용 하고자 하는 파일입니다.The external integration itself can be packaged as a NuGet, provided and referenced directly inside the application that is hosting the agent, or simply placed alongside a .workbook file that wishes to consume it.

NuGet 패키지에서 외부 통합 (에이전트 및 클라이언트) 패키지를 참조할 때 빠른 시작 설명서에 따라 통합 어셈블리 통합 문서와 함께 제공 되므로으로 참조 해야 하는 동안 자동으로 로드 됩니다.External integrations (agent and client) in NuGet packages will be automatically loaded when the package is referenced, as per the quick-start documentation, while integration assemblies shipped alongside the workbook will need to reference it as so:

#r "SampleExternalIntegration.dll"

통합을 이러한 방식으로 참조할 때이 로드 되지 것입니다 클라이언트에서 바로—로드 하 게 통합에서 일부 코드를 호출 해야 합니다.When referencing an integration this way, it will not be loaded by the client right away—you'll need to call some code from the integration to have it load. 에서는 됩니다 수 주소 지정이 버그 나중에 있습니다.We'll be addressing this bug in the future.

Xamarin.Interactive PCL 몇 가지 중요 한 통합 Api를 제공 합니다.The Xamarin.Interactive PCL provides a few important integration APIs. 모든 통합 통합 진입점을 제공 이상 해야 합니다.Every integration must at least provide an integration entry point:

using Xamarin.Interactive;

[assembly: AgentIntegration (typeof (AgentIntegration))]

class AgentIntegration : IAgentIntegration
{
    const string TAG = nameof (AgentIntegration);

    public void IntegrateWith (IAgent agent)
    {
        // hook into IAgent APIs
    }
}

이 시점에서 통합 어셈블리 참조 되 면 클라이언트 JavaScript 및 CSS 통합 파일을 암시적으로 로드 됩니다.At this point, once the integration assembly is referenced, the client will implicitly load JavaScript and CSS integration files.

APIAPIs

라이브 또는 통합 문서에서 참조 하는 모든 어셈블리를 사용 하 여 세션을 검사 하는 대로 해당 공용 Api의 모든 세션에 액세스할 수 있습니다.As with any assembly that is referenced by a workbook or live inspect session, any of its public APIs are accessible to the session. 따라서 것이 안전 하 고 적절 한 API 화면을 탐색 하는 사용자에 대 한 것이 중요 합니다.Therefore it is important to have a safe and sensible API surface for users to explore.

통합 어셈블리는 효과적으로 응용 프로그램 또는 관심 SDK와 세션 간의 연결.The integration assembly is effectively a bridge between an application or SDK of interest and the session. 것이 좋습니다는 통합 문서 또는 라이브 맥락에서 세션을 살펴보고 없는 공용 Api를 제공 하거나 단순히 개체를 생성 하는 등의 "내부적인" 작업을 수행 하는 새 Api를 제공할 수 있습니다 표현을합니다.It can provide new APIs that make sense specifically in the context of a workbook or live inspect session, or provide no public APIs and simply perform "behind the scenes" tasks like yielding object representations.

참고

일반적인 public 이어야 하지만 IntelliSense를 통해 표시 되는 Api를 표시할 수 있습니다 [EditorBrowsable (EditorBrowsableState.Never)] 특성입니다.APIs which must be public but should not be surfaced via IntelliSense can be marked with the usual [EditorBrowsable (EditorBrowsableState.Never)] attribute.