Jak uruchomić IronWord z platformą .NET w środowisku Azure
IronWord to potężna biblioteka IronWord for .NET do programowego tworzenia, edytowania i odczytywania dokumentów Word. Działa płynnie w różnych usługach platformy Azure, w tym w usługach Azure App Services, Azure Functions i Azure Container Instances.
Instalacja IronWord
Zacznij od zainstalowania pakietu IronWord NuGet z oficjalnego repozytorium NuGet:
Install-Package IronWord
Kwestie związane z hostingiem w Azure
Wybór odpowiedniego poziomu usługi Azure
IronWord działa najlepiej w planach usług Azure, które zapewniają stałą moc obliczeniową dostępność. W przypadku większości małych i średnich zastosowań plan Basic (B1) usługi App Service jest wystarczające. Jeśli Twoja aplikacja przetwarza dużą liczbę dokumentów WORD lub wykonuje złożonych zadań związanych z formatowaniem, rozważ przejście na poziom Standard (S1) lub wyższy, aby unikaj wąskich gardeł wydajności.
Obsługiwane środowiska uruchomieniowe .NET i kompatybilność
IronWord działa od razu z następującymi frameworkami powszechnie używanymi w rozwiązaniach hostowanych w Azure:
- .NET 6+ (zalecana wersja LTS)
- .NET Core 3.1
- .NET Standard 2.1
Daje to elastyczność wdrażania IronWord we różnych usługach Azure, takich jak App Services, Azure Functions i kontenery Docker, bez obaw o zgodność.
Wdrażanie w Dockerze na Azure
Wdrażanie w kontenerze z IronWord
Jeśli szukasz maksymalnej kontroli nad środowiskiem uruchomieniowym, rozważ wdrożenie IronWord wewnątrz kontenera Docker w Azure Container Instances (ACI) lub Azure Kubernetes Service (AKS). Pozwala to na:
- Wstępne załadownie szablonów lub zasobów statycznych
- Konfigurowanie ustawień przetwarzania dokumentów
- Precyzyjne dostosowywanie wydajności na poziomie systemu operacyjnego
Aby rozpocząć, użyj obrazu bazowego takiego jak mcr.microsoft.com/dotnet/aspnet:6.0 lub 7.0 i dodaj IronWord przez NuGet lub ręczne włączenie DLL.
Bezserwerowość z Azure Functions
Używanie IronWord w Azure Functions
IronWord jest w pełni kompatybilny z Azure Functions v4 działającym na .NET 6 lub nowszym. Umożliwia to lekką, zdarzeniową generację dokumentów — idealną dla scenariuszy takich jak:
- Tworzenie raportów na żądanie za pośrednictwem HTTP
- Generowanie dokumentów Word z przesłanych formularzy
- Konwersja ustrukturyzowanych danych do formatu .docx
Przykład Azure Function: Generowanie dokumentu Word na żądanie
Poniżej znajduje się przykład z życia wziętego funkcji Azure, która tworzy i zwraca dokument Word w odpowiedzi na żądanie HTTP:
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;
public static class WordFunction
{
[FunctionName("GenerateWordDoc")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("Processing request to generate Word document...");
// Set your IronWord license key
IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";
// Create and populate Word document
var doc = new WordDocument();
Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
doc.AddParagraph(para1);
doc.AddParagraph(para2);
// Save to temporary file
string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
doc.SaveAs(tempPath);
// Read the file bytes
byte[] fileBytes = File.ReadAllBytes(tempPath);
// Optionally delete the temp file
File.Delete(tempPath);
// Build the response with the document as an attachment
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(fileBytes)
};
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue(
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
return response;
}
}
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;
public static class WordFunction
{
[FunctionName("GenerateWordDoc")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("Processing request to generate Word document...");
// Set your IronWord license key
IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";
// Create and populate Word document
var doc = new WordDocument();
Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
doc.AddParagraph(para1);
doc.AddParagraph(para2);
// Save to temporary file
string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
doc.SaveAs(tempPath);
// Read the file bytes
byte[] fileBytes = File.ReadAllBytes(tempPath);
// Optionally delete the temp file
File.Delete(tempPath);
// Build the response with the document as an attachment
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(fileBytes)
};
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue(
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
return response;
}
}
Imports System
Imports System.Net
Imports System.Net.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.Extensions.Logging
Imports System.Net.Http.Headers
Imports IronWord
Imports IronWord.Models
Imports System.IO
Imports System.Threading.Tasks
Public Module WordFunction
<FunctionName("GenerateWordDoc")>
Public Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger) As HttpResponseMessage
log.LogInformation("Processing request to generate Word document...")
' Set your IronWord license key
IronWord.License.LicenseKey = "YOUR-LICENSE-KEY"
' Create and populate Word document
Dim doc = New WordDocument()
Dim para1 As New Paragraph(New TextContent("This Word document was generated by IronWord in an Azure Function."))
Dim para2 As New Paragraph(New TextContent($"Timestamp: {DateTime.UtcNow}"))
doc.AddParagraph(para1)
doc.AddParagraph(para2)
' Save to temporary file
Dim tempPath As String = Path.GetTempFileName().Replace(".tmp", ".docx")
doc.SaveAs(tempPath)
' Read the file bytes
Dim fileBytes() As Byte = File.ReadAllBytes(tempPath)
' Optionally delete the temp file
File.Delete(tempPath)
' Build the response with the document as an attachment
Dim response = New HttpResponseMessage(HttpStatusCode.OK) With {.Content = New ByteArrayContent(fileBytes)}
response.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"IronWord_{DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"}
response.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.wordprocessingml.document")
Return response
End Function
End Module
Objaśnienie kodu:
- Definiujemy funkcję Azure o nazwie "GenerateWordDoc".
- Funkcja jest wywoływana przez żądanie HTTP GET lub POST i rejestruje komunikat, gdy rozpoczyna przetwarzanie.
- Określamy klucz licencyjny dla IronWord, ustawiając IronWord.License.LicenseKey (zastąpić "YOUR-LICENSE-KEY" rzeczywistym kluczem).
- Nowy dokument WordDocument jest tworzony przy użyciu API IronWord.
- Do dokumentu są dodawane dwa akapity — jeden z tekstem statycznym i drugi pokazujący bieżący znacznik czasu UTC.
- Dokument jest zapisywany w tymczasowym pliku .docx na serwerze przy użyciu doc.SaveAs(tempPath).
- Zapisany plik jest odczytywany do tablicy bajtowej przy użyciu File.ReadAllBytes, przygotowując go do pobrania.
- Tymczasowy plik jest usuwany natychmiast po odczytaniu, aby utrzymać porządek w systemie.
- Zostaje zbudowana HttpResponseMessage, zawierająca bajty dokumentu jako załącznik do pobrania.
- Nagłówek Content-Disposition ustawia nazwę pliku do pobrania, używając bieżącej daty i godziny.
- Nagłówek Content-Type jest ustawiony na "application/vnd.openxmlformats-officedocument.wordprocessingml.document", aby wskazać format pliku Word.
Często Zadawane Pytania
Jaki jest pierwszy krok w konfiguracji IronWord na platformie Azure?
Pierwszym krokiem do skonfigurowania IronWord na platformie Azure jest utworzenie konta Azure, jeśli jeszcze go nie posiadasz. Następnie musisz skonfigurować nową usługę Azure App Service, w której wdrożysz swoją aplikację .NET przy użyciu IronWord.
Jak wdrożyć aplikację .NET przy użyciu IronWord na platformie Azure?
Aby wdrożyć aplikację .NET przy użyciu IronWord na platformie Azure, należy spakować aplikację i jej zależności, w tym biblioteki IronWord, a następnie przesłać je do usługi Azure App Service. Do tego procesu można użyć narzędzi takich jak Visual Studio Publish lub potoki Azure DevOps.
Czy do uruchomienia IronWord potrzebna jest jakaś konkretna usługa Azure?
IronWord może być uruchamiany na standardowych usługach Azure App Services. Jednak w celu uzyskania optymalnej wydajności zaleca się korzystanie z planu zapewniającego wystarczające zasoby w oparciu o wymagania aplikacji.
Czy IronWord może być używany z Azure Functions?
Tak, IronWord można zintegrować z Azure Functions w celu przetwarzania dokumentów Worda w ramach architektury bezserwerowej. Należy upewnić się, że srodowisko Azure Functions posiada niezbędne zależności dla IronWord.
W jaki sposób IronWord usprawnia przetwarzanie dokumentów Word w Azure?
IronWord usprawnia przetwarzanie dokumentów Word w Azure, udostępniając potężne biblioteki .NET, które można łatwo zintegrować z usługami Azure, umożliwiając wydajne tworzenie, edycję i konwersję dokumentów Word.
Czy istnieje sposób na zautomatyzowanie zadań IronWord w Azure?
Tak, można zautomatyzować zadania IronWord w Azure za pomocą Azure Logic Apps lub Azure Functions, aby uruchamiać przetwarzanie dokumentów WORD na podstawie określonych zdarzeń lub harmonogramów.
Jakie są zalety korzystania z IronWord na platformie Azure?
Korzystanie z IronWord na platformie Azure pozwala na skalowalne i niezawodne przetwarzanie dokumentów WORD, wykorzystując infrastrukturę chmury Azure do obsługi dużych ilości dokumentów przy zachowaniu wysokiej wydajności.
Czy mogę zintegrować IronWord z usługą Azure Blob Storage?
Tak, można zintegrować IronWord z usługą Azure Blob Storage w celu przechowywania i pobierania dokumentów WORD, co pozwala na płynne przetwarzanie dokumentów i zarządzanie przechowywaniem w środowisku Azure.
Jak zapewnić wydajne działanie IronWord na platformie Azure?
Aby zapewnić wydajne działanie IronWord na platformie Azure, wybierz plan usług odpowiedni do obciążenia, zoptymalizuj kod aplikacji oraz wdroż odpowiednie procedury obsługi błędów i rejestrowania w celu ułatwienia rozwiązywania problemów.
Czy istnieją jakieś wymagania wstępne dotyczące korzystania z IronWord na platformie Azure?
Warunki korzystania z IronWord na platformie Azure obejmują skonfigurowane środowisko .NET, konto Azure z niezbędnymi uprawnieniami oraz biblioteki IronWord dołączone do projektu.

