푸터 콘텐츠로 바로가기
.NET 도움말

C# WebRTC (개발자를 위한 작동 방식)

WebRTC(Web Real-Time Communication의 약자)는 데이터 전송을 위한 중간 서버가 없이 웹 브라우저와 다른 플랫폼 간의 직접, 실시간 통신을 가능하게 하는 기술입니다. 이는 피어 간의 비디오, 오디오 및 일반 데이터를 공유할 수 있도록 지원하여 실시간 통신 애플리케이션을 개발하는 데 강력한 도구가 됩니다.

이 튜토리얼은 C#을 사용하여 WebRTC 솔루션을 만드는 방법을 소개하고, .NET Core 프레임워크에 중점을 두어 시그널링 서버 설정, TURN 서버 이해 및 WebRTC를 IronPDF C# 애플리케이션에 통합하는 방법에 대한 통찰을 제공합니다.

환경 설정하기

C#에서 WebRTC 애플리케이션 개발을 시작하려면 개발 환경을 설정해야 합니다. 이는 웹사이트, 서비스, 콘솔 앱 구축 for .NET의 크로스 플랫폼 버전인 .NET Core를 설치하는 것을 포함합니다. Microsoft 공식 웹사이트에서 .NET Core를 다운로드하고 설치할 수 있습니다. 설치 후, C# 개발을 위한 인기 있는 통합 개발 환경인 Visual Studio 또는 선택한 다른 에디터를 사용하여 코드를 작성할 수 있습니다.

새 콘솔 애플리케이션 생성

새 콘솔 애플리케이션 프로젝트 설정부터 시작합니다. 터미널 또는 명령줄 인터페이스를 열고 프로젝트를 설정할 디렉토리로 이동합니다. 다음 명령을 실행하세요:

dotnet new console -n WebRTCSample
dotnet new console -n WebRTCSample
SHELL

이 명령은 WebRTCSample이라는 새 디렉토리를 만들고 간단한 "Hello World" 콘솔 애플리케이션을 만듭니다. 프로젝트 디렉토리로 이동하면 WebRTC 앱 코딩을 시작할 준비가 된 것입니다.

WebRTC와 시그널링 이해

WebRTC는 실시간 통신을 가능하게 하지만, 통신을 조정하고 제어 메시지를 전송하는 메커니즘, 즉 시그널링이 필요합니다. 시그널링은 세션 기술 및 연결 설정을 위한 후보 정보와 같은 통신 세션에 대한 메타데이터를 교환하는 데 사용됩니다. C# 애플리케이션은 WebSockets 또는 REST API와 같은 메시지 전송 메커니즘을 통해 시그널링을 구현할 수 있습니다.

.NET Core에서 시그널링 서버 구현하기

시그널링 서버는 직접적인 피어 투 피어 연결이 설정되기 전에 피어 간에 메시지를 교환하는 중개 역할을 합니다. .NET Core를 사용하여 WebSocket 연결을 처리하는 간단한 웹 애플리케이션을 만들어 시그널링 서버를 구현할 수 있습니다.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
    // Configures services for the web application.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options => options.AddDefaultPolicy(
            builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
        services.AddSignalR();
    }

    // Configures the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseCors();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<SignalingHub>("/signal");
        });
    }
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
    // Configures services for the web application.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options => options.AddDefaultPolicy(
            builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
        services.AddSignalR();
    }

    // Configures the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseCors();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<SignalingHub>("/signal");
        });
    }
}
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting

Public Class Startup
	' Configures services for the web application.
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		services.AddCors(Function(options) options.AddDefaultPolicy(Function(builder) builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()))
		services.AddSignalR()
	End Sub

	' Configures the HTTP request pipeline.
	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
		If env.IsDevelopment() Then
			app.UseDeveloperExceptionPage()
		End If
		app.UseCors()
		app.UseRouting()
		app.UseEndpoints(Sub(endpoints)
			endpoints.MapHub(Of SignalingHub)("/signal")
		End Sub)
	End Sub
End Class
$vbLabelText   $csharpLabel

이 코드 스니펫은 SignalR, 애플리케이션에 실시간 웹 기능을 추가하기 위한 라이브러리가 있는 기본 .NET Core 애플리케이션을 설정합니다. SignalR은 애플리케이션에 실시간 웹 기능을 추가하는 프로세스를 간소화하여 우리의 시그널링 서버에 좋은 선택이 됩니다.

WebRTC로 피어 연결

신호 서버 설정 후 다음 단계는 WebRTC를 사용하여 클라이언트 간 피어 투 피어 연결을 확립하는 것입니다. 이는 각 클라이언트에서 RTCPeerConnection 객체를 생성하고, 오퍼 및 응답 메시지를 교환하며, 연결 세부 사항을 협상하는 것을 포함합니다.

피어 연결 생성

C# 애플리케이션에서는 주로 신호 부분을 관리하고 브라우저 또는 React Native와 같은 모바일 앱을 통해 WebRTC API와 상호 작용할 수 있습니다. 아래는 웹 클라이언트에서 피어 연결을 시작하는 방법에 대한 예입니다:

// Create a new RTCPeerConnection instance
const peerConnection = new RTCPeerConnection();

// Listen for ICE candidates and send them to the signaling server
peerConnection.onicecandidate = event => {
  if (event.candidate) {
    sendMessage('new-ice-candidate', event.candidate);
  }
};

// Handle incoming media streams
peerConnection.ontrack = event => {
  // Display the video or audio stream
};
// Create a new RTCPeerConnection instance
const peerConnection = new RTCPeerConnection();

// Listen for ICE candidates and send them to the signaling server
peerConnection.onicecandidate = event => {
  if (event.candidate) {
    sendMessage('new-ice-candidate', event.candidate);
  }
};

// Handle incoming media streams
peerConnection.ontrack = event => {
  // Display the video or audio stream
};
JAVASCRIPT

이 JavaScript 코드 스니펫은 새로운 피어 연결을 생성하고, ICE 후보를 처리하며, 들어오는 미디어 스트림을 표시하기 위한 콜백을 설정하는 예를 보여줍니다.

오퍼 및 응답 교환

연결을 확립하기 위해 하나의 피어가 오퍼를 생성하고, 다른 피어가 응답합니다. 이들은 이전에 구현된 신호 서버를 통해 교환됩니다.

// Create an offer for the peer connection
async function createOffer() {
  const offer = await peerConnection.createOffer();
  await peerConnection.setLocalDescription(offer);
  sendMessage('offer', offer);
}

// Create an answer after receiving an offer
async function createAnswer(offer) {
  await peerConnection.setRemoteDescription(new RTCSessionDescription(offer));
  const answer = await peerConnection.createAnswer();
  await peerConnection.setLocalDescription(answer);
  sendMessage('answer', answer);
}
// Create an offer for the peer connection
async function createOffer() {
  const offer = await peerConnection.createOffer();
  await peerConnection.setLocalDescription(offer);
  sendMessage('offer', offer);
}

// Create an answer after receiving an offer
async function createAnswer(offer) {
  await peerConnection.setRemoteDescription(new RTCSessionDescription(offer));
  const answer = await peerConnection.createAnswer();
  await peerConnection.setLocalDescription(answer);
  sendMessage('answer', answer);
}
JAVASCRIPT

.NET 애플리케이션에 WebRTC 통합

기본 WebRTC 구현은 주로 브라우저 또는 기타 클라이언트 측 환경에서 처리되지만, .NET 애플리케이션은 신호 프로세스를 용이하게 하고, 세션 제어를 관리하며, NAT 트래버설을 위한 TURN 서버와 같은 기타 서비스와 상호 작용할 수 있습니다. 데스크톱 또는 서버 측 애플리케이션의 경우, Pion WebRTC와 같은 라이브러리(Go 오픈 소스 라이브러리)를 .NET과 함께 사용하여 WebRTC 트래픽을 처리할 수 있습니다.

애플리케이션 실행하기

.NET Core 애플리케이션을 실행하려면 터미널에서 프로젝트 디렉터리로 이동하여 다음을 실행하십시오:

dotnet run
dotnet run
SHELL

이 명령은 애플리케이션을 컴파일하고 실행하며, 구현한 신호 서버를 시작합니다. 웹 클라이언트가 이제 이 서버에 연결하여 신호 메시지를 교환할 수 있습니다.

IronPDF 소개

C# WebRTC (개발자를 위한 작동 방식): 그림 1 - IronPDF 웹페이지

IronPDF는 PDF 생성 및 조작 기능을 .NET 애플리케이션에 제공하는 다재다능한 라이브러리로, 개발자가 PDF 문서를 프로그래밍적으로 생성, 읽고, 편집할 수 있게 합니다. IronPDF는 HTML에서 PDF 생성, 양식 작성, 텍스트 추출, 문서 보안을 포함한 다양한 작업을 지원합니다. 이는 사용자 데이터 또는 애플리케이션 출력 기반의 보고서, 청구서, 동적 문서 생성을 위한 매우 유용한 도구입니다.

IronPDF의 주요 기능은 레이아웃과 스타일을 그대로 유지하는 HTML to PDF 기능입니다. 웹 콘텐츠에서 PDF를 생성하여 보고서, 송장 및 문서에 적합합니다. HTML 파일, URL 및 HTML 문자열을 쉽게 PDF로 변환할 수 있습니다.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 설치 중

프로젝트에서 IronPDF를 사용하려면 .NET 애플리케이션에 추가해야 합니다. 이는 외부 라이브러리를 프로젝트에서 관리하는 과정을 단순화하는 NuGet 패키지 관리자를 통해 수행할 수 있습니다. IronPDF 설치를 위해 NuGet 패키지 관리자 콘솔에서 다음 명령을 사용할 수 있습니다:

Install-Package IronPdf

사용 사례: WebRTC 애플리케이션에서 IronPDF를 사용하여 회의록 PDF 생성

WebRTC를 사용하여 온라인 회의 또는 가상 교실을 위한 실시간 통신 애플리케이션을 개발한다고 가정해 보십시오. 이 애플리케이션은 사용자가 실시간으로 오디오 및 비디오 통화를 하고, 화면을 공유하며, 문서에서 협력할 수 있게 합니다. 이 애플리케이션의 귀중한 기능은 논의된 주요 사항, 내린 결정, 실행 항목을 포함한 회의록 또는 세션 요약을 자동으로 생성하고 배포할 수 있는 기능일 것입니다. 이때 IronPDF가 유용합니다.

구현 단계

  1. 회의 내용 캡처: WebRTC 세션 동안 채팅 메시지, 공유 노트, 강조 표시된 실행 항목 등 텍스트 기반 콘텐츠를 캡처합니다. 이 콘텐츠는 쉽게 스타일링하고 구성할 수 있도록 HTML로 포맷할 수 있습니다(예: 실행 항목에 목록 사용, 주요 주제에 제목 사용).
  2. HTML 템플릿 생성: 세션이 끝나면 캡처된 콘텐츠를 HTML 템플릿으로 포맷합니다. 이 템플릿에는 회의 제목, 날짜, 참가자 및 다양한 콘텐츠 유형(토론 포인트, 결정, 실행 항목)에 대한 구조화된 섹션이 포함됩니다.
  3. HTML을 PDF로 변환: 회의가 종료되고 HTML 템플릿이 준비되면, IronPDF를 사용하여 이 HTML 콘텐츠를 PDF 문서로 변환합니다. 이 변환은 HTML에 정의된 스타일링과 레이아웃이 PDF에서도 유지되도록 하여 문서가 읽기 쉽고 전문적인 외관을 갖추게 합니다.

여기 샘플 PDF 코드의 예가 있습니다:

using IronPdf;

public class MeetingMinutesGenerator
{
    public static void GenerateMeetingMinutesPdf(string htmlContent, string outputPath)
    {
        // Initialize the HTML to PDF converter
        var renderer = new HtmlToPdf();
        renderer.PrintOptions.MarginTop = 40;
        renderer.PrintOptions.MarginBottom = 40;
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 12
        };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 12
        };
        // Convert the HTML content to a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs(outputPath);
        Console.WriteLine("Meeting minutes PDF generated.");
    }
}
using IronPdf;

public class MeetingMinutesGenerator
{
    public static void GenerateMeetingMinutesPdf(string htmlContent, string outputPath)
    {
        // Initialize the HTML to PDF converter
        var renderer = new HtmlToPdf();
        renderer.PrintOptions.MarginTop = 40;
        renderer.PrintOptions.MarginBottom = 40;
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 12
        };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 12
        };
        // Convert the HTML content to a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs(outputPath);
        Console.WriteLine("Meeting minutes PDF generated.");
    }
}
Imports IronPdf

Public Class MeetingMinutesGenerator
	Public Shared Sub GenerateMeetingMinutesPdf(ByVal htmlContent As String, ByVal outputPath As String)
		' Initialize the HTML to PDF converter
		Dim renderer = New HtmlToPdf()
		renderer.PrintOptions.MarginTop = 40
		renderer.PrintOptions.MarginBottom = 40
		renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
			.CenterText = "{pdf-title}",
			.DrawDividerLine = True,
			.FontSize = 12
		}
		renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
			.LeftText = "{date} {time}",
			.RightText = "Page {page} of {total-pages}",
			.DrawDividerLine = True,
			.FontSize = 12
		}
		' Convert the HTML content to a PDF document
		Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF document
		pdfDocument.SaveAs(outputPath)
		Console.WriteLine("Meeting minutes PDF generated.")
	End Sub
