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
* Image updates.
* Image updates.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
* Update file names, alt text, and file directories.
Copy file name to clipboardExpand all lines: docs/framework/interop/deploying-an-interop-application.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,8 +32,7 @@ An interop application typically includes a .NET client assembly, one or more in
32
32
### Private Assemblies
33
33
To install an assembly to be used privately, both the application executable and the interop assembly that contains imported COM types must be installed in the same directory structure. The following illustration shows an unsigned interop assembly to be used privately by Client1.exe and Client2.exe, which reside in separate application directories. The interop assembly, which is called LOANLib.dll in this example, is installed twice.
34
34
35
-

36
-
Directory structure and registry entries for a private deployment
35
+

37
36
38
37
All COM components associated with the application must be installed in the Windows registry. If Client1.exe and Client2.exe in the illustration are installed on different computers, you must register the COM components on both computers.
Copy file name to clipboardExpand all lines: docs/framework/interop/interop-marshaling.md
+6-11Lines changed: 6 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,8 +38,7 @@ ms.author: "ronpet"
38
38
39
39
Both platform invoke and COM interop use interop marshaling to accurately move method arguments between caller and callee and back, if required. As the following illustration shows, a platform invoke method call flows from managed to unmanaged code and never the other way, except when [callback functions](callback-functions.md) are involved. Even though platform invoke calls can flow only from managed to unmanaged code, data can flow in both directions as input or output parameters. COM interop method calls can flow in either direction.

43
42
44
43
At the lowest level, both mechanisms use the same interop marshaling service; however, certain data types are supported exclusively by COM interop or platform invoke. For details, see [Default Marshaling Behavior](default-marshaling-behavior.md).
45
44
@@ -61,8 +60,7 @@ Platform invoke and COM interop call flow
61
60
62
61
Because the client and server are in the same apartment, the interop marshaling service automatically handles all data marshaling. The following illustration shows the interop marshaling service operating between managed and unmanaged heaps within the same COM-style apartment.

66
64
67
65
If you plan to export a managed server, be aware that the COM client determines the apartment of the server. A managed server called by a COM client initialized in an MTA must ensure thread safety.
68
66
@@ -78,8 +76,7 @@ Same-apartment marshaling process
78
76
79
77
When a managed client and unmanaged server are in the same apartment, the interop marshaling service handles all data marshaling. However, when client and server are initialized in different apartments, COM marshaling is also required. The following illustration shows the elements of a cross-apartment call.
The common language runtime preserves the identity of managed and unmanaged references. The following illustration shows the flow of direct unmanaged references (top row) and direct managed references (bottom row) across process and host boundaries.
112
108
113
-

114
-
Reference passing across process and host boundaries
109
+

115
110
116
111
In this illustration:
117
112
@@ -127,7 +122,7 @@ Reference passing across process and host boundaries
127
122
### Managed Remoting
128
123
The runtime also provides managed remoting, which you can use to establish a communications channel between managed objects across process and host boundaries. Managed remoting can accommodate a firewall between the communicating components, as the following illustration shows.
129
124
130
-

125
+

131
126
Remote calls across firewalls using SOAP or the TcpChannel class
132
127
133
128
Some unmanaged calls can be channeled through SOAP, such as the calls between serviced components and COM.
Copy file name to clipboardExpand all lines: docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md
+16-16Lines changed: 16 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,11 +39,11 @@ This topic describes how to create a long-running workflow service. Long running
39
39
40
40
1. Under **Start Action** select **Specific Page** and specify `Service1.xamlx`.
41
41
42
-

42
+

43
43
44
44
2. Under **Servers** select **Use Local IIS Web server**.
45
45
46
-

46
+

47
47
48
48
> [!WARNING]
49
49
> You must run Visual Studio 2012 in administrator mode to make this setting.
@@ -57,73 +57,73 @@ This topic describes how to create a long-running workflow service. Long running
57
57
> [!NOTE]
58
58
> If CorrelationHandle is not in the Variable Type drop-down, select **Browse for types** from the drop-down. Type CorrelationHandle in the **Type name** box, select CorrelationHandle from the listbox and click **OK**.

61
61
62
62
6. Drag and drop a **ReceiveAndSendReply** activity template into the **Sequential Service** activity. This set of activities will receive a message from a client and send a reply back.
63
63
64
64
1. Select the **Receive** activity and set the properties highlighted in the following illustration.

