Совместное использование сессии между сервисами WCF

Как обсуждалось в комментариях, расширение gettext опирается на стандартные спецификаторы локали, содержащие код языка и региона, то есть ja_JP для «японского языка в Японии» или с указанной кодировкой ja_JP.utf-8. Даже если есть псевдоним, такой как japanese, реализация gettext на PHP не принимает это. Обратите внимание, что языковой стандарт должен быть установлен и настроен в вашей системе.

Спецификаторы языка и региона можно найти в language-subtag-registry IANA

Этот код уже должен работать для японского языка:

$dir     = 

Как обсуждалось в комментариях, расширение gettext опирается на стандартные спецификаторы локали, содержащие код языка и региона, то есть ja_JP для «японского языка в Японии» или с указанной кодировкой ja_JP.utf-8. Даже если есть псевдоним, такой как japanese, реализация gettext на PHP не принимает это. Обратите внимание, что языковой стандарт должен быть установлен и настроен в вашей системе.

Спецификаторы языка и региона можно найти в language-subtag-registry IANA

Этот код уже должен работать для японского языка:

[110]

Не забудьте также переименуйте ваш каталог в locale/ja_JP.utf8. Убедитесь, что ваши файлы .po хранятся в правильной кодировке, т.е. в этом примере UTF-8, и содержат строку

"Content-Type: text/plain; charset=UTF-8\n"

(как вы уже сделали).

SERVER['DOCUMENT_ROOT'] . '/locale'; $domain = 'messages'; $locale = 'ja_JP.utf8'; $codeset = 'UTF-8'; setlocale( LC_MESSAGES, $locale); bindtextdomain($domain, $dir); textdomain($domain); bind_textdomain_codeset($domain, $codeset);

Не забудьте также переименуйте ваш каталог в locale/ja_JP.utf8. Убедитесь, что ваши файлы .po хранятся в правильной кодировке, т.е. в этом примере UTF-8, и содержат строку

"Content-Type: text/plain; charset=UTF-8\n"

(как вы уже сделали).

8
задан Arun 11 November 2008 в 14:17
поделиться

5 ответов

Я думаю, что контекст экземпляра, совместно использующий, может помочь

http://msdn.microsoft.com/en-us/library/aa354514.aspx

3
ответ дан 5 December 2019 в 22:21
поделиться

Возможно, можно перенести этот объект в одноэлементный сервис. Это - сервис только с одним экземпляром, который не будет уничтожен между вызовами. Поскольку Вам нужен объект для каждого пользователя, этот сервис должен управлять списком их, и услуги по вызову должен обеспечить необходимые данные аутентификации (или sessionid). Не забывайте тайм-аут для избавлений от ненужных объектов...

1
ответ дан 5 December 2019 в 22:21
поделиться

Разбивание вещей на подслужбы походит на хорошую идею, если Вы хотите смочь распространить приложение по ферме. Однако важно иметь в виду, что каждый раз, когда объект пересекает appdomain границу при варьировании меньше всего, это должно будет быть скопировано в памяти.

Все это зависит от того, насколько большой объект и какие данные это содержит.

Если Вы не хотите передавать объект, потому что это является слишком большим, можно хотеть сделать запрос API для сервиса, который получает его. Таким образом Вы могли управлять тем объектом, не имея необходимость делать дорогую сериализацию или дистанционную работу.

0
ответ дан 5 December 2019 в 22:21
поделиться

Создайте сервис фасада, который размещает большой объект CLR от имени других сервисов уровня приложений. Это может работать адаптером, позволяя более определенные идентификаторы сессии более усовершенствованным сервисам уровня приложений, которые Вы создали. Фасад может обеспечить идентификатор сессии, как GUID, который Ваши сервисы уровня приложений могут использовать, чтобы быть повторно подключенными с большим объектом CLR.

Это обеспечивает несколько преимуществ:

  1. Часть Вашего уровня приложений, возможно, не должна была бы знать об объекте CLR вообще. Они только общаются с удаленным фасадом.

  2. 'большой хост' объекта CLR сохраняет объект сессии от имени других сервисов, которые могут теперь совместно использовать его.

  3. Уровни приложений теперь имеют фасад, через который они говорят с сервисом прежней версии. Поскольку Вы работаете для рефакторинга этого сервиса прежней версии, уровень приложений не должен изменяться.

В зависимости от Вашей установки Вы можете размещать фасад через в хостинге proc, который даст, сохраняют повышение производительности, которое Вы ищете.

1
ответ дан 5 December 2019 в 22:21
поделиться

Насколько я понимаю WCF, он разработан, чтобы быть столь не сохраняющим состояние, как это могло быть. На сессии можно помнить некоторые значения в сервисе, но объекты не предназначены для проживания вне объема сессии.

Поэтому я думал бы, что Вы в беде.

Конечно, мог бы быть некоторый способ сохранить и обмениваться объектами между сессиями, которые я не знаю (я использую WCF, но я не знаю очень много об этом, кроме того, в чем я нуждаюсь для меня).

(если бы существует способ совместно использовать объекты между сервисами, он, вероятно, только работал бы над сервисами, которые Вы размещаете сами. Хостинг IIS мог бы иногда перерабатывать Ваш сервис),

1
ответ дан 5 December 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: