Потоковое скачивание с WCF на android, используйте Json, Rest или мыло? - PullRequest
1 голос
/ 27 марта 2012

Я работаю над сервисом wcf для потоковой передачи файла данных и соответствующей ему информации клиенту Android, однако я все еще новичок в WCF, там очень много чтения и много времени не ясно, какой метод лучше всего следовать!

Какой формат я должен навязать этой услуге, учитывая, что она будет называться Android-устройством? Рассмотрим мой код и что будет легко реализовано, мыло, json, rest или другое?

Любые примеры также приветствуются, особенно с кодом, который я определил ниже. спасибо!

[MessageContract]
public class DownlaodStreamItem
{

    [MessageHeader]
    public Int64 ItemID { set; get; }

    [MessageHeader]
    public Int64 SizeOfFile { set; get; }

    [MessageHeader]
    public String Name { set; get; }

    [MessageBodyMember]
    public Stream Data { set; get; }
}

[MessageContract]
public class someString
{
    [MessageBodyMember]
    public string SomeString{ set; get; }
}

Услуги

    [OperationContract]
    DownlaodStreamItem DownloadMessagecontact(someString SomeString);

Сервис: IService

 public DownlaodStreamItem DownloadMessagecontact(someString SomeString)
 {
    DownlaodStreamItem DLITEM = new DownlaodStreamItem();
    // Populate & return DownlaodStreamItem ....
    return DLITEM;
 }

1 Ответ

2 голосов
/ 27 марта 2012

Для Android как клиента и .NET как сервиса лучше всего написать WCF REST Service. Потому что в этом случае вам не нужно создавать прокси-класс на конце Android, и вы можете использовать его, просто сделав запрос Http.

Вы можете легко написать службу REST WCF, используя шаблон службы WCF REST 40 (CS). Пожалуйста, обратитесь к этому о том, как его написать.

Тогда вы можете просто использовать следующий код на Android, чтобы использовать эту службу REST. Надеюсь, это поможет вам.

try {
            String URL;
            URL = "http://localhost/MyRESTSvc/DownloadStreamItem";       

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(URL);
            InputStream inputStream = getResources().openRawResource(R.raw.task);
            // Here task is any raw file you want to keep as input.. you may ignore it.
            InputStreamEntity reqEntity = new InputStreamEntity(inputStream, -1);
            reqEntity.setContentType("binary/octet-stream");
            reqEntity.setChunked(true); // Send in multiple parts if needed
            httppost.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(httppost);  
            displayAlert("Success !!");
        }
        catch (ClientProtocolException e) {                
            displayAlert(e.getMessage());
        }
        catch (IOException e) {                
            displayAlert(e.getMessage());
        }
        catch (Exception e) {                
            displayAlert(e.getMessage());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...