67
67
68
68
The DisplayName property sets the name displayed for the Receive activity in the designer. The ServiceContractName and OperationName properties specify the name of the service contract and operation that are implemented by the Receive activity. For more information about how contracts are used in Workflow services see [Using Contracts in Workflow](../../../../docs/framework/wcf/feature-details/using-contracts-in-workflow.md).
69
69
70
70
2. Click the **Define...** link in the **ReceiveStartOrder** activity and set the properties shown in the following illustration. Notice that the **Parameters** radio button is selected, a parameter named `p_customerName` is bound to the `customerName` variable. This configures the **Receive** activity to receive some data and bind that data to local variables.
71
71
72
-

72
+

73
73
74
74
3. Select The **SendReplyToReceive** activity and set the highlighted property shown in the following illustration.
75
75
76
-

76
+

77
77
78
78
4. Click the **Define...** link in the **SendReplyToStartOrder** activity and set the properties shown in the following illustration. Notice that the **Parameters** radio button is selected; a parameter named `p_orderId` is bound to the `orderId` variable. This setting specifies that the SendReplyToStartOrder activity will return a value of type string to the caller.
79
79
80
-

80
+

81
81
82
82
5. Drag and drop an Assign activity in between the **Receive** and **SendReply** activities and set the properties as shown in the following illustration:
83
83
84
-

84
+

85
85
86
86
This creates a new order ID and places the value in the orderId variable.
87
87
88
88
6. Select the **ReplyToStartOrder** activity. In the properties window click the ellipsis button for **CorrelationInitializers**. Select the **Add initializer** link, enter `orderIdHandle` in the Initializer text box, select Query correlation initializer for the Correlation type, and select p_orderId under the XPATH Queries dropdown box. These settings are shown in the following illustration. Click **OK**. This initializes a correlation between the client and this instance of the workflow service. When a message containing this order ID is received it is routed to this instance of the workflow service.
89
89
90
-

90
+

91
91
92
92
7. Drag and drop another **ReceiveAndSendReply** activity to the end of the workflow (outside the **Sequence** containing the first **Receive** and **SendReply** activities). This will receive the second message sent by the client and respond to it.
93
93
94
94
1. Select the **Sequence** that contains the newly added **Receive** and **SendReply** activities and click the **Variables** button. Add the variable highlighted in the following illustration:
95
95
96
-

96
+

97
97
98
98
2. Select the **Receive** activity and set the properties shown in the following illustration:
99
99
100
-

100
+

101
101
102
102
3. Click the **Define...** link in the **ReceiveAddItem** activity and add the parameters shown in the following illustration:This configures the receive activity to accept two parameters, the order ID and the ID of the item being ordered.
103
103
104
-

104
+

105
105
106
106
4. Click the **CorrelateOn** ellipsis button and enter `orderIdHandle`. Under **XPath Queries**, click the drop down arrow and select `p_orderId`. This configures the correlation on the second receive activity. For more information about correlation see [Correlation](../../../../docs/framework/wcf/feature-details/correlation.md).
107
107
108
-

108
+

109
109
110
110
5. Drag and drop an **If** activity immediately after the **ReceiveAddItem** activity. This activity acts just like an if statement.
111
111
112
112
1. Set the **Condition** property to `itemId=="Zune HD" (itemId="Zune HD" for Visual Basic)`
113
113
114
114
2. Drag and drop an **Assign** activity in to the **Then** section and another into the **Else** section set the properties of the **Assign** activities as shown in the following illustration.
115
115
116
-

116
+

117
117
118
118
If the condition is `true` the **Then** section will be executed. If the condition is `false` the **Else** section is executed.
119
119
120
120
3. Select the **SendReplyToReceive** activity and set the **DisplayName** property shown in the following illustration.
121
121
122
-

122
+

123
123
124
124
4. Click the **Define ...** link in the **SetReplyToAddItem** activity and configure it as shown in the following illustration. This configures the **SendReplyToAddItem** activity to return the value in the `orderResult` variable.
125
125
126
-

126
+

127
127
128
128
8. Open the web.config file and add the following elements in the \<behavior> section to enable workflow persistence.
0 commit comments