Как подключить iPhone к .Net Web Service и эффективно получать XML-файлы 1000-х? - PullRequest
0 голосов
/ 30 июня 2010

Мне нужно получить тысячи файлов XML, хранящихся в базе данных сервера SQL через веб-сервис .Net для звонка с iPhone? Пожалуйста, предложите лучший способ справиться с этим в веб-сервисе .net?

1 Ответ

1 голос
/ 01 июля 2010

Похоже, вы пишете приложение для iPhone?

Для этого вам не понадобится веб-служба SOAP.Вы не указали, известен ли клиенту список тысяч xml-файлов на момент запроса.Этот ответ предполагает, что клиент явно знает список.

Клиент

Найдите существующий модуль или код, который позволит приложению iPhone считывать XML из ресурса HTTP.Вы будете нажимать URL-адрес, например http://foo.com/bar/GetFile.ashx?file=1.xml. Вы сможете прочитать содержимое ответа в формате XML.Повторите этот вызов для каждого xml-файла, который вы хотите загрузить на телефон.

Сервер

Настройте веб-приложение для обработки запроса на файл.Создайте новый класс веб-обработчика .ashx для прослушивания и обработки запросов к XML-файлу.Вот простой пример, иллюстрирующий серверную часть:

 public class GetFile : IHttpHandler
 {
     public void ProcessRequest(HttpContext context)
     {

         HttpResponse r = context.Response;
         r.ContentType = "text/xml";

         string requestedFile = context.Request.QueryString["file"];

         //ensure you check that the value received on the querystring is valid.
         string xmlFromDatabase = MyDataLayer.GetXmlByFileName(requestedFile);

         //pump the XML back to the caller
         r.Write(xmlFromDatabase);                   
        }

        public bool IsReusable{get{return false;}}
    }

Все файлы не доступны во время выполнения

Если ваш клиент НЕ знаетимена файлов, просто создайте новый метод для этого обработчика.Он может опубликовать список доступных XML-файлов, которые он может обслуживать.

http://foo.com/bar/ListFiles.ashx

 public class ListFiles : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            HttpResponse r = context.Response;
            r.ContentType = "text/plain";

            //grab a listing of all the files from the database
            var listFiles = MyDataLayer.GetAllXmlFilesAvailable();
            foreach (var file in listFile)
            {
                r.Write(file + "|");
            }
        }

            public bool IsReusable{get{return false;}}
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...