The Wayback Machine - https://web.archive.org/web/20201019213220/https://github.com/dotnet/designs/pull/138
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mark Windows-specific APIs #138

Merged
merged 7 commits into from Jul 16, 2020
Merged

Conversation

@terrajobst
Copy link
Member

@terrajobst terrajobst commented Jul 10, 2020

No description provided.

@terrajobst terrajobst force-pushed the terrajobst:windows-specific-apis branch from e391b7d to 066cd2b Jul 10, 2020
@terrajobst terrajobst changed the title windows specific apis Mark Windows-specific APIs Jul 10, 2020
* **X509Chain**
- `.ctor(IntPtr)`

### System.ServiceModel

This comment has been minimized.

@stephentoub

stephentoub Jul 10, 2020
Member

Someone familiar with WCF will need to comment on this section.

This comment has been minimized.

@mconnew

mconnew Jul 14, 2020
Member

We have zero api's which are Windows specific.

@terrajobst
Copy link
Member Author

@terrajobst terrajobst commented Jul 14, 2020

FYI. I've done a run for .NET 5 and the latest Microsoft.Windows.Compatibility pack. Once I've merged the delta, I'll flip this back to api-ready-for-review.

@terrajobst terrajobst force-pushed the terrajobst:windows-specific-apis branch from 3909780 to 242ba7b Jul 14, 2020
@terrajobst
Copy link
Member Author

@terrajobst terrajobst commented Jul 14, 2020

@akoeplinger I've rebased out the Excel file 🙂


## Open Issues

* We should run the tool again .NET 5

This comment has been minimized.

@jeffhandley

jeffhandley Jul 14, 2020
Contributor

Suggested change
* We should run the tool again .NET 5
* We should run the tool against .NET 5
- `CreateBindingElements()`
* **ChannelFactory**
- `.ctor(Binding, EndpointAddress)`
- `.ctor(ServiceEndpoint)`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `ApplyConfiguration(String)`
- `CreateDescription()`
- `InitializeEndpoint(Binding, EndpointAddress)`
- `InitializeEndpoint(ServiceEndpoint)`
- `InitializeEndpoint(String, EndpointAddress)`
* **ChannelTerminatedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ClientBase**
- `.ctor()`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `.ctor(String, String)`
* **ClientBase+ChannelBase**
- `EndInvoke(String, Object[], IAsyncResult)`
* **ClientCredentialsSecurityTokenManager**
- `CreateSecurityTokenAuthenticator(SecurityTokenRequirement, SecurityTokenResolver)`
- `CreateSecurityTokenProvider(SecurityTokenRequirement)`
- `CreateSecurityTokenSerializer(SecurityTokenVersion)`
* **CommunicationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectAbortedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectFaultedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **DuplexChannelFactory**
- `.ctor(InstanceContext, Binding, EndpointAddress)`
- `.ctor(InstanceContext, Binding, String)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
* **DuplexClientBase**
- `.ctor(InstanceContext)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
- `.ctor(InstanceContext, String, String)`
* **EndpointAddress**
- `ApplyTo(Message)`
* **EndpointIdentity**
- `Equals(Object)`
- `GetHashCode()`
* **EndpointNotFoundException**
- `.ctor(SerializationInfo, StreamingContext)`
* **FaultException**
- `.ctor(SerializationInfo, StreamingContext)`
* **InvalidMessageContractException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageHeaderException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageSecurityOverTcp**
- `get_ClientCredentialType()`
- `set_ClientCredentialType(MessageCredentialType)`
* **NetHttpBinding**
- `CreateBindingElements()`
* **NetHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **NetTcpBinding**
- `.ctor(String)`
- `CreateBindingElements()`
* **ProtocolException**
- `.ctor(SerializationInfo, StreamingContext)`
* **QuotaExceededException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServerTooBusyException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServiceActivationException**
- `.ctor(SerializationInfo, StreamingContext)`

### System.ServiceModel.Channels

* **AddressHeader**
- `Equals(Object)`
- `GetHashCode()`
* **MessageHeaders**
- `set_To(Uri)`
* **SecurityBindingElement**
- `CreateSecureConversationBindingElement(SecurityBindingElement)`
* **TransportSecurityBindingElement**
- `GetProperty<T>(BindingContext)`
* **WebSocketTransportSettings**
- `get_DisablePayloadMasking()`
- `set_DisablePayloadMasking(Boolean)`

### System.ServiceModel.Security

* **MessageSecurityException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityAccessDeniedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityNegotiationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **X509ServiceCertificateAuthentication**
- `set_CertificateValidationMode(X509CertificateValidationMode)`

Comment on lines +281 to +392 (Truncated to 100 lines)

This comment has been minimized.

@jeffhandley

jeffhandley Jul 14, 2020
Contributor

Per @mconnew's comment, this suggestion will remove the ServiceModel types.

Suggested change
### System.ServiceModel
* **ActionNotSupportedException**
- `.ctor(SerializationInfo, StreamingContext)`
- `.ctor(String, Exception)`
* **BasicHttpBinding**
- `.ctor()`
- `.ctor(BasicHttpSecurityMode)`
- `CreateBindingElements()`
* **BasicHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **ChannelFactory**
- `.ctor(Binding, EndpointAddress)`
- `.ctor(ServiceEndpoint)`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `ApplyConfiguration(String)`
- `CreateDescription()`
- `InitializeEndpoint(Binding, EndpointAddress)`
- `InitializeEndpoint(ServiceEndpoint)`
- `InitializeEndpoint(String, EndpointAddress)`
* **ChannelTerminatedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ClientBase**
- `.ctor()`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `.ctor(String, String)`
* **ClientBase+ChannelBase**
- `EndInvoke(String, Object[], IAsyncResult)`
* **ClientCredentialsSecurityTokenManager**
- `CreateSecurityTokenAuthenticator(SecurityTokenRequirement, SecurityTokenResolver)`
- `CreateSecurityTokenProvider(SecurityTokenRequirement)`
- `CreateSecurityTokenSerializer(SecurityTokenVersion)`
* **CommunicationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectAbortedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectFaultedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **DuplexChannelFactory**
- `.ctor(InstanceContext, Binding, EndpointAddress)`
- `.ctor(InstanceContext, Binding, String)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
* **DuplexClientBase**
- `.ctor(InstanceContext)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
- `.ctor(InstanceContext, String, String)`
* **EndpointAddress**
- `ApplyTo(Message)`
* **EndpointIdentity**
- `Equals(Object)`
- `GetHashCode()`
* **EndpointNotFoundException**
- `.ctor(SerializationInfo, StreamingContext)`
* **FaultException**
- `.ctor(SerializationInfo, StreamingContext)`
* **InvalidMessageContractException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageHeaderException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageSecurityOverTcp**
- `get_ClientCredentialType()`
- `set_ClientCredentialType(MessageCredentialType)`
* **NetHttpBinding**
- `CreateBindingElements()`
* **NetHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **NetTcpBinding**
- `.ctor(String)`
- `CreateBindingElements()`
* **ProtocolException**
- `.ctor(SerializationInfo, StreamingContext)`
* **QuotaExceededException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServerTooBusyException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServiceActivationException**
- `.ctor(SerializationInfo, StreamingContext)`
### System.ServiceModel.Channels
* **AddressHeader**
- `Equals(Object)`
- `GetHashCode()`
* **MessageHeaders**
- `set_To(Uri)`
* **SecurityBindingElement**
- `CreateSecureConversationBindingElement(SecurityBindingElement)`
* **TransportSecurityBindingElement**
- `GetProperty<T>(BindingContext)`
* **WebSocketTransportSettings**
- `get_DisablePayloadMasking()`
- `set_DisablePayloadMasking(Boolean)`
### System.ServiceModel.Security
* **MessageSecurityException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityAccessDeniedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityNegotiationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **X509ServiceCertificateAuthentication**
- `set_CertificateValidationMode(X509CertificateValidationMode)`

This comment has been minimized.

@stephentoub

stephentoub Jul 14, 2020
Member

Do we know what caused them to show up here in the first place?

- `EnterDebugMode()`
- `LeaveDebugMode()`
Comment on lines +121 to +122

This comment has been minimized.

@adamsitnik

adamsitnik Jul 15, 2020
Member

these two are nops and to be consistent with other nops, we should remove them from the list

context: https://github.com/dotnet/designs/pull/138/files#r454448405

Suggested change
- `EnterDebugMode()`
- `LeaveDebugMode()`
* **NamedPipeServerStream**
- `WaitForConnection()`
Comment on lines +160 to +161
* **Socket**
- `SetIPProtectionLevel(IPProtectionLevel)`
Comment on lines +209 to +210

This comment has been minimized.

@adamsitnik

adamsitnik Jul 15, 2020
Member

https://github.com/dotnet/runtime/blob/08643df14054d1273002254c909fa099649ebfcf/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Unix.cs#L13-L17

Suggested change
* **Socket**
- `SetIPProtectionLevel(IPProtectionLevel)`
* **Socket**
- `.ctor(SocketInformation)`
- `SetIPProtectionLevel(IPProtectionLevel)`
@adamsitnik
Copy link
Member

@adamsitnik adamsitnik commented Jul 15, 2020

FWIW I've done some simple manual search of keyword "PlatformNotSupportedException" in *Unix.cs files and found only 2 things that were not on the list and provided a suggestion that adds them. IMO the list is complete now.

My PR is ready dotnet/runtime#39265

@terrajobst
Copy link
Member Author

@terrajobst terrajobst commented Jul 16, 2020

Video

  • The proposal looks good.
  • We should consider a diagnostic to warn on typos in the OS name, e.g. [MinimumOSPlatform("windos7.0")]
@jeffhandley jeffhandley merged commit a3b498f into dotnet:master Jul 16, 2020
1 check passed
1 check passed
license/cla All CLA requirements met.
Details
@terrajobst terrajobst deleted the terrajobst:windows-specific-apis branch Sep 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
8 participants
You can’t perform that action at this time.