powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Кэширование данных в службе WCF
3 сообщений из 3, страница 1 из 1
Кэширование данных в службе WCF
    #38012427
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть потребность использовать службу WCF для обращения к данным с сервера.
Такая ситуация: есть данные, которые часто обновляются. Есть множество пользователей, которые в одно и то же время просматривают эти данные. На сегодняшний момент организовано так, что каждый клиент посылает SQL запрос на сервер с периодичностью 10 секунд, и индивидуально получает данные. В результате множественности пользователей, сервер вынужден открывать/закрывать множество соединений для каждого, и выполнять запросы уже не раз в 10 секунд, а чаще.

Есть такая задумка, чтобы создать службу, которая раз в 10 секунд запрашивает новые данные с сервера, а затем, в течении 10 секунд, хранит их у себя в памяти. Пользователи же обращаются непосредственно к службе, к её кэшированным данным. Теперь уже для сервера не важно, как часто проходят запросы пользователей. Его дело 1 раз в 10 сек. отдавать данные службе, а служба в уже сама разбирается с пользователями, хоть 100 раз в секунду они будут обращаться.

Я создала по примеру из MSDN такую службу с организацией кэша на 10 секунд. Там есть один лишь метод - infoplus_val(), который призван отсылать пользователю текущее время.
Я так понимаю, при правильной организации кэширования, при первом запросе пользователя он должен выдавать текущее время и сохранять их к себе в память на 10 секунд, а при втором запросе пользователя - например, он посылает запрос через 2 секунды - он должен не текущее время ему возвращать, а сохраненное в кэше. И лишь по прошествии 10 секунд он должен вернуть обновлённые данные. Но почему-то, у меня он обновляет время всякий раз, когда посылаю ему запрос, не ждет 10 секунд. Почему так? Может, я что-то неправильно сделала? Может, не понимаю какой-нибудь простой истины? Подскажите, пожалуйста..

Вот интерфейс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
using System.ServiceModel;
namespace WCF_Refrence
{
    [ServiceContract]     
    public interface IService_Infoplus
    {        
        [OperationContract]
        string infoplus_val();
    }   
}



Вот .svc
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
namespace WCF_Refrence
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class Service1 : IService_Infoplus
    {
        [WebGet(UriTemplate = "{id}")]
        [AspNetCacheProfile("CacheFor10Seconds")]
        public string infoplus_val()
        {
            return System.DateTime.Now.ToLongTimeString();
        }       
    }
}



Вот web-config
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
<?xml version="1.0"?>
<configuration>
	<appSettings/>
	<connectionStrings>
		<add name="connectString" connectionString="DSN=CIS" providerName="System.Data.Odbc"/>
	</connectionStrings>
	<system.web>
  
        <caching>
          <outputCacheSettings>
            <outputCacheProfiles>
              <add name="CacheFor10Seconds" duration="60" varyByParam="format" />
            </outputCacheProfiles>
          </outputCacheSettings>
        </caching>    
    
    <compilation debug="true" targetFramework="4.0"/>
		<!--
        Раздел <authentication> включает конфигурацию 
        режима проверки подлинности системы безопасности, используемую 
        в ASP.NET, которая позволяет идентифицировать входящего пользователя. 
    -->
		<authentication mode="Windows"/>
		<!--
        Раздел <customErrors> включает конфигурацию, 
        отвечающую за действия, предпринимаемые при возникновении необрабатываемых ошибок 
        во время выполнения запроса. В частности, 
        он позволяет разработчикам настраивать HTML-страницы ошибок, 
        которые будут отображаться вместо трассировки стека ошибок.

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
         <error statusCode="403" redirect="NoAccess.htm" />
         <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
    -->
		<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></system.web>
	<!-- 
      Раздел system.webServer требуется для запуска ASP.NET AJAX из Интернета
      служб IIS 7.0.  Этот раздел необязателен для предыдущей версии IIS.
  -->
	<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <services>
			<service behaviorConfiguration="WCF_Refrence.Service1Behavior" name="WCF_Refrence.Service1">
				<endpoint address="" binding="wsHttpBinding" contract="WCF_Refrence.IService_Infoplus">
					<identity>
						<dns value="localhost"/>
					</identity>
				</endpoint>
				<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
			</service>
		</services>
		<behaviors>
			<serviceBehaviors>
				<behavior name="WCF_Refrence.Service1Behavior">
					<!-- Чтобы избежать раскрытия сведений о метаданных, присвойте приведенному ниже параметру значение false и удалите конечную точку метаданных перед развертыванием -->
					<serviceMetadata httpGetEnabled="true"/>
					<!-- Чтобы при сбое получать подробные сведения об исключении для целей отладки, установите для нижеприведенного параметра значение true.  Перед развертыванием установите значение false, чтобы избежать раскрытия информации об исключении -->
					<serviceDebug includeExceptionDetailInFaults="false"/>
				</behavior>
			</serviceBehaviors>
		</behaviors>
	</system.serviceModel>
</configuration>
...
Рейтинг: 0 / 0
Кэширование данных в службе WCF
    #38019531
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема не решена еще. Помощь актуальна
...
Рейтинг: 0 / 0
Кэширование данных в службе WCF
    #38019904
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild Wolf,

по моему чего-то пропущено в конфиге. внимательнее посмотреть надо тынц
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Кэширование данных в службе WCF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]