Jump to content

[Resolvido] - Armazenar registos resultantes de invocação WebService


Recommended Posts

Posted

Viva!

Neste momento, estou a desenvolver uma aplicação que recorre a WebServices para obter informação externa. Depois de fazer o parsing do XML retornado pela invocação do WebService, utilizo as propriedades a seguir apresentadas da classe DataSet para "mapear" o XML numa classe DataTable:

DataSet ds1 = new DataSet();
ds1.ReadXml(new StringReader(xmlDoc.OuterXml));
DataTable dt1 = new DataTable();
dt1 = ds1.Tables["Tabela"];

Alguns dos pedidos realizados, podem retornar mais do que um registo (falando em termos de Rows da DataTable) mas apenas pretendo apresentar a informação relativa a um único registo de cada vez. No entanto, o utilizador pode pedir o registo seguinte (caso exista) e é aí que reside a minha dúvida:  como posso armazenar a informação obtida no primeiro pedido (retorna todos os registos) para assim não ter que efectuar um novo pedido ao servidor de WebServices? De salientar que não estou a utilizar controlos de DataBinding para apresentar a informação.

Grato desde já pela ajuda,

Cumps!

🙂

Posted

Viva!

Sim, já tinha pensado numa solução semelhante. No entanto, depois dos dados terem sido enviados para o cliente, segundo sei, o garbage collector liberta todos os recursos reservados dinamicamente. Sendo assim, caso pretende-se obter o próximo registo da DataTable através de um Web Control que gerasse um postback (por exemplo, ASP Button), isso não seria possível, já que os dados não estariam em memória.

Estou enganado?

Cumps!

🙂

Posted

Queres guardar a DataTable e mostrar no cliente um registo de cada vez, e só mostrar o proximo se for feito um postback, é isso?

Se for esse o caso podes fazer um dos seguintes:

- Guardar a DataTable em Viewstate, se a DT for mto grande o carregamento da página fica mais lento.

- Guardar a DataTable em Sessão, se a DT for mto grande e tiveres mta gente a aceder ao mm tempo arriscas-te a esgotar a memória ao servidor.

- Guardar a DataTable em Cache, este caso deves usar se a DT for igual para todos os utilizadores.

- Ir á bd buscar registo a registo e não guardar DataTable, este caso deves usar qd o tamanho da DataTable for demasiado grande para os 2 primeiros casos, no entanto ainda podes recorrer á paginação.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

  • 3 weeks later...
Posted

Viva!

Já encontrei uma solução para o problema; peço desculpa pela resposta tardia. Depois de analisado o caso, foi concluído o número de registos nunca seria muito grande, tendo por base uma análise comparativa com as restantes componentes da aplicação. Sendo assim, optei por enviar todos os registos para o cliente (browser) e controlar ai a sua visibilidade, apenas mostrando um registo de cada vez.

Grato desde já pela ajuda,

Cumps!

🙂

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.