为什么.NET有UriBuilder而不是UrlBuilder



好吧,在消化了URL和URI之间的这一区别这样优秀的答案之后,我想我现在明白了两者之间的区别。

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

有人能给我举一个UriBuilder用于构建URI的例子吗?该URI是而不是资源定位器?或者在.NET框架的设计中,这个决定的一些基本原理是什么?

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

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

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

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());

最新更新