Почему в .NET есть UriBuilder, а не UrlBuilder?

Хорошо, поэтому, переварив такие отличные ответы, как этот различие между URL-адресами и URI, я думаю, что теперь понимаю различие между ними .

Сейчас я не понимаю, почему в .NET Framework есть класс UriBuilder, который, насколько я могу судить, работает только с URI, которые являются локаторами ресурсов и поэтому следует правильно называть UrlBuilder.

Может ли кто-нибудь привести мне пример использования UriBuilder для создания URI, который не является указателем ресурсов? Или какое-то обоснование этого решения в дизайне .NET framework?


person Dylan Beattie    schedule 09.07.2012    source источник


Ответы (1)


Если подумать, UriBuilder мощнее и шире, чем построитель URL. Поскольку каждый URL-адрес является URI, UriBuilder по своей сути является построителем URL-адресов.

Итак, в основном вопрос в том, когда вы могли бы использовать UriBuilder для URI без URL-адреса. Что ж, я думаю, лучшим примером будет URN (поскольку URL-адреса и URN в основном являются локаторами и именами - двумя классификации URI). URN может использоваться, например, для создания uuid (то есть urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66) или ISBN (то есть ISBN 0-486-27557-4). Эти URN не содержат информацию о местоположении, которая указывает на ресурс, как URL-адреса, они просто содержат имена или идентификаторы. UriBuilder сможет создавать не только URL-адреса (которые указывают на ресурс), но также сможет создавать URN. Если вы посмотрите на свойство Uri.Scheme, вы увидите uuid в список возможных схем для Uri.

Кроме того, .NET технически имеет UrlBuilder класс.

person Michael Frederick    schedule 12.07.2012
comment
Тот факт, что этот вопрос теперь является результатом №1 Google для UUID UriBuilder, предполагает, что, хотя это использование технически поддерживается, оно имеет несколько ограниченное практическое применение ... :) - person Dylan Beattie; 17.07.2012
comment
@Dylan тот факт, что он не используется для этого, не имеет значения. Релевантно то, каким было собственное имя класса, когда он был разработан. Поскольку он поддерживает больше, чем создание URL-адресов, его название UrlBuilder привело бы к интересному SO-вопросу о том, почему кто-то назвал его UrlBuilder, когда вы также можете создать UUID с ним :) - person Eddy; 18.07.2012