유니코드 브라우저
유니코드 문자 데이터베이스를 검색하기 위한 Blazor C# 웹 애플리케이션입니다.
애플리케이션은 https://unicode-browser.azurewebsites.net/home에서 호스팅됩니다.
특징
- 유니코드 코드 포인트로 텍스트를 분해합니다.
- 코드 포인트에 대한 자세한 정보를 봅니다.
- 특정 유니코드 블록에서 코드 포인트를 찾아보세요.
- 이름으로 캐릭터를 검색하세요.
- 유니코드 블록 전용 페이지에 추가 정보(마크다운 형식)를 표시합니다.
사용해 보세요
다음은 애플리케이션이 실제로 작동하는지 확인하기 위해 시도할 수 있는 몇 가지 URL입니다.
- https://unicode-browser.azurewebsites.net/blocks/Miscellaneous%20Symbols%20and%20Pictographs
- https://unicode-browser.azurewebsites.net/codepoints/1F365
- https://unicode-browser.azurewebsites.net/search?q=Tree
- https://unicode-browser.azurewebsites.net/decomposition?text=????????
- https://unicode-browser.azurewebsites.net/blocks/Tangut
- https://unicode-browser.azurewebsites.net/blocks/Tags
사용된 주요 기술
- ASP.NET Core 3.0(.NET Core 3.0.0-preview8.19405.7)
- 블레이저
- 마크딕 0.17.1
- 부트스트랩 4.1
- 폰트 굉장 5.0.10
- jQuery 3.3.1(Beacuse Bootstrap JS는 여전히 이를 요구하는 것 같습니다)
문서 링크
Blazor 설명서는 docs.microsoft.com에서 확인할 수 있습니다.
뒷이야기
이 애플리케이션의 대부분은 원래 ASP.NET Core, TypeScript 및 Aurelia의 미리 보기 버전을 사용하여 2016년 초에 작성되었습니다. 당시 이는 매우 새로운 프레임워크에 대해 배울 수 있는 기회였으며 매우 효과적이었습니다.
현재 버전의 소스 코드는 대부분 초기 프로토타입을 간단하게 적용한 것입니다. 실제로 대부분의 서버 코드는 거의 수정되지 않고 단순히 ASP.NET Core 2.1로 이식되었습니다.
그러나 클라이언트 부분은 HTML 부분만 재사용이 가능했기 때문에 "재미"가 있었습니다. (그리고 여전히 Bootstrap 4 / Fontawesome 5로의 마이그레이션이 필요했습니다.) 이번에도 Blazor 사용 방법을 테스트하고 배울 수 있는 좋은 기회였으며 다른 기술에 대한 최신 정보도 얻을 수 있었습니다.
문제
Blazor는 아직 초기 평가판인 매우 새로운 기술이므로 때때로 다루기가 어려울 수 있습니다.
그러다 보니 사소하다고 생각했던 일들에 부딪히게 되었고, 이런 일들이 작동하려면 상용구 코드를 많이 작성해야 했다는 생각이 들었습니다.
예를 들어
* Blazor는 현재 매우 제한적인 SimpleJson을 사용하고 있기 때문에 서버와 클라이언트 간에 Model 클래스를 공유할 수 없다는 점에 상당히 실망했습니다. ? (슬프게도 Newtonsoft.Json은 현재로서는 제대로 작동하지 않는 것 같습니다. ?)
- 쿼리 문자열 매개변수에 대한 바인딩은 수동으로 수행되어야 합니다.
- 페이지는 때때로 위치 변경(예: 동일한 페이지의 URL 변경)을 수동으로 수신해야 합니다.
- 기본적으로 상태 관리가 없습니다. (예: 기록에서 앞뒤로 이동하면 어떻게 되나요?) => 상태 관리가 전혀 필요하지 않고 항상 경로나 쿼리 문자열에 의존하여 해결했습니다.
- 구성 요소 수명 주기는 그다지 확장성이 없는 것 같습니다. 기본 클래스에 복잡한 동작을 추가하는 것이 어려울 것입니다(예: 콘텐츠가 로드되기 전에 스피너 표시).
3.0에서는 상황이 개선되었지만(경로 매개변수는 이제 디코딩됩니까?) 대부분의 요점은 여전히 유효하다고 생각합니다.
.NET Core 3.0의 몇 가지 새로운 기능:
- System.Text.Json은 Blazor용 새로운(기본) JSON 직렬 변환기입니다. 그러나 가장자리가 매우 거칠습니다. 불변 유형을 기본적으로 역직렬화할 수 없다는 것은 정말 고통스러운 일입니다. ? => 저는 이 특정 사례를 관리하기 위해 JsonConverter를 구현했습니다. 동적 코드 생성을 사용하면 새 API에서 역직렬화를 허용하는 유형을 생성한 다음 변경할 수 없는 유형을 인스턴스화할 수 있습니다.
- Preview 8에서 Blazor 클라이언트 프로젝트는 여전히 .NET Standard 2.1이 아닌 .NET Standard 2.0을 대상으로 해야 합니다.