Skip to main content

Client Support for Calling WCF/CoreWCF with System.ServiceModel 6.0 Is Here!

System.ServiceModel.* are a set of NuGet packages that provide the client functionality for calling into WCF or CoreWCF services from .NET applications. These packages, collectively known as the WCF Client, are developed and supported by Microsoft, and open-sourced at https://github.com/dotnet/wcf

Windows Communication Services (WCF) is a service communication framework from Microsoft, that supports SOAP and the WS-* protocol specifications, and was originally released as part of .NET 3.0 in 2006.

.NET Core 3.1 & .NET 5, 6, 7 & 8 (currently in preview) do not include WCF server support in the base SDK. A separate community project, CoreWCF, provides a WCF-compatible server implementation, based on top of ASP.NET Core.

Packages in this release

This 6.0 release includes the following packages:

Name Description
System.ServiceModel.Primitives Provides the common types used by all of the WCF libraries
System.ServiceModel.Http Provides the types that permit SOAP messages to be exchanged using Http (example: BasicHttpBinding)
System.ServiceModel.NetTcp Provides the types that permit SOAP messages to be exchanged using TCP (example: NetTcpBinding)
System.ServiceModel.Federation Provides the types that allow security communications with SOAP messages using WS-Federation
System.ServiceModel.NetFramingBase Contain common types for NetFraming based transports such as NetTcp and NetNamedPipe
System.ServiceModel.NetNamedPipe Provides the types that permit SOAP messages to be exchanged using named pipes (example: NetNamedPipeBinding)
System.Web.Services.Description Contains classes that enable you to publicly describe an XML Web service by using the Web Services Description Language (WSDL)
System.ServiceModel.Security Deprecated. Provides the types that support additional security features
System.ServiceModel.Duplex Deprecated. Provides the types that permit 2-way (“duplex”) exchanges of messages

NetNamedPipe support has been added

Support for using named pipes is new to this release. It works for named pipes implemented by WCF and CoreWCF. NetNamedPipeBinding is a binding for enabling fast binary communication between processes on the same machine.

Named Pipes is a feature of the Windows OS, so is not available on Linux or other non-windows platforms. We are working on Unix Domain socket support in CoreWCF, which will bring equivalent functionality for Linux. WCF Client will be updated in coordination with the CoreWCF release when it is ready.

Dropping .NET Standard and older .NET support

This WCF Client 6.0 package drops support for .NET Standard 2.0, and is only targetting .NET 6.0 and above. The reason for this change is so that we can take advantage of newer functionality included in .NET 6, which is not available for .NET Framework. This change reduces the size and complexity that was required for implementing support for both .NET and .NET Framework.

Targeting .NET standard enabled the same package to be used from either .NET Framwork or .NET applications. Applications and libraries that need .NET Standard support, should either:

  • Continue to reference the version 4.x System.ServiceModel.* packages
  • Or use a conditional assembly reference to System.ServiceModel.dll for .NET Framework and use these nuget packages for .NET 6 and above.

Deprecating the System.ServiceModel.Duplex and System.ServiceModel.Security packages

These packages are no longer required as the types have been merged into the System.ServiceModel.Primitives package. This 6.0 version of System.ServiceModel.Duplex and System.ServiceModel.Security now just includes type forwarders to the implementations in the System.ServiceModel.Primitives package.

This will be the final release of these two packages, as the type forwarders will always point to the version of the Primitives package referenced by the application.

Versioning pattern

To make it easier to understand the versioning we will be following a new versioning pattern for this package where the library will be targetted against an LTS version of .NET, and will match the support lifecycle for that LTS release. This release is versioned as 6.0 as it targets the .NET 6 LTS.

Support will be based on a major.minor versioning scheme:

  • The major number will follow the same numbering as the .NET LTS versions, and will follow the same support lifecycle as the corresponding .NET LTS.
    • Eg WCF Client 6.x will be supported for the same duration as .NET 6
  • Breaking changes, and dependent runtime requirements will only be made as part of a new major version train.
    • For example the changes in this release to only support .NET 6 and above were only possible because of the major version change. No futher runtime dependency changes will be made as part of the 6.x version train.
  • There may be multiple minor releases under each major number, eg 6.0, 6.1, 6.2 etc.
    • Minor releases with the same major version will be API and behavior compatible with the previous minor releases.
    • When new minor versions are released, support for the previous minor release(s) will be for six months after their replacement date.
  • Support will be primarily for the latest major.minor release of each supported major version.
    • When WCF Client 8.0 ships, support periods will overlap for both 6.x and 8.0. WCF Client 6.x support will continue thru Nov 2024, the same as .NET 6.
  • Security fixes will be released for all supported versions.
    • During the six months overlap period of a previous release and new minor release, any security fix release will include both versions.

The post Client Support for Calling WCF/CoreWCF with System.ServiceModel 6.0 Is Here! appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/wcf-client-60-has-been-released/

Comments

Popular posts from this blog

Fake CVR Generator Denmark

What Is Danish CVR The Central Business Register (CVR) is the central register of the state with information on all Danish companies. Since 1999, the Central Business Register has been the authoritative register for current and historical basic data on all registered companies in Denmark. Data comes from the companies' own registrations on Virk Report. There is also information on associations and public authorities in the CVR. As of 2018, CVR also contains information on Greenlandic companies, associations and authorities. In CVR at Virk you can do single lookups, filtered searches, create extracts and subscriptions, and retrieve a wide range of company documents and transcripts. Generate Danish CVR For Test (Fake) Click the button below to generate the valid CVR number for Denmark. You can click multiple times to generate several numbers. These numbers can be used to Test your sofware application that uses CVR, or Testing CVR APIs that Danish Govt provide. Generate

How To Iterate Dictionary Object

Dictionary is a object that can store values in Key-Value pair. its just like a list, the only difference is: List can be iterate using index(0-n) but not the Dictionary . Generally when we try to iterate the dictionary we get below error: " Collection was modified; enumeration operation may not execute. " So How to parse a dictionary and modify its values?? To iterate dictionary we must loop through it's keys or key - value pair. Using keys

How To Append Data to HTML5 localStorage or sessionStorage?

The localStorage property allows you to access a local Storage object. localStorage is similar to sessionStorage. The only difference is that, while data stored in localStorage has no expiration time untill unless user deletes his cache, data stored in sessionStorage gets cleared when the originating window or tab get closed. These are new HTML5 objects and provide these methods to deal with it: The following snippet accesses the current domain's local Storage object and adds a data item to it using Storage.setItem() . localStorage.setItem('myFav', 'Taylor Swift'); or you can use the keyname directly as : localStorage.myFav = 'Taylor Swift'; To grab the value set in localStorage or sessionStorage, we can use localStorage.getItem("myFav"); or localStorage.myFav There's no append function for localStorage or sessionStorage objects. It's not hard to write one though.The simplest solution goes here: But we can kee