End Class
$vbLabelText   $csharpLabel

결론

C# WebRTC (개발자를 위한 작동 방식): 그림 2 - IronPDF 라이선스 페이지

이 기사에서는 C#과 .NET Core를 사용하여 기본 WebRTC 애플리케이션을 생성하는 방법을 살펴보았습니다. 개발 환경 설정, 새로운 콘솔 애플리케이션 생성, 신호 서버 구현, 실시간 통신을 위한 피어 연결 시작을 다루었습니다. WebRTC는 실시간 통신 애플리케이션을 위한 수많은 가능성을 열어주며, C# 및 .NET Core를 사용하여 다양한 플랫폼과 장치에서 작동하는 견고하고 확장 가능한 솔루션을 구축할 수 있습니다. IronPDF 라이선스 페이지에서 라이선스 및 구매 정보에 대한 정보를 찾을 수 있습니다. 구매를 결정하면 라이선스는 $799부터 시작됩니다.

자주 묻는 질문

.NET Core 및 C#과 함께 WebRTC를 사용하는 이점은 무엇인가요?

C# 및 .NET Core와 함께 사용된 WebRTC는 개발자가 WebRTC와 C# 프로그래밍 환경의 강력한 기능을 활용하여 실시간 통신 애플리케이션을 생성할 수 있게 합니다. 이 조합은 직접적인 피어-투-피어 데이터 전송을 지원하며, IronPDF와 같은 .NET 라이브러리와 통합되어 추가 기능을 제공합니다.

C#에서 WebRTC 개발 환경을 어떻게 설정할 수 있나요?

C#에서 WebRTC 개발 환경을 설정하려면 Microsoft 공식 웹사이트에서 .NET Core SDK를 설치해야 합니다. Visual Studio와 같은 IDE를 사용하여 코드를 효율적으로 관리하고 작성하십시오. 이 설정을 통해 콘솔 애플리케이션을 생성하고 WebRTC 기능을 통합할 수 있습니다.

WebRTC 애플리케이션에서 신호 서버는 어떤 역할을 하나요?

신호 서버는 피어 간의 제어 메시지와 메타데이터 교환을 촉진하여 연결을 설정하는 WebRTC 애플리케이션에서 중요한 역할을 합니다. 이는 직접적인 피어-투-피어 연결을 설정하기 전에 세션 설명과 후보 정보를 협상하는 데 도움을 줍니다.

.NET Core를 사용하여 신호 서버를 어떻게 생성할 수 있나요?

.NET Core를 사용하여 WebSocket 연결을 관리하는 간단한 웹 애플리케이션을 개발하여 신호 서버를 생성할 수 있습니다. 실시간 웹 기능을 추가하는 라이브러리인 SignalR을 활용하면 신호 서버 구현 과정을 간소화할 수 있습니다.

IronPDF를 사용하여 WebRTC 애플리케이션에서 PDF를 어떻게 생성할 수 있나요?

IronPDF는 WebRTC 애플리케이션에 통합되어 HTML 콘텐츠에서 PDF를 생성할 수 있습니다. 이는 특히 회의록이나 세션 요약 등 문서를 생성하는 데 유용하며, 실시간 통신 애플리케이션의 기능을 향상시킵니다.

WebRTC에서 피어-투-피어 연결을 설정하는 데 어떤 단계가 포함되어 있나요?

WebRTC에서 피어-투-피어 연결을 설정하는 것은 RTCPeerConnection 객체 생성, 오퍼 및 응답 메시지 교환, ICE 후보를 사용한 연결 세부 정보 협상 과정을 포함합니다. 이 과정은 피어 간의 직접적인 통신을 가능하게 하는데 필수적입니다.

TURN 서버는 WebRTC 연결을 어떻게 지원하나요?

TURN 서버는 제한적 네트워크 환경에서 직접 연결이 불가능할 때 미디어를 피어 간에 중계하여 WebRTC 연결을 지원합니다. 이는 NAT 트래버설이 필요한 경우에도 연결성을 보장합니다.

.NET 애플리케이션에서 HTML을 PDF로 변환할 수 있나요?

네, IronPDF와 같은 라이브러리를 사용하여 .NET 애플리케이션에서 HTML을 PDF로 변환할 수 있습니다. RenderHtmlAsPdf와 같은 방법을 사용하여 HTML 콘텐츠를 원래 스타일 및 레이아웃을 유지하면서 PDF 문서로 변환할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해