티스토리 뷰
소스 코드 다운로드시 코드의 Naver Open API Key 를 변경하여 사용하시기 바랍니다.
드디어 5회차까지 왔네요. 이전까지는 Custom LINQ Provider 를 만들기 위해 몸풀기 과정이었다면, 이번 시간에는 이것을 응용한 LINQ To Naver Open API 를 만들어 볼 것입니다. 아직 Custom LINQ Provider 에 대한 품새가 잘 그려지지 않는다면, 이번 예제를 통해 왜 Custom LINQ Provider 가 유용한 지에 대해 잘 알 수 있을 거라고 생각합니다.
드디어 5회차까지 왔네요. 이전까지는 Custom LINQ Provider 를 만들기 위해 몸풀기 과정이었다면, 이번 시간에는 이것을 응용한 LINQ To Naver Open API 를 만들어 볼 것입니다. 아직 Custom LINQ Provider 에 대한 품새가 잘 그려지지 않는다면, 이번 예제를 통해 왜 Custom LINQ Provider 가 유용한 지에 대해 잘 알 수 있을 거라고 생각합니다.
LINQ To Naver Open API
우선 이 LINQ To Naver Open API 를 만들면서 몇 가지 고민을 하게 되었습니다.
1. Naver Open API 는 조건 검색을 지원하지 않는다.
2. query 파라메터를 통해 where 절의 조건을 넣게 되면, 수많은 쿼리 parsing 이 필요하다. 그렇기 때문에 구현하기 위해 좀 더 많은 시간이 필요하다.
3. query 를 검색 한 후에, 검색 결과에 대해 where 조건을 만족시킨다. 현재 이 방법으로 구현되었으며, 기본적인 Lambda 식을 이용하기 때문에 구현하기 쉽다
.현재 3번의 방법으로 구현이 되었습니다. 그럼 어떤 모습으로 구현되었는지 한번 볼까요?
어떤가요?? 굉장히 편해하지 않습니까? 다음과 같이 블로그 검색도 지원합니다.
아래는 비디오 검색을 사용하고, 그 결과를 보여줍니다.
예제로 보여드리는 이 LINQ To Naver Open API 는 다음과 같은 검색을 지원합니다.
1. NaverOpenAPIModel.Blog – 블로그 검색
2. NaverOpenAPIModel.Kin – 지식in 검색
3. NaverOpenAPIModel.WebKR – 웹 문서 검색
4. NaverOpenAPIModel.Cafe – 카페 검색
5. NaverOpenAPIModel.Shop – 쇼핑 검색
6. NaverOpenAPIModel.Encyc – 백과사전 검색
7. NaverOpenAPIModel.Krdic – 국어사전 검색
8. NaverOpenAPIModel.Jpdic – 일어사전 검색
9. NaverOpenAPIModel.Endic – 영어사전 검색
10. NaverOpenAPIModel.News – 뉴스 검색
11. NaverOpenAPIModel.Local – 지역검색
12. NaverOpenAPIModel.Video – 동영상 검색
13. NaverOpenAPIModel.Image – 이미지 검색
이중 책 검색과 실시간 검색어는 Request XML 스키마가 조금 달라서, 귀찮아서 빼버렸습니다 ㅡ,.ㅡ;
Context 클래스를 제네릭 클래스로 변경하면서 쉽게 LINQ 쿼리를 만들 수 있습니다.
쓸만한 LINQ To Naver Open API 가 되지 않았나 생각합니다.
이번 포스팅은 코드가 한 줄도 없는 포스팅이 되었네요. 코드는 첨부파일을 참고하시면 될 것 같고, 부수적인 내용은 1,2,3,4 회차 포스팅을 참고 하시면, 특별한 설명이 없어도 될 것 같습니다.
연재를 마치며…
처음에 외국 문서를 그냥 번역 또는 각색해서 올릴까 라고 생각했었지만, 제대로 된 Custom LINQ Provider 를 직접 손대기에는 난이도가 높았습니다. 외국 문서에 비해 비록 디테일이 떨어지지만, LINQ 의 내부를 훓어 보기엔 충분하다고 생각이 듭니다.
첨부된 LINQ To Naver Open API 소스코드를 참고하시면, 실제 웹 서비스에서 적용해도 될 만큼 다양한 LINQ Provider 가 나올 수 있길 기대해 봅니다. ( 다양한 테스트는 하지 못해서, 버그가 있을 수도 있습니다 )
그 동안 읽어주신 분들께 감사드립니다.
'.NET > C#' 카테고리의 다른 글
Language Server Protocol, OmniSharp-Roslyn 빌드 오류 해결 (0) | 2017.01.23 |
---|---|
Custom LINQ Provider - [4]. Query(쿼리)를 이용한 원격 개체 탐색 (0) | 2008.03.27 |
Custom LINQ Provider - [3]. Custom LINQ Provider 만들기 (IQueryProvider) (0) | 2008.03.17 |
Custom LINQ Provider - [2]. Custom LINQ Provider 만들기 (IQueryable) (0) | 2008.03.13 |
Custom LINQ Provider - [1]. 소개 (1) | 2008.03.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
TAG
- Visual Studio 11
- umc
- Team Foundation Server 2010
- LINQ
- c#
- ASP.NET
- github
- test
- POWERUMC
- ALM
- Visual Studio
- .NET Framework 4.0
- Managed Extensibility Framework
- 비주얼 스튜디오 2010
- 팀 파운데이션 서버
- Team Foundation Server
- 엄준일
- Windows 8
- monodevelop
- testing
- 땡초
- Silverlight
- mono
- Visual Studio 2008
- .NET
- 비주얼 스튜디오
- MEF
- TFS
- Visual Studio 2010
- TFS 2010