Tuesday, March 20, 2012

AJAX Renderer

I'm in the process of writing a new renderer for Reporting Services to get
around some of the problems it's main HTML renderer has - fixed headers,
screen flash, losing scroll position on refresh, customisable refresh rate
etc.
Although it's been fun trying to do this with almost no documentation at
all, the project is almost at an end. However, there is one last thing I'd
like to implement to make life a little more efficient. That is to only send
the changes to the client once the original page has been rendered.
Something like Gmail does with it's JavaScript arrays.
My request is for ideas on how I can create diffs from within the renderer.
Do I need to cache the entire report object model until the next update
request or is there some easy field in the model to say "it's changed"? Does
anyone have any other ideas about how I might do this? What is the best way
of identifying an individual client from within the renderer (my only
current idea is to generate a guid or similar and embed that in the initial
rendering)?
Regards,
James SnapeHello James,
This seems to be more related to report execution and cache management
other than a rendering extension. Based on my scope, the report server
makes every attempt to render a report from its cached copy when caching
has been configured for an individual report. There are some cases in
which the report may not be rendered from cache:
Report parameter values do not match the report parameter values that were
used when executing the report stored in cache.
If a report cannot be rendered from a cached copy the report is be executed
against the data source(s).
Cache Invalidation can based on a period of time or schedule. Usually it is
not feaisble to only create changes between different snapshots so that you
could update client with this differences because there is no method to
reference previous snapshot inside renderring extension.
I believe this may require a bit more in depth attention and may fall under
the umbrella of Advisory Services. Microsoft now offers short-term and
proactive assistance for specific planning, design, development or
assistance with installing, deploying, and general "how to" advice via
telephone. For more information:
http://support.microsoft.com/default.aspx?scid=fh;en-us;advisoryservice
Thanks & Regards,
Peter Yang
MCSE2000/2003, MCSA, MCDBA
Microsoft Online Partner Support
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
=====================================================
Business-Critical Phone Support (BCPS) provides you with technical phone
support at no charge during critical LAN outages or "business down"
situations. This benefit is available 24 hours a day, 7 days a week to all
Microsoft technology partners in the United States and Canada.
This and other support options are available here:
BCPS:
https://partner.microsoft.com/US/technicalsupport/supportoverview/40010469
Others: https://partner.microsoft.com/US/technicalsupport/supportoverview/
If you are outside the United States, please visit our International
Support page:
http://support.microsoft.com/default.aspx?scid=%2finternational.aspx.
=====================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
--
| From: "James Snape" <jim_snape.at.hotmail.com@.online.nospam>
| Subject: AJAX Renderer
| Date: Thu, 6 Oct 2005 12:11:52 +0100
| Lines: 23
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
| X-RFC2646: Format=Flowed; Original
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
| Message-ID: <u0LpGbmyFHA.1256@.TK2MSFTNGP09.phx.gbl>
| Newsgroups: microsoft.public.sqlserver.reportingsvcs
| NNTP-Posting-Host: ip-213-92-131-1.aramiska-arc.aramiska.net 213.92.131.1
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.sqlserver.reportingsvcs:53834
| X-Tomcat-NG: microsoft.public.sqlserver.reportingsvcs
|
| I'm in the process of writing a new renderer for Reporting Services to
get
| around some of the problems it's main HTML renderer has - fixed headers,
| screen flash, losing scroll position on refresh, customisable refresh
rate
| etc.
|
| Although it's been fun trying to do this with almost no documentation at
| all, the project is almost at an end. However, there is one last thing
I'd
| like to implement to make life a little more efficient. That is to only
send
| the changes to the client once the original page has been rendered.
| Something like Gmail does with it's JavaScript arrays.
|
| My request is for ideas on how I can create diffs from within the
renderer.
| Do I need to cache the entire report object model until the next update
| request or is there some easy field in the model to say "it's changed"?
Does
| anyone have any other ideas about how I might do this? What is the best
way
| of identifying an individual client from within the renderer (my only
| current idea is to generate a guid or similar and embed that in the
initial
| rendering)?
|
| Regards,
| James Snape
|
|
||||Hi Peter,
I think you have mostly answered my question in that any differences would
have to be calculated by me and that will create a lot of memory pressure to
store pervious versions of the object model for a large number of clients.
One follow up I have is about when a datasource query happens.. There is no
point having a refreshing report if it is going to just render the same data
from a cache every 10 seconds or so. Currently I'm forcing a
ClearSession=true to make sure the data changes. Can you confirm that this
with ensure data sources are requeried? Are there any other side affects
that I should be aware of?
Regards,
James Snape
"Peter Yang [MSFT]" <petery@.online.microsoft.com> wrote in message
news:ETChb%23vyFHA.780@.TK2MSFTNGXA01.phx.gbl...
> Hello James,
> This seems to be more related to report execution and cache management
> other than a rendering extension. Based on my scope, the report server
> makes every attempt to render a report from its cached copy when caching
> has been configured for an individual report. There are some cases in
> which the report may not be rendered from cache:
> Report parameter values do not match the report parameter values that were
> used when executing the report stored in cache.
> If a report cannot be rendered from a cached copy the report is be
> executed
> against the data source(s).
> Cache Invalidation can based on a period of time or schedule. Usually it
> is
> not feaisble to only create changes between different snapshots so that
> you
> could update client with this differences because there is no method to
> reference previous snapshot inside renderring extension.
> I believe this may require a bit more in depth attention and may fall
> under
> the umbrella of Advisory Services. Microsoft now offers short-term and
> proactive assistance for specific planning, design, development or
> assistance with installing, deploying, and general "how to" advice via
> telephone. For more information:
> http://support.microsoft.com/default.aspx?scid=fh;en-us;advisoryservice
> Thanks & Regards,
> Peter Yang
> MCSE2000/2003, MCSA, MCDBA
> Microsoft Online Partner Support
> When responding to posts, please "Reply to Group" via your newsreader so
> that others may learn and benefit from your issue.
> =====================================================> Business-Critical Phone Support (BCPS) provides you with technical phone
> support at no charge during critical LAN outages or "business down"
> situations. This benefit is available 24 hours a day, 7 days a week to all
> Microsoft technology partners in the United States and Canada.
> This and other support options are available here:
> BCPS:
> https://partner.microsoft.com/US/technicalsupport/supportoverview/40010469
> Others: https://partner.microsoft.com/US/technicalsupport/supportoverview/
> If you are outside the United States, please visit our International
> Support page:
> http://support.microsoft.com/default.aspx?scid=%2finternational.aspx.
> =====================================================> This posting is provided "AS IS" with no warranties, and confers no
> rights.
> --
> | From: "James Snape" <jim_snape.at.hotmail.com@.online.nospam>
> | Subject: AJAX Renderer
> | Date: Thu, 6 Oct 2005 12:11:52 +0100
> | Lines: 23
> | X-Priority: 3
> | X-MSMail-Priority: Normal
> | X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
> | X-RFC2646: Format=Flowed; Original
> | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
> | Message-ID: <u0LpGbmyFHA.1256@.TK2MSFTNGP09.phx.gbl>
> | Newsgroups: microsoft.public.sqlserver.reportingsvcs
> | NNTP-Posting-Host: ip-213-92-131-1.aramiska-arc.aramiska.net
> 213.92.131.1
> | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
> | Xref: TK2MSFTNGXA01.phx.gbl
> microsoft.public.sqlserver.reportingsvcs:53834
> | X-Tomcat-NG: microsoft.public.sqlserver.reportingsvcs
> |
> | I'm in the process of writing a new renderer for Reporting Services to
> get
> | around some of the problems it's main HTML renderer has - fixed headers,
> | screen flash, losing scroll position on refresh, customisable refresh
> rate
> | etc.
> |
> | Although it's been fun trying to do this with almost no documentation at
> | all, the project is almost at an end. However, there is one last thing
> I'd
> | like to implement to make life a little more efficient. That is to only
> send
> | the changes to the client once the original page has been rendered.
> | Something like Gmail does with it's JavaScript arrays.
> |
> | My request is for ideas on how I can create diffs from within the
> renderer.
> | Do I need to cache the entire report object model until the next update
> | request or is there some easy field in the model to say "it's changed"?
> Does
> | anyone have any other ideas about how I might do this? What is the best
> way
> | of identifying an individual client from within the renderer (my only
> | current idea is to generate a guid or similar and embed that in the
> initial
> | rendering)?
> |
> | Regards,
> | James Snape
> |
> |
> |
>|||Hello James,
I think it is dependent how the report is configured to execute. By
default, each time a user navigates to a report and selects it for viewing
the report server communicates with and queries the report?s data
source(s), formats the report and renders the report to the specified
format. If the the data within the data source(s) does not change
frequently or if you may want to manage computing resources that are
associated with the execution of a report, you may optionally cache the
report.
Optionally you may configure an individual report to be cached when the
execution of a report is against a live data source(s). If configured to
be cached, when a report is executed for the first time, a copy of the
report (intermediate format) is stored in the cache. Subsequent requests
to the report are served from the cache.
The cached copy of the report may be invalidated based on one of the
following configurable options.
- Cache invalidation based on a period of time expressed in minutes.
- Cache invalidation based on a specific, recurring date and time (Scoped
or Shared Schedule).
Also, a reports cached copy may be invalidated when one of the following
events occur to a report.
- Report Parameters change
- Report Definition changes
- Data Source Credentials change
- Cache Options change
Regards,
Peter Yang
MCSE2000/2003, MCSA, MCDBA
Microsoft Online Partner Support
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
=====================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
| From: "James Snape" <jim_snape.at.hotmail.com@.online.nospam>
| References: <u0LpGbmyFHA.1256@.TK2MSFTNGP09.phx.gbl>
<ETChb#vyFHA.780@.TK2MSFTNGXA01.phx.gbl>
| Subject: Re: AJAX Renderer
| Date: Fri, 7 Oct 2005 09:38:11 +0100
| Lines: 134
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
| X-RFC2646: Format=Flowed; Original
| Message-ID: <eieZ5pxyFHA.2312@.TK2MSFTNGP14.phx.gbl>
| Newsgroups: microsoft.public.sqlserver.reportingsvcs
| NNTP-Posting-Host: ip-213-92-131-1.aramiska-arc.aramiska.net 213.92.131.1
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl microsoft.public.sqlserver.reportingsvcs:53920
| X-Tomcat-NG: microsoft.public.sqlserver.reportingsvcs
|
| Hi Peter,
|
| I think you have mostly answered my question in that any differences
would
| have to be calculated by me and that will create a lot of memory pressure
to
| store pervious versions of the object model for a large number of clients.
|
| One follow up I have is about when a datasource query happens.. There is
no
| point having a refreshing report if it is going to just render the same
data
| from a cache every 10 seconds or so. Currently I'm forcing a
| ClearSession=true to make sure the data changes. Can you confirm that
this
| with ensure data sources are requeried? Are there any other side affects
| that I should be aware of?
|
| Regards,
| James Snape
|
| "Peter Yang [MSFT]" <petery@.online.microsoft.com> wrote in message
| news:ETChb%23vyFHA.780@.TK2MSFTNGXA01.phx.gbl...
| > Hello James,
| >
| > This seems to be more related to report execution and cache management
| > other than a rendering extension. Based on my scope, the report server
| > makes every attempt to render a report from its cached copy when caching
| > has been configured for an individual report. There are some cases in
| > which the report may not be rendered from cache:
| > Report parameter values do not match the report parameter values that
were
| > used when executing the report stored in cache.
| >
| > If a report cannot be rendered from a cached copy the report is be
| > executed
| > against the data source(s).
| >
| > Cache Invalidation can based on a period of time or schedule. Usually
it
| > is
| > not feaisble to only create changes between different snapshots so that
| > you
| > could update client with this differences because there is no method to
| > reference previous snapshot inside renderring extension.
| >
| > I believe this may require a bit more in depth attention and may fall
| > under
| > the umbrella of Advisory Services. Microsoft now offers short-term and
| > proactive assistance for specific planning, design, development or
| > assistance with installing, deploying, and general "how to" advice via
| > telephone. For more information:
| >
| > http://support.microsoft.com/default.aspx?scid=fh;en-us;advisoryservice
| >
| > Thanks & Regards,
| >
| > Peter Yang
| > MCSE2000/2003, MCSA, MCDBA
| > Microsoft Online Partner Support
| >
| > When responding to posts, please "Reply to Group" via your newsreader so
| > that others may learn and benefit from your issue.
| >
| > =====================================================| >
| > Business-Critical Phone Support (BCPS) provides you with technical phone
| > support at no charge during critical LAN outages or "business down"
| > situations. This benefit is available 24 hours a day, 7 days a week to
all
| > Microsoft technology partners in the United States and Canada.
| >
| > This and other support options are available here:
| >
| > BCPS:
| >
https://partner.microsoft.com/US/technicalsupport/supportoverview/40010469
| >
| > Others:
https://partner.microsoft.com/US/technicalsupport/supportoverview/
| >
| > If you are outside the United States, please visit our International
| > Support page:
| > http://support.microsoft.com/default.aspx?scid=%2finternational.aspx.
| >
| > =====================================================| >
| > This posting is provided "AS IS" with no warranties, and confers no
| > rights.
| >
| > --
| > | From: "James Snape" <jim_snape.at.hotmail.com@.online.nospam>
| > | Subject: AJAX Renderer
| > | Date: Thu, 6 Oct 2005 12:11:52 +0100
| > | Lines: 23
| > | X-Priority: 3
| > | X-MSMail-Priority: Normal
| > | X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
| > | X-RFC2646: Format=Flowed; Original
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
| > | Message-ID: <u0LpGbmyFHA.1256@.TK2MSFTNGP09.phx.gbl>
| > | Newsgroups: microsoft.public.sqlserver.reportingsvcs
| > | NNTP-Posting-Host: ip-213-92-131-1.aramiska-arc.aramiska.net
| > 213.92.131.1
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.sqlserver.reportingsvcs:53834
| > | X-Tomcat-NG: microsoft.public.sqlserver.reportingsvcs
| > |
| > | I'm in the process of writing a new renderer for Reporting Services to
| > get
| > | around some of the problems it's main HTML renderer has - fixed
headers,
| > | screen flash, losing scroll position on refresh, customisable refresh
| > rate
| > | etc.
| > |
| > | Although it's been fun trying to do this with almost no documentation
at
| > | all, the project is almost at an end. However, there is one last thing
| > I'd
| > | like to implement to make life a little more efficient. That is to
only
| > send
| > | the changes to the client once the original page has been rendered.
| > | Something like Gmail does with it's JavaScript arrays.
| > |
| > | My request is for ideas on how I can create diffs from within the
| > renderer.
| > | Do I need to cache the entire report object model until the next
update
| > | request or is there some easy field in the model to say "it's
changed"?
| > Does
| > | anyone have any other ideas about how I might do this? What is the
best
| > way
| > | of identifying an individual client from within the renderer (my only
| > | current idea is to generate a guid or similar and embed that in the
| > initial
| > | rendering)?
| > |
| > | Regards,
| > | James Snape
| > |
| > |
| > |
| >
|
|
|

No comments:

Post a Comment