Веб-сервис WCF с функциональностью на основе URI/URL

У меня есть служба WCF, над которой я работаю, которая заменяет старый хостинг API CMS.

Для каждого клиентского сайта в старой системе / базе данных это работает так:

clientdomain.com извлекает свое содержимое (XML) из URL-адреса hostingdomain.com/clientdomain/api.xml (расширение.xml действительно является классической страницей ASP, которая экспортируется в виде XML на основе clientdomain)

Например: clientdomain.com/photos каналы с hostingdomain/clientdomain/photos/api.xml

И тот же файл api.xml используется для всех клиентских доменов, как в hostingdomain /clientdomain2/photos/api.xml и так далее.

Я предполагаю, что в настройке интерфейса, как:

[OperationContract]
        [WebInvoke(Method = "GET",
           ResponseFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Wrapped,
           UriTemplate = "*clientdomain*/photos")]
        //method
        List<APIContentObject> GetPhotosBySiteID();

Можно / как изменить клиентский домен в URITemplate для подачи из списка / массива, полученного из базы данных?... или что-то в этом роде, чтобы он знал, что /client1/photos и /client2/photos доступны как UriTemplates? Или я что-то упустил?... У меня проблемы с этим целым URI/URL в WCF...

Я мог бы сделать это немного по-другому и использовать что-то вроде photos.clientdomain.com и добавить все домены в качестве заголовков узлов и...??.. что-то по этому маршруту? Что бы ни было наилучшей практикой и безопасностью в WCF и прочем джазе.

Цель этого состоит в том, чтобы в конечном итоге мобильные приложения и веб-сайт извлекли из этого WCF. (а также приложение администрирования push / pull, которое будет следовать)

Старая система использовала некоторую хитрость IIS и классические вещицы с ослами, которые довольно интересны, и кое-что я оставляю позади... Итак... есть идеи?

1 ответ

Шаблоны URL могут заполнять параметры в методах вашего операционного контракта. Что-то вроде следующего:

[OperationContract]
        [WebInvoke(Method = "GET",
           ResponseFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Wrapped,
           UriTemplate = "{clientdomain}/photos")]
        //method
           List<APIContentObject> GetPhotos(string clientdomain)
{
    //Look up clientdomain in DB and return the right thing
}
Другие вопросы по тегам