Pergunta

A razão de eu perguntar isso é recentlydesigned um aplicativo, inicialmente queria usar nenhum estado sessão para manter as coisas simples, mas acabou sucumbindo à facilidade da idéia de estado de sessão para armazenar estado. Eu estava ciente de que a mudança para uma solução web farm envolveria configurar o estado da sessão para ser executado em sql. No entanto eu nunca tinha corrido em qualquer informação que explica serialização seria necessário. Então, não, eu necessidade de código de refatoração para alcançar este objectivo.

Além disso, eu uso o LINQ to SQL para me dar objetos de dados. Idealmente, isso seria fácil de serialise, mas não parece para a frente.

Eu pesquisei e fazendo isso deve estar ok. A questão não é a forma de serialização a classe de dados linq mas sim:

É o estado da sessão o caminho a seguir, em particular na concepção de aplicações escaláveis ??em uma fazenda web, devemos usar outros métodos, o que é recomendado ao usar linq para acesso a dados, devemos usar string query etc.

Graças

Foi útil?

Solução

Há toneladas (realmente) maneiras de fazer isso

O armazenamento de estado de sessão é um requisito básico para muitos web-fazendas / apps. Você pode usar LINQ-> SQL para armazená-lo em um banco de dados ou você poderia usar-arquivos simples em uma SAN. Realmente não importa (que não forma um ponto de vista de desempenho) desde que tenha algum método para serialize de formato de armazenamento para o formato língua nativa.

No PHP o manipulador de sessão mapeia para uma tabela sessão como strings. Em Python você pode marshall um objeto para uma string e armazenar isso.

Eu recomendaria um backend SQL acessada de qualquer forma, porque RDBMS são projetados para acesso simultâneo, assim você não precisa se preocupar com bloqueio e assim por diante. E ele escalas, bem como o RDBMS

Você poderia usar algo como SQL Alchemy

Session = sqlalchemy.orm.sessionmaker() session = Session()

De http://www.darrellhawley.com/2009/01/ sql-alquimia-ORM-basics.html

Ou aqui

http://idunno.org/articles/277.aspx

Ou este HOWTO da Microsoft chamado "COMO: Configurar o SQL Server para armazenar ASP.NET Session State" poderia ajudar

http://support.microsoft.com/kb/317604

Que prevê

<sessionState 
    mode="SQLServer"
    sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
    cookieless="false" 
        timeout="20" 
/>

Sem olhar para as suas necessidades de aplicativos, em seguida, determinar se as sessões de estado é necessário é impossível. Mas no final do dia, o estado é o estado, e os requisitos de acesso a esse estado (leia-pesado, gravação pesado, grande, pequeno, qualquer que seja) determinar como você armazenar esse e em que formato.

Gostaria de recomendar ou um mapeamento ORM entre um hashmap-como objeto a uma tabela SQL ou serialização de um hashmap tal que

session = load_from_sql(session_id)
someval = session['var']

Mantendo valores como strings ou objetos nativos depende da ORM você selecionar, como é fácil de sua linguagem e assim por diante. Desempenho também é um fator, bem como a pegada de banco de dados. Você pode achar que é mais simples de armazenar cadeias de variáveis ??simples e desempacotar-on-demand. Você pode armazenar tipos JSON e, em seguida, convertê-los para nativa.

Um monte de considerar ...

SQL é provavelmente mais simples, seja ORM-> session_object ou um monte de tuplas mapeados para um hashtable.

Good Luck

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top