Silverlight Cross - Зона доступа к WCF - PullRequest
0 голосов
/ 23 июля 2010

Мне нужно предоставить WCF-сервис localhost (self-hosted) для приложения Silverlight.Эта служба будет предоставлять все виды локальных функций (устаревшие, но и доступ к современным аппаратным устройствам) для приложения Silverlight.

Представьте себе следующую ситуацию:

Клиенту необходимо использовать POS-принтерыв родном режиме, но приложение должно быть Silverlight (это является частью требования, его нельзя обсуждать и / или изменять - и для этого есть очень веские причины!).

Итак, я создалclientaccesspolicy.xml, а также crossdomain.xml, но теперь я обнаружил, что так называемые «межзонные» вызовы недопустимы.

SL-приложение будет размещено на серверной ферме (котораяявно не в той же зоне, что и "localhost"), хотя сама служба должна абсолютно запускаться на localhost.

Есть ли ЛЮБОЙ способ мотивировать Silverlight, чтобы я мог вызывать службу на localhost из приложения, котороенаходится в интернете?

1 Ответ

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

Пожалуйста, посмотрите на следующий проект VS:

http://cid -a971dd3af5c625e1.office.live.com / browse.aspx / .Public / SL% 5E_DirectPrinting

Это было просто глупое подтверждение концепции, когда у SL не было возможности печати. ​​

Silverlight 4 имеет возможность печати и может также использовать com-взаимодействие.

COM-взаимодействие - только для Windows, и я верю, что это само хостинг wcf, так как для этого требуется полная .NET Framework.

Для самостоятельного хостинга ключ должен быть в состоянии обслуживать clientaccesspolicy.xml.

Ссылка содержит zip-файл с решением VS2008.

Сжатый файл содержит 3 проекта:

• HostGateway.Win - приложение Windows Form, предоставляющее службы для печати и обслуживания файла политики клиентского доступа. • HostGateway.SL / SL.Web - простое приложение Silverlight для проверки всей идеи.

Некоторая информация о проекте HostGateway.Win: - Printer.cs Класс, отвечающий за фактическую печать. Действительно простые вещи прямо с сайта MSDN. - PolicyRetriever.cs Служба, предоставляющая файл clientaccesspolicy.xml. - Содержимое clientaccesspolicy.xml хранится как ресурс. - PrinterGateway.cs Сервис, который занимается запросами на печать. - Form1.cs Форма, в которой размещаются службы WCF.

Обе службы настроены только по коду.

И немного информации о проекте HostGateway.SL: - Содержит сервисную ссылку на сервис PrinterGateway. - MainPage использует службы, также настроенные только по коду.

Для тестирования приложения вам необходимо:

  • Установить принтер по умолчанию;
  • Запустите приложение HostGateway.Win;
  • Запустите приложение Silverlight;
  • Введите что-нибудь в тексте;
  • Нажмите кнопку «Печать»;
  • Подождите с тревогой, чтобы увидеть, печатает ли принтер.

Если вы решили проверить это, убедитесь, что приложение win запущено, прежде чем пытаться с ним поговорить.

Если запрос файла политики завершится неудачно, Silverlight не будет пытаться снова. Это означает, что для получения SL для повторного подключения к услуге приложение SL необходимо перезапустить.

Надеюсь, это поможет.

Следующие ссылки содержат информацию о самостоятельном хостинге:

http://blogs.msdn.com/b/carlosfigueira/archive/2008/03/07/enabling-cross-domain-calls-for-silverlight-apps-on-self-hosted-web-services.aspx http://www.code -magazine.com / article.aspx? Quickid = 0701041 & страница = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...