Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, işlevler için tetikleyicileri ve bağlamaları çevreleyen üst düzey kavramları öğreneceksiniz.
Tetikleyiciler bir işlevin çalışmasına neden olur. Tetikleyici, bir işlevin nasıl çağrıldığı tanımlar ve bir işlevin tam olarak bir tetikleyicisi olmalıdır. Tetikleyiciler, yöntem çağrılarında olduğu gibi işlevinize de veri geçirebilir.
İşleve bağlama, işlevlerinizi bildirim temelli olarak diğer kaynaklara bağlamanın bir yoludur. Bağlamalar işlevinize veri geçirir (giriş bağlaması) veya bağlama parametrelerini kullanarak işlevinizden (çıkış bağlaması) veri yazmanızı sağlar. İşlev tetikleyiciniz temelde özel bir giriş bağlama türüdür.
Bağlamaları işlevinizin özel senaryosuna uyacak şekilde karıştırabilir ve eşleştirebilirsiniz. Bağlamalar isteğe bağlıdır ve bir işlevin bir veya birden çok giriş ve/veya çıkış bağlaması olabilir.
Tetikleyiciler ve bağlamalar, diğer hizmetlere sabit kodlama erişiminden kaçınmanıza olanak sağlar. İşleviniz verileri (bir kuyruk iletisinin içeriği gibi) işlev parametreleriyle alır. Verileri göndermek (bir kuyruk iletisi oluşturmak gibi) için işlevin dönüş değerini kullanırsınız.
İşlevleri nasıl uygulayabileceğinize ilişkin aşağıdaki örnekleri göz önünde bulundurun:
| Örnek senaryo | Tetikle | Girdi bağlama | Çıkış bağlantısı |
|---|---|---|---|
| Başka bir kuyruğa yazmak için bir işlev çalıştıran yeni bir kuyruk iletisi gelir. | Kuyruk* | Hiçbiri | Kuyruk* |
| Zamanlanmış bir iş, Azure Blob Depolama içeriğini okur ve yeni bir Azure Cosmos DB belgesi oluşturur. | Zamanlayıcı | Blob Depolama | Azure Cosmos DB |
| Azure Event Grid, Blob Depolama'dan bir görüntü ve Azure Cosmos DB'den bir belge okuyarak e-posta göndermek için kullanılır. | Etkinlik Ağı | Blob Depolama ve Azure Cosmos DB | SendGrid |
* Farklı kuyrukları temsil eder.
Bu örneklerin kapsamlı olması amaçlanmamıştır, ancak tetikleyicileri ve bağlamaları birlikte nasıl kullanabileceğinizi gösterir. Daha kapsamlı bir senaryo kümesi için bkz. Azure İşlevleri senaryoları.
İpucu
Azure İşlevleri, Azure hizmetlerine bağlanmak için giriş ve çıkış bağlamalarını kullanmanızı gerektirmez. İstediğiniz zaman kodunuzda bir Azure SDK istemcisi oluşturabilir ve bunu veri aktarımlarınız için kullanabilirsiniz. Daha fazla bilgi için bkz . Hizmetlere bağlanma.
Tetikleyici ve bağlama tanımları
Aşağıdaki örnekte, bir Azure Depolama kuyruğuna ileti yazan çıkış bağlamasına sahip HTTP ile tetiklenen bir işlev gösterilmektedir.
C# sınıf kitaplığı işlevleri için, C# öznitelikleriyle yöntemleri ve parametreleri süsleyerek tetikleyicileri ve bağlamaları yapılandırabilirsiniz. Uyguladığınız belirli öznitelik C# çalışma zamanı modeline bağlı olabilir:
HttpTrigger nesnesi döndüren Run adlı bir işlev için, HttpExample yönteminde HTTP tetikleyicisini (MultiResponse) tanımlarsınız:
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
Bu örnekte nesne tanımı gösterilmektedir MultiResponse . Nesne tanımı, HttpResponse değerini HTTP isteğine geri döndürür ve bir QueueOutput bağlama kullanarak depolama kuyruğuna ileti yazar.
public class MultiResponse
{
[QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Daha fazla bilgi için C# yalıtılmış çalışan modelleri kılavuzuna bakın.
Eski C# betik işlevleri bir function.json tanım dosyası kullanır. Daha fazla bilgi için bkz. Azure İşlevleri C# scripti (.csx) geliştirici referansı.
Java işlevleri için, belirli yöntemlere ve parametrelere ek açıklama ekleyerek tetikleyicileri ve bağlamaları yapılandırabilirsiniz.
HttpExample adlı bir işlev için bu HTTP tetikleyicisini (@HttpTrigger) run yönteminde tanımlarsınız. işlev, outqueue adlı depolama kuyruğuna @QueueOutput parametresinde msg ek açıklamasının tanımladığı şekilde yazar:
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
Daha fazla bilgi için bkz. Java geliştirici kılavuzu.
Node.js işlevleri için tetikleyicileri ve bağlamaları tanımlama şekliniz, Azure İşlevleri için belirli Node.js sürümüne bağlıdır:
İhtır edilen app nesnenin yöntemi http bir HTTP tetikleyicisi tanımlar.
storageQueue üzerinde output yöntemi, bu tetikleyicinin çıkış bağlamasını tanımlar.
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
İhtır edilen app nesnenin yöntemi http bir HTTP tetikleyicisi tanımlar.
storageQueue üzerinde output yöntemi, bu tetikleyicinin çıkış bağlamasını tanımlar.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
Bu örnek function.json dosya işlevi tanımlar:
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}
Daha fazla bilgi için bkz . PowerShell geliştirici kılavuzu.
Fonksiyonu tanımlama şekli, Python for Azure İşlevleri sürümüne bağlıdır:
Azure İşlevleri sürüm 2 için Python'de, dekoratörleri kullanarak işlevi doğrudan kodda tanımlarsınız:
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out[func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
Bağlama ile ilgili dikkat edilmesi gerekenler
Tüm hizmetler hem giriş hem de çıkış bağlamalarını desteklemez. Bağlamalar için belirli kod örnekleri için belirli bağlama uzantınıza bakın.
Tetikleyiciler ve bağlamalar geliştirme diline bağlı olarak farklı şekilde tanımlanır. Bu makalenin en üstünde dilinizi seçtiğinizden emin olun.
Tetikleyici ve bağlama adları alfasayısal karakterlerle ve
_alt çizgiyle sınırlıdır.
İşleve bağlama ekleme görevi
Giriş veya çıkış bağlamalarını kullanarak işlevinizi diğer hizmetlere bağlayabilirsiniz. İşlevinize belirli tanımlarını ekleyerek bağlama ekleyin. Nasıl yapılacağını öğrenmek için bkz. Azure İşlevleri'da var olan bir işleve bağlama ekleme.
Azure İşlevleri, doğru şekilde yapılandırmanız gereken birden fazla bağlamayı destekler. Örneğin, bir fonksiyon aynı anda bir kuyruktan veri okuyabilir (giriş bağlaması) ve veri veritabanına (çıktı bağlaması) yazabilir.
Desteklenen bağlamalar
Bu tablo, Azure İşlevleri:1 içinde mevcut tetikleyicileri ve bağlamaları gösterir
| Tür | Tetikle | Girdi | Çıktı |
|---|---|---|---|
| Blob Depolama | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ |
| Azure Veri Gezgini | ✔ | ✔ | |
| Azure SQL | ✔ | ✔ | ✔ |
| Dapr3 | ✔ | ✔ | ✔ |
| Etkinlik Gridi | ✔ | ✔ | |
| Etkinlik Merkezleri | ✔ | ✔ | |
| HTTP ve web kancaları | ✔ | ✔ | |
| IoT Hub | ✔ | ||
| Kafka2 | ✔ | ✔ | |
| Model Bağlam Protokolü | ✔ | ||
| Kuyruk Depolama | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ |
| RabbitMQ2 | ✔ | ✔ | |
| SendGrid | ✔ | ||
| Service Bus | ✔ | ✔ | |
| Azure SignalR Hizmeti | ✔ | ✔ | ✔ |
| Tablo Saklama | ✔ | ✔ | |
| Zamanlayıcı | ✔ | ||
| Twilio | ✔ | ||
| Yönetilen bağlayıcı | ✔ |
- HTTP ve zamanlayıcı dışındaki tüm bağlamaları kaydedin. Bkz. Register Azure İşlevleri bağlama uzantıları.
- Tetikleyiciler Tüketim planında desteklenmez. Bu bağlama türü , çalışma zamanı temelli tetikleyiciler gerektirir.
- Bu bağlama türü yalnızca Kubernetes, Azure IoT Edge ve diğer şirket içinde barındırılan modlarda desteklenir.
Hangi bağlamaların önizleme aşamasında olduğu veya üretim kullanımı için onaylandığı hakkında bilgi için bkz . Desteklenen diller.
Bağlama uzantılarının belirli sürümleri yalnızca temel hizmet SDK'sı desteklenirken desteklenir. Temel alınan hizmet SDK'sı sürümünde yapılan destek değişiklikleri, tüketen uzantı desteğini etkiler.
Yönetilen bağlayıcılar
Azure Connector Namespace'deki yönetilen bağlayıcılar, desteklenen bağlamalar aracılığıyla mevcut hizmetleri genişletir. Microsoft 365, Teams ve SharePoint gibi servislerle entegre olmak için connector tetikleyicileri ve SDK eylemlerini kullanabilir, Connector Namespace ise web hooks, kimlik doğrulama ve denemeleri yönetir. Daha fazla bilgi için bkz. Use managed connectors in Azure İşlevleri.
SDK türleri
Azure İşlevleri bağlama uzantıları, Azure hizmetlerine bağlanmak için Azure hizmet SDK'larını kullanır. Bağlamalar tarafından kullanılan belirli SDK türleri, işlevlerinizdeki verilerle çalışma şeklinizi etkileyebilir. Bazı bağlamalar, daha zengin işlevsellik ve hizmetle daha iyi tümleştirme sağlayan SDK'ya özgü türleri desteklerken, diğerleri dizeler veya bayt dizileri gibi daha genel türler kullanır. Kullanılabilir olduğunda, SDK'ya özgü türleri kullanmak daha iyi tür güvenliği, daha kolay veri işleme ve hizmete özgü özelliklere erişim gibi avantajlar sağlayabilir.
Bu tablo, şu anda SDK türlerini destekleyen bağlama uzantılarını gösterir:
| Extension | Türler | Destek düzeyi |
|---|---|---|
| Azure Blob Depolama | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Tetikleyici: GA Giriş: GA |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Giriş: GA |
| Azure Event Grid | CloudEventEventGridEvent |
Tetikleyici: GA |
| Azure Event Hubs | EventDataEventHubProducerClient |
Tetikleyici: GA |
| Azure Kuyruk Depolama | QueueClientQueueMessage |
Tetikleyici: GA |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Tetikleyici: GA |
| Azure Tablo Depolaması | TableClientTableEntity |
Giriş: GA |
SDK türleri için dikkat edilmesi gerekenler:
- Tetikleyici verilerini kullanan bağlama ifadeleri kullanılırken, tetikleyicinin kendisi için SDK türleri kullanılamaz.
- SDK türü kullanabileceğiniz çıkış senaryoları için, çıktı bağlaması kullanmak yerine doğrudan SDK istemcileri oluşturun ve bu istemcilerle çalışın.
- Azure Cosmos DB tetikleyicisi Azure Cosmos DB değişiklik akışını kullanır ve değişiklik akışı öğelerini JSON serileştirilebilir türler olarak kullanıma sunar. Sonuç olarak, SDK türleri bu tetikleyici için desteklenmez.
Daha fazla bilgi için C# geliştirici kılavuzundaki SDK türleri bölümüne bakın.
| Extension | Türler | Destek düzeyi | Örnekler |
|---|---|---|---|
| Azure Blob Depolama | BlobClientContainerClientStorageStreamDownloader |
Tetikleyici: GA Giriş: GA |
QuickstartBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Giriş: önizleme |
QuickstartContainerProxyCosmosClientDatabaseProxy |
| Azure Event Hubs | EventData |
Tetikleyici: önizleme |
QuickstartEventData |
| Azure Service Bus | ServiceBusReceivedMessage |
Tetikleyici: önizleme |
QuickstartServiceBusReceivedMessage |
SDK türleri için dikkat edilmesi gerekenler:
- SDK türü kullanabileceğiniz çıkış senaryoları için, çıktı bağlaması kullanmak yerine doğrudan SDK istemcileri oluşturun ve bu istemcilerle çalışın.
- Azure Cosmos DB tetikleyicisi Azure Cosmos DB değişiklik akışını kullanır ve değişiklik akışı öğelerini JSON serileştirilebilir türler olarak kullanıma sunar. Sonuç olarak, SDK türleri bu tetikleyici için desteklenmez.
SDK türleri yalnızca Python v2 programlama modeli kullanılırken desteklenir. Daha fazla bilgi için Python geliştirici kılavuzundaki SDK türü bağlamaları bölümüne bakın.
| Extension | Türler | Destek düzeyi |
|---|---|---|
| Azure Blob Depolama | BlobClientContainerClientReadableStream |
Preview |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Preview |
SDK türleri yalnızca Node v4 programlama modeli kullanılırken desteklenir. Daha fazla bilgi için Node.js geliştirici kılavuzundaki SDK türleri bölümüne bakın.
| Extension | Türler | Destek düzeyi |
|---|---|---|
| Azure Blob Depolama | BlobClientBlobContainerClient |
Preview |
Daha fazla bilgi için Java geliştirici kılavuzundaki SDK türleri bölümüne bakın.
Önemli
SDK türleri şu anda PowerShell uygulamaları için desteklenmiyor.
Go, Azure SDK istemcileri sağlayan tetikleyiciler için SDK istemci eklemeyi destekler. Genel önizleme sırasında, Blob Depolama tetikleyicileri doğrudan işleyicide kimliği doğrulanmış bir Azure SDK *blob.Client alabilir.
| Extension | Türler | Destek düzeyi |
|---|---|---|
| Azure Blob Depolama | *blob.Client |
Preview |
Daha fazla bilgi için Go geliştirici başvurusundaki Uzantı tetikleyicileri bölümüne bakın.
Ajan bağlamaları
Önemli
Python fonksiyon uygulamaları için ajan bağlamaları şu anda önizleme aşamasında. Özellikler, paket isimleri ve yapılandırma genel erişilebilirlikten önce değişebilir.
Aracı bağlamaları, standart Azure İşlevleri tetikleyicilerini, bağlamalarını ve uygulama mantığını korurken bir Python işlevine Agent nesnesi eklemenizi sağlar. Bir fonksiyon iş akışının bir parçası ajanik akıl yürütmeden faydalanırken, ancak işlev kodunuz yürütme kontrolünü elinde tutmak zorunda, ajan bağlayıcılarını kullanın.
Ajan bağlamaları ayrıca Dayanıklı İşlevler orkestrasyonlarını destekler. Yeniden oynatmaya karşı güvenli context.call_agent() API, orkestrasyonun yeniden oynatılması deterministik kalsın diye aracı işlemlerini bir etkinlik içinde çalıştırır.
Python v2 programlama modeli için ajan bağlamaları mevcuttur. Daha fazla bilgi için Agent bindings for Python function apps sayfasına bakınız.
Bağlamalar için kod örnekleri
İşlevlerinizdeki bağlamalarla nasıl çalışabileceğinizi gösteren belirli bağlama türlerinin daha fazla örneğini bulmak için aşağıdaki tabloyu kullanın. İlk olarak, projenize karşılık gelen dil sekmesini seçin.
C# için bağlama kodu, belirli işlem modeline bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Trigger Giriş Çıkış |
Link |
| Azure Cosmos DB |
Trigger Giriş Çıkış |
Link |
| Azure Veri Gezgini |
Giriş Çıkış |
Link |
| Azure SQL |
Trigger Giriş Çıkış |
Link |
| Etkinlik Ağı |
Trigger Çıkış |
Link |
| Event Hubs |
Trigger Çıkış |
|
| IoT Hub |
Trigger Çıkış |
|
| HTTP | Trigger | Link |
| Model Bağlam Protokolü |
Araç Tetikleyici Kaynak Tetikleyici İstem Tetikleyici |
Link |
| Kuyruk Depolama |
Trigger Çıkış |
Link |
| RabbitMQ |
Trigger Çıkış |
|
| SendGrid | Çıkış | |
| Service Bus |
Trigger Çıkış |
Link |
| Azure SignalR Hizmeti |
Trigger Giriş Çıkış |
|
| Tablo Saklama |
Giriş Çıkış |
|
| Zamanlayıcı | Trigger | Link |
| Twilio | Çıkış | Link |
| Yönetilen bağlayıcılar | Trigger | Link |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Trigger Giriş Çıkış |
Link |
| Azure Cosmos DB |
Trigger Giriş Çıkış |
Link |
| Azure Veri Gezgini |
Giriş Çıkış |
Link |
| Azure SQL |
Trigger Giriş Çıkış |
|
| Etkinlik Ağı |
Trigger Çıkış |
Link |
| Event Hubs |
Trigger Çıkış |
|
| IoT Hub |
Trigger Çıkış |
|
| HTTP | Trigger | Link |
| Model Bağlam Protokolü |
Araç Tetikleyici Kaynak Tetikleyici İstem Tetikleyici |
Link |
| Kuyruk Depolama |
Trigger Çıkış |
Link |
| RabbitMQ |
Trigger Çıkış |
|
| SendGrid | Çıkış | |
| Service Bus |
Trigger Çıkış |
Link |
| Azure SignalR Hizmeti |
Trigger Giriş Çıkış |
|
| Tablo Saklama |
Giriş Çıkış |
|
| Zamanlayıcı | Trigger | Link |
| Twilio | Çıkış |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Trigger Giriş Çıkış |
Link |
| Azure Cosmos DB |
Trigger Giriş Çıkış |
Link |
| Azure Veri Gezgini |
Giriş Çıkış |
|
| Azure SQL |
Trigger Giriş Çıkış |
Link |
| Etkinlik Ağı |
Trigger Çıkış |
|
| Event Hubs |
Trigger Çıkış |
|
| IoT Hub |
Trigger Çıkış |
|
| HTTP | Trigger | Link |
| Model Bağlam Protokolü |
Araç Tetikleyici Kaynak Tetikleyici İstem Tetikleyici |
Link |
| Kuyruk Depolama |
Trigger Çıkış |
Link |
| RabbitMQ |
Trigger Çıkış |
|
| SendGrid | Çıkış | |
| Service Bus |
Trigger Çıkış |
Link |
| Azure SignalR Hizmeti |
Trigger Giriş Çıkış |
|
| Tablo Saklama |
Giriş Çıkış |
|
| Zamanlayıcı | Trigger | |
| Twilio | Çıkış | |
| Yönetilen bağlayıcılar | Trigger | Link |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Trigger Giriş Çıkış |
|
| Azure Cosmos DB |
Trigger Giriş Çıkış |
|
| Azure SQL |
Trigger Giriş Çıkış |
|
| Etkinlik Ağı |
Trigger Çıkış |
|
| Event Hubs |
Trigger Çıkış |
|
| IoT Hub |
Trigger Çıkış |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Çıkış |
|
| RabbitMQ |
Trigger Çıkış |
|
| SendGrid | Çıkış | |
| Service Bus |
Trigger Çıkış |
|
| Azure SignalR Hizmeti |
Trigger Giriş Çıkış |
|
| Tablo Saklama |
Giriş Çıkış |
|
| Zamanlayıcı | Trigger | |
| Twilio | Çıkış |
Python için bağlama kodu, Python model sürümüne bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Trigger Giriş Çıkış |
Link |
| Azure Cosmos DB |
Trigger Giriş Çıkış |
Link |
| Azure Veri Gezgini |
Giriş Çıkış |
|
| Azure SQL |
Trigger Giriş Çıkış |
Link |
| Etkinlik Ağı |
Trigger Çıkış |
|
| Event Hubs |
Trigger Çıkış |
|
| IoT Hub |
Trigger Çıkış |
|
| HTTP | Trigger | Link |
| Model Bağlam Protokolü |
Araç Tetikleyici Kaynak Tetikleyici İstem Tetikleyici |
Link |
| Kuyruk Depolama |
Trigger Çıkış |
|
| RabbitMQ |
Trigger Çıkış |
|
| SendGrid | Çıkış | |
| Service Bus |
Trigger Çıkış |
Link |
| Azure SignalR Hizmeti |
Trigger Giriş Çıkış |
|
| Tablo Saklama |
Giriş Çıkış |
|
| Zamanlayıcı | Trigger | |
| Twilio | Çıkış | |
| Yönetilen bağlayıcılar | Trigger | Link |
Özel bağlamalar
Özel giriş ve çıkış bağlamaları oluşturabilirsiniz. Bağlamaları .NET'te yazmalısınız, ancak desteklenen herhangi bir dilden tüketebilirsiniz. Özel bağlamalar oluşturma hakkında daha fazla bilgi için bkz. Özel giriş ve çıkış bağlamaları oluşturma.