Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    DataSet in cookies: e' possibile?

    Scusate la domanda, e' possibile mettere un DataSet in un Cookie?
    so che e' possibile con ViewState(ma non mi regge nelle altre pagine) e Session( ma ho il divieto di usarle).
    Qualcuno sa come fare?
    Grazie!
    We live thinking we will never die.
    We die thinking we had never lived.

  2. #2
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Sì è possibile, ma è fortemente sconsigliato.
    • i cookies non sono nati per la persistenza di dati
    • hanno un limite di 4Kb che con un DataSet raggiungeresti molto presto
    • fondamentalmente è un errore portare dati applicativi (da non mostrare) sul client


    E' vero che possibile con il ViewState, ma anche lì non sarebbe molto corretto persistere il DataSet e può portare a problemi sempre nel caso di dati superiori ai 4Kb.

    Il modo più corretto è gestire in Session o, se non puoi, gestire out-of-proc sempre con Session configurata appositamente o con un tuo meccanismo (ad esempio persisti su file system o su db)
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  3. #3
    Purtroppo il mio compito e' proprio quello di riconvertire le Session esistenti in qualcosa che non sia Session (il sito andra' su tre server diversi quindi le Session potrebbero non funzionare).
    Sai per caso un modo come salvarmi il DataSet per le pagine successive?
    Si tratta di fare la versione stampabile di un Datalist (generato dinamicamente).
    Ho provato anche salvando il dataset in Cache, ma con scarsi risultati (es se provo per a "sortare" la lista nella versione stampabile ho sempre i risultati della prima pagina non sortata).
    We live thinking we will never die.
    We die thinking we had never lived.

  4. #4
    Ciao perchè non metti i tuoi dataset in file xml?
    Oppure già che stiamo parlando di persistenza dati.. perchè non provi nHibernate?

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    o una serializzazione ???

  6. #6
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Il modo più corretto di gestire una Session in ambiente multi-server è gestirla out-of-proc, tramite i meccanismi che già ti offre il framework e abilitabili da web.config (State Server, Sql Server) oppure con un meccanismo di persistenza custom. Sicuramente c'è una crescita di overhead e le performance decadono rispetto alla gestione in-proc.
    Una soluzione che a volte ho adottato è persistere nel ViewState, facendo attenzione che nel caso di criptazione gli attributi machineKey nel machine.config di tutti i server devono coincidere e che potrebbero esserci proxy/firewall che tagliano il ViewState se > 5Kb. Qui appesantisci il client e il traffico di rete aumenta, ma se sei in ambiente intranet e sai che il problema del "taglio" non accadrà è probabilmente la soluzione più scalabile evitando la Session.

    NHibernate ha un impatto molto forte in fase di progettazione e non può essere inserito facilmente in fase successiva; oltretutto non è un layer che si occupa di persistenza: c'è NPersist per questo, ma non risolverebbe il suo problema di _dove_ persistere.
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  7. #7
    Quindi tu pensi che basta lasciare le Sessions al loro posto e impostare nel web.config <sessionstate mode="SQLServer" ... ?
    Devo creare una tabella particolare in questo modo o fa tutto da solo?

    Poi, scusa l'ignoranza, cosa sono NPersist e NHibernate?

    Grazie ancora!
    We live thinking we will never die.
    We die thinking we had never lived.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    1,482
    codice:
    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
    Ovviamente sostituisci l'indirizzo IP con quello della macchine dove verranno gestite le sessioni. In questa macchina deve essere attivo il servizio "asp.net state service".

    Hey hey, my my Rock and roll can never die!

  9. #9
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Per gestirla su SQL Server ti basta lanciare sul DB server lo script InstallPersistSqlState.sql che trovi nella directory del framework e che provvederà a crearti tutte le tabelle necessarie. A questo punto tutti i web.config devono puntare a quel server.
    Stesso discorso se vuoi gestirlo tramite StateServer, ma anzichè creare tabelle dovrai abilitare il servizio Windows sul server che manterrà le sessioni (sarà uno solo e tutti punteranno a quello).
    In entrambi questi casi il tuo codice non cambia di una virgola: valorizzi e recuperi sempre utilizzando l'oggetto Session, attenzione però che ora tutto quello potrai mettere in Session dovrà essere serializzabile (la classe deve essere marcata Serializable).

    NPersist e NHibernate sono progetti open source che si occupano di ORM (Object Relational Mapping) e persistenza, sono validi progetti, ma non credo che ti possano essere utili in questo caso.
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  10. #10
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Ecco un paio di link dalla KB:
    "INFO: Cenni preliminari sulla gestione dello stato ASP.NET"
    http://support.microsoft.com/?scid=k...07598&x=10&y=9

    "COME A Configura ASP.NET per gestire stato sessione permanente di SQL Server"
    http://support.microsoft.com/?scid=k...1209&x=20&y=16
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.