2012-10-10 4 views
0

wcf로 db와 통신하는 wpf 앱을 개발 중입니다. 한 가지 요구 사항은 파일을 업로드하고 나중에 검색 할 수 있도록 색인을 생성하는 것입니다. 휠을 재발 명하지 않고이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는이 두려움의 타임 아웃을 위해 wcf를 사용하는 것을 두려워합니다. 솔루션은 백그라운드 스레드에 있어야하며, 진행 상황을 추적하고, 실패시 다시 시도하거나 계속 진행하고, 암호화 할 수 있어야합니다. silverlight/asp.net에있는 파일 업로드 컨트롤을 찾을 수 없습니다.wpf 파일을 서버에 업로드

또는 dms에 통합해야합니까?

답변

0

그런 종류의 물건에 대해 Asp.Net WebApi를 사용할 수 있습니다. diffirent 도구를 사용할 때 나쁘지 않습니다. 모든 앱에서 호스팅 할 수 있으며 간단한 http 업로드가됩니다.

서버 측 코드 예제 : Uploading large files using ASP.NET Web API and Azure Blob Storage

+0

하지만 저는 Azure ....를 사용하지 않고 있습니다. 아니면 그냥 asp.net 쪽을 보여주는 것입니까? – Crudler

+0

asp.net이 내부에 있음을 보여주기 위해 업로드 코드가 같아집니다. 그리고 심지어 같은 경우, 만약 당신이 자기 주최 WebApi없이 IIS =) –

0

System.Net.WebClient.Upload을보십시오.

+0

이 경로가 보인다. 파일을 받으려면 여전히 asp.net 페이지를 작성해야합니까? 텍사스 – Crudler

0

MS SQL Server의 FILESTREAM은 파일이 SQL (저장 위치, 고유성 보장 파일 이름 등)에 의해 관리되기 때문에 파일 저장에 적합하지만 파일 시스템에 저장되며 실제로 데이터베이스에있는 것이 아닙니다 (DB가 부풀어 오름). 코드에서 BLOB으로 보지만 실제로는 파일입니다.

WCF는 일반 stream of large data을 처리 할 수 ​​있습니다. 작동 계약 (WCF의 웹 메소드 이름)에 대한 몇 가지 제한 사항이 있습니다. 하지만이 방법은 전송 진행 상황을보고하는 좋은 방법이 아닙니다. 이것이 원하는 방식으로 작동하지 않는다면 다른 사람들이 제출하는 다른 솔루션이나 FTP에 항상 의지 할 수 있습니다.

또한 암호화에 대한 WCF의 전송 보안을 확인하십시오.

자신의 백그라운드 스레드에서이를 관리해야합니다. 백그라운드에서 작동하는 스레드의 경우 BackgroundWorker를 참조하고 UI 스레드로 진행 상황을보고 할 수 있으며 (매우 중요) 스레드가 완료되면 다시 UI 스레드로보고하는 메서드를 제공합니다.

어떤 방법을 선택하든 시간 제한을 처리해야하므로 WCF, FTP, WebClient.Upload 등의 경우에도 동일한 문제가 있지만 약간 다른 방식으로 처리해야합니다. 적어도 WCF에서는 응용 프로그램 구성 파일에 시간 초과 타이밍이 구성되므로 타이밍을 쉽게 조정할 수 있습니다.

관련 문제