8

好的,所以在消化了 URL 和 URI 之间的这一区别这样出色的答案后,我想我现在了解了两者之间的区别。

我现在明白的是为什么 .NET Framework 有一个 UriBuilder 类,据我所知,它只适用于作为资源定位器的 URI,因此应该正确地称为 UrlBuilder。

有人可以给我一个UriBuilder用于构建不是资源定位器的 URI 的示例吗?或者在 .NET 框架的设计中做出这个决定的一些理由?

4

2 回答 2

14

仔细想想,aUriBuilder比 URL Builder 更强大、更广泛。由于每个 URL 都是一个 URI,因此 UriBuilder 本质上是一个 URL Builder。

所以基本上问题是你什么时候可以将 UriBuilder 用于非 URL URI。好吧,我想最好的例子是URN(因为 URL 和 URN 基本上是定位符和名称——URI 的两种分类)。例如,可以使用 URN 来构建 uuid (ie urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66) 或 ISBN (ie ISBN 0-486-27557-4)。这些 URN 不像 URL 那样包含指向资源的位置信息,它们只包含名称或 ID。UriBuilder 不仅可以构建 URL(指向资源),还可以构建 URN。如果您查看Uri.Scheme 属性,您将在 Uri 的可能方案列表中看到 uuid。

此外,.NET 在技术上确实有一个UrlBuilder 类

于 2012-07-12T01:24:57.567 回答
0
Uri _uri = new Uri(URL);
            string tURL = _uri.Scheme + "://" + _uri.Host + _uri.LocalPath;
            Console.WriteLine("Before: " + tURL);
            uri = new UriBuilder(tURL);
            Console.WriteLine("After:  " + uri.Uri.ToString());
于 2012-07-18T14:25:41.943 回答