Похоже, вы пишете приложение для 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;}}
}