2008-10-19 7 views
5

나는 그것을보고 있으며 근본적으로 깨져있는 것으로 보입니다.System.Uri를 사용해야하는 이유가 있습니까?

  • 5 개의 인스턴스 메소드 만 사용되지 않는 것으로 표시되지 않습니다.
  • 쿼리 문자열 변수를 구문 분석하기위한 기본 제공 방법이없는 것 같습니다.
  • 새 쿼리 변수를 추가하는 것과 같이 Uri를 변경하는 방법은 없습니다.
  • HttpUtility는

그래서 좋은 아무것도가, URI가 아닌 문자열에서 작동? 정말로 문자열 대신 이것을 사용해야할까요?

답변

1

UriBuilder는 돌연변이입니다. HttpUtility에 대해서도 알아두면 좋습니다 (예 : 검색어 문자열 파싱).

http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx

http://msdn.microsoft.com/en-us/library/system.web.httputility.parsequerystring.aspx

+0

나는 HttpUtility를 잘 알고 있지만, URI가 아닌 문자열에서 작동한다. –

+1

하지만 그게 핵심입니다. Uri.Query와 함께 사용하면 쿼리 문자열을 구문 분석 할 수 있습니다. –

8

나는 열린 우리당 클래스는 근본적으로 전혀 고장 언급하지 않았다. Uri 클래스의 목적은 URI의 압축 된 표준 표현을 제공하는 것입니다. Uri 클래스는 URI를 표준 형식으로 반환하고 IPV4 및 IPV6 표기법 및 IRI 지원을 지원하는 데 필요한 모든 논리를 캡슐화합니다.

Uri 클래스는 Uri가 생성되면 Uri를 변경할 수 있도록 설계되지 않았습니다. 그 수준의 가변성을 원하면 UriBuilder를 사용해야합니다.

문자열에 비해 Uri (또는 UriBuilder)를 사용하면 주어진 주소가 올바른 형식인지, 절대적인 URI에서 상대 URI를 만들 수 있는지 등을 확인하기 위해 많은 유효성 검사 기능을 내장 할 수 있다는 이점이 있습니다. 기본적으로 Uri를 실제 데이터 유형으로 생각할 수 있으므로 강력한 유형 입력을 제공합니다.

+1

문자열은 "압축 된 표준 URI 표현"도 제공합니다. 그리고 URI를 진정으로 검증하는 유일한 방법은 각 리소스가 자체 규칙을 갖는 경향이 있으므로 문제의 리소스를 호출하는 것입니다. –

+0

리소스의 유효성을 검사하는 것에 대해 이야기하고 있다면 그렇습니다. 그러나 Uri 클래스는 주소가 올바른지, 다른지 확인합니다. 문자열을 사용하면 상대 URI를 쉽게 만들거나 주어진 URI가 절대적인지 아닌지 쉽게 판단 할 수 없습니다. –

+1

또한 Uri는 일부 응용 프로그램에서 매우 중요 할 수있는 URI를 표준화합니다. – RobV

3

당신이하는 일에 따라 다릅니다. 나는 그것을 사용하는 적어도 하나의 시나리오를 생각할 수있다. 그것은 상대 URL을 절대적으로 변환하는 것이다. 예를 들어 어딘가에 HTML 형식을 사용했지만 URL이 상대적인지 또는 절대적인지를 반드시 알 필요는 없습니다. 당신은 당신의 자신의 구문 분석 로직을 쓸 수, 또는 당신은 같은 열린 우리당 클래스를 사용할 수 있습니다 그럼 당신은 쉽게 걱정없이 절대 URL을 것

Uri link = new Uri(new Uri(webSiteAddress), linkPulledFromSite); 
string absoluteUrl = link.AbsoluteUri; 

. 모든 일은 당신이하는 일에 따라 달라집니다 :-)

+0

좋습니다. 멋지 네요. 그러나 그것은 전체적으로 우리 사회 계급을 정당화하지는 못합니다. –

0

왜 모든 파일 클래스와 웹 클래스는 유효성이 검증되지 않은 문자열을 사용합니까? .NET Framework 디자이너는 실제로 이와 같은 문자열 캡슐화 클래스에서 공을 던졌습니다.

문자열 데이터의 확인이 염려되는 경우 거의 모든 문자열을 특정 종류의 컨테이너에 저장해야합니다. 하나도 없으면 문자열의 상태를 확인하기가 정말 어렵습니다. 현재 어떻게 포맷되어 있습니까? 잘못된 문자가 포함되어 있습니까? 지금 시작하는 것이 괜찮습니까?

관련 문제