You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In this quickstart, you create .NET sender and receiver applications that send and receive messages by using the HTTP protocol. The applications use Hybrid Connections feature of Azure Relay. To learn about Azure Relay in general, see [Azure Relay](relay-what-is-it.md).
@@ -53,7 +54,7 @@ In Visual Studio, write a C# console application to send messages to the relay.
53
54
3. Now, to close the console windows, press **ENTER** in both the console windows.
54
55
55
56
56
-
## Next steps
57
+
## Related content
57
58
58
59
In this quickstart, you created .NET client and server applications that used HTTP to send and receive messages. The Hybrid Connections feature of Azure Relay also supports using WebSockets to send and receive messages. To learn how to use WebSockets with Azure Relay Hybrid Connections, see the [WebSockets quickstart](relay-hybrid-connections-dotnet-get-started.md).
Copy file name to clipboardExpand all lines: articles/azure-relay/relay-hybrid-connections-protocol.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ platform. The new _Hybrid Connections_ capability of Relay is a secure,
12
12
open-protocol evolution based on HTTP and WebSockets. It supersedes the former,
13
13
equally named _BizTalk Services_ feature that was built on a proprietary
14
14
protocol foundation. The integration of Hybrid Connections into Azure App
15
-
Services will continue to function as-is.
15
+
Services continue to function as-is.
16
16
17
17
Hybrid Connections enables bi-directional, request-response, and binary stream communication, and
18
18
simple datagram flow between two networked applications. Either or
@@ -42,7 +42,7 @@ to be accepted for establishing a bi-directional communication path. "Connect,"
42
42
"Listen," and "Accept" are the same terms you find in most socket APIs.
43
43
44
44
Any relayed communication model has either party making outbound connections
45
-
towards a service endpoint. This makes the "listener" also a "client" in
45
+
towards a service endpoint. It makes the "listener" also a "client" in
46
46
colloquial use, and might also cause other terminology overloads. The precise
47
47
terminology therefore used for Hybrid Connections is as follows:
48
48
@@ -125,7 +125,7 @@ to a rendezvous WebSocket using a gesture equivalent to handling the
125
125
[Accept](#accept-message).
126
126
127
127
For requests, the service decides whether to route requests over the control
128
-
channel. This includes, but might not be limited to cases where a request exceeds
128
+
channel. It includes, but might not be limited to cases where a request exceeds
129
129
64 kB (headers plus body) outright, or if the request is sent with ["chunked"
130
130
transfer-encoding](https://tools.ietf.org/html/rfc7230#section-4.1) and the
131
131
service has reason to expect for the request to exceed 64 kB or reading the
@@ -145,10 +145,10 @@ response over the established rendezvous socket.
145
145
146
146
Once the rendezvous WebSocket has been established, the listener SHOULD
147
147
maintain it for further handling of requests and responses from the same
148
-
client. The service will maintain the WebSocket for as long as the HTTPS socket
149
-
connection with the sender persists and will route all subsequent requests from
148
+
client. The service maintains the WebSocket for as long as the HTTPS socket
149
+
connection with the sender persists and routes all subsequent requests from
150
150
that sender over the maintained WebSocket. If the listener chooses to drop the
151
-
rendezvous WebSocket from its side, the service will also drop the connection
151
+
rendezvous WebSocket from its side, the service also drops the connection
152
152
to the sender, irrespective of whether a subsequent request might already be
153
153
in progress.
154
154
@@ -164,7 +164,7 @@ maintained for extended periods.
164
164
#### Ping operation
165
165
166
166
If the control channel stays idle for a long time, intermediaries on the way,
167
-
such as load balancers or NATs may drop the TCP connection. The "ping"
167
+
such as load balancers or NATs might drop the TCP connection. The "ping"
168
168
operation avoids that by sending a small amount of data on the channel that
169
169
reminds everyone on the network route that the connection is meant to be alive,
170
170
and it also serves as a "live" test for the listener. If the ping fails, the
@@ -279,7 +279,7 @@ The query string parameter options are as follows.
279
279
If the WebSocket connection fails due to the Hybrid Connection path not being
280
280
registered, or an invalid or missing token, or some other error, the error
281
281
feedback is provided using the regular HTTP 1.1 status feedback model. The
282
-
status description contains an error tracking-id that can be communicated to
282
+
status description contains an error tracking ID that can be communicated to
283
283
Azure support personnel:
284
284
285
285
| Code | Error | Description
@@ -308,7 +308,7 @@ The "accept" notification is sent by the service to the listener over the
308
308
previously established control channel as a JSON message in a WebSocket text
309
309
frame. There's no reply to this message.
310
310
311
-
The message contains a JSON object named "accept", which defines the following
311
+
The message contains a JSON object named `accept`, which defines the following
312
312
properties at this time:
313
313
314
314
***address** – the URL string to be used for establishing the WebSocket to the
@@ -362,7 +362,7 @@ following parameters:
362
362
Connection on which to register this listener. This expression is appended to the
363
363
fixed `$hc/` path portion.
364
364
365
-
The `path` expression may be extended with a suffix and a query string
365
+
The `path` expression might be extended with a suffix and a query string
366
366
expression that follows the registered name after a separating forward slash.
367
367
This parameter enables the sender client to pass dispatch arguments to the accepting
368
368
listener when it isn't possible to include HTTP headers. The expectation is
@@ -430,7 +430,7 @@ The `request` consists of two parts: a header and binary body frame(s).
430
430
If there's no body, the body frames are omitted. The boolean `body` property indicates whether a body is present in the request
431
431
message.
432
432
433
-
For a request with a request body, the structure may look like this:
433
+
For a request with a request body, the structure might look like this:
434
434
435
435
```text
436
436
----- Web Socket text frame ----
@@ -522,7 +522,7 @@ The JSON content for `request` is as follows:
522
522
The receiver MUST respond. Repeated failure to respond to requests while
523
523
maintaining the connection might result in the listener getting blocked.
524
524
525
-
Responses may be sent in any order, but each request must be responded to
525
+
Responses might be sent in any order, but each request must be responded to
526
526
within 60 seconds or the delivery will be reported as having failed. The
527
527
60-second deadline is counted until the `response` frame has been received
528
528
by the service. An ongoing response with multiple binary frames can't
@@ -532,15 +532,15 @@ If the request is received over the control channel, the response MUST
532
532
either be sent on the control channel from where the request was received
533
533
or it MUST be sent over a rendezvous channel.
534
534
535
-
The response is a JSON object named "response". The rules for handling
535
+
The response is a JSON object named `response`. The rules for handling
536
536
body content are exactly like with the `request` message and based on
537
537
the `body` property.
538
538
539
539
***requestId** – string. REQUIRED. The `id` property value of the `request` message being
540
540
responded to.
541
541
***statusCode** – number. REQUIRED. a numerical HTTP status code that indicates the outcome of
542
542
the notification. All status codes of [RFC7231, Section 6](https://tools.ietf.org/html/rfc7231#section-6)
543
-
are permitted, except for [502 "Bad Gateway"](https://tools.ietf.org/html/rfc7231#section-6.6.3) and [504 "Gateway Timeout"](https://tools.ietf.org/html/rfc7231#section-6.6.5).
543
+
are permitted, except for [502 "Bad Gateway"](https://tools.ietf.org/html/rfc7231#section-6.6.3) and [504 - Gateway Timeout](https://tools.ietf.org/html/rfc7231#section-6.6.5).
description: Learn how to expose an on-premises WCF service to a web application in the cloud by using Azure Relay
4
-
ms.topic: conceptual
4
+
ms.topic: tutorial
5
5
ms.custom: devx-track-csharp, devx-track-dotnet
6
-
ms.date: 08/10/2023
6
+
ms.date: 12/11/2024
7
+
# Customer intent: I want to know how to expose an on-premises WCF service to a web application in the cloud by using Azure Relay.
7
8
---
8
9
9
-
# Expose an on-premises WCF service to a web application in the cloud by using Azure Relay
10
+
# Tutorial: Expose an on-premises WCF service to a web application in the cloud by using Azure Relay
10
11
11
12
This article shows how to build a hybrid cloud application with Microsoft Azure and Visual Studio. You create an application that uses multiple Azure resources in the cloud. This tutorial helps you learn:
12
13
@@ -48,7 +49,7 @@ In this tutorial, you create an ASP.NET website that enables you to see a list o
48
49
49
50
![Scenario][0]
50
51
51
-
The tutorial assumes that you have product information in an existing on-premises system, and uses Azure Relay to reach into that system. A web service that runs in a simple console application simulates this situation. It contains an in-memory set of products. You can run this console application on your own computer and deploy the web role into Azure. By doing so, you'll see how the web role running in the Azure datacenter calls into your computer. This call happens even though your computer will almost certainly be behind at least one firewall and a network address translation (NAT) layer.
52
+
The tutorial assumes that you have product information in an existing on-premises system, and uses Azure Relay to reach into that system. A web service that runs in a simple console application simulates this situation. It contains an in-memory set of products. You can run this console application on your own computer and deploy the web role into Azure. By doing so, you see how the web role running in the Azure datacenter calls into your computer. This call happens even though your computer will almost certainly be behind at least one firewall and a network address translation (NAT) layer.
52
53
53
54
## Set up the development environment
54
55
@@ -69,7 +70,7 @@ The first step is to create a namespace, and to obtain a [Shared Access Signatur
69
70
70
71
## Create an on-premises server
71
72
72
-
First, you build a simulated on-premises product catalog system. This project is a Visual Studio console application, and uses the [Azure Service Bus NuGet package](https://www.nuget.org/packages/WindowsAzure.ServiceBus/) to include the Service Bus libraries and configuration settings. <aname="create-the-project"></a>
73
+
First, you build a simulated on-premises product catalog system. This project is a Visual Studio console application, and uses the [Azure Service Bus NuGet package](https://www.nuget.org/packages/WindowsAzure.ServiceBus/) to include the Service Bus libraries and configuration settings. <aname="create-the-project"></a>
73
74
74
75
1. Start Microsoft Visual Studio as an administrator. To do so, right-click the Visual Studio program icon, and select **Run as administrator**.
75
76
1. In Visual Studio, select **Create a new project**.
@@ -233,7 +234,7 @@ In this section, you build a simple ASP.NET application that displays data retri
233
234
1. InVisualStudio, select**Createanewproject**.
234
235
1. In**Createanewproject**, select**ASP.NETWebApplication (.NETFramework)**for C# and select **Next**.
235
236
1. Name the project *ProductsPortal* and select **Create**.
236
-
1. In **Create a new ASP.NET Web Application**, choose **MVC** and select **Change** under **Authentication**.
237
+
1. In **Create a new ASP.NET Web Application**, choose **MVC, and select **Change** under **Authentication**.
237
238
238
239
![Select ASP .NET Web Application][16]
239
240
@@ -431,7 +432,7 @@ The next step is to republish the Azure Web app **ProductsPortal** front end:
1. CopytheURLofthedeployedwebapp. You'll need the URL later. You can also get this URL from the **Azure App Service Activity** window in Visual Studio:
0 commit comments