What is an International Resource Identifier (IRI): In short, current domain names are restricted to ASCII characters e.g. www.microsoft.com. However, with the introduction of Unicode we can now have any language represented in a domain name. e.g. http://www.cafè.com or http://www.αβγ.com
For more information please refer RFC 3987.
Challenges for IRI: Just adding Unicode characters to a domain name is not sufficient. There are additional issues that need to be dealt with now
Managed Uri changes:
For managed Uri parsing, Uri class handles generic URI parsing (by RFC 2396) whereas custom scheme parsers can be derived from GenericUriParser class. New feature changes will now involve giving back IDN names from the DnsSafeHost property and normalizing operations on the Uri string provided as input.
This feature will enable users to adopt international domain names while using the existing Uri class.
Generic URI parsing:
Currently the Uri class takes in specific Unicode values in the domain name that are classified as a character using the Char.IsChar() function. Other parts of the Uri take in any Unicode characters but do not perform normalization on them.
The Uri class is being updated with the ability to handle IDNs and normalization.
How it works:
When the user specifies Unicode characters in the domain, we
When the user specifies Unicode characters in the other parts of the Uri we
For the domain name as well as the other parts
Custom URI parsing.
Currently user can define custom URI parsers by deriving from the GenericUriParser class and specifying options using GenericUriParserOptions enum. User can opt into the enhanced functionality with two new values added to this enum
a) Idn - Turns on the IDN functionality for this custom parser.b) IriParsing - Turns on the IRI functionality for this custom parser.
Targeted Timeframe and Backward compatibility:
This feature is currently slated for the Orcas .NET release. Once released, current users of these classes will not see any change in functionality. Instead, they will have to opt into the new IRI/IDN functionality. Thus, by default the Uri parser will have identical behavior as Whidbey.
There will be two switches that control backward compatibility with Uri class. Both these will be switched off by default.