Pergunta

Estarei construindo um aplicativo interno ocasionalmente conectado (OCA).Quais tecnologias você sugeriria que eu empregasse.

Aqui estão meus parâmetros:

  1. Loja .NET (3.5sp1)
  2. C# para código por trás (winform,wpf,silverlight)
  3. Back-end do SQL Server (2005 ou possivelmente 2008 aguardando aprovação)
  4. Desenvolvedor individual
  5. Administrador Solo SQL
  6. Usuários finais de baixa tecnologia
  7. Baixa largura de banda para 5 filiais
  8. Este é um aplicativo LOB, mas não um PDV.
  9. A maioria dos utilizadores tem computadores portáteis que levam para a Casa dos Membros
  10. Os dados deste aplicativo são armazenados em 5 bancos de dados separados, embora em uma instância SQL.

Estou procurando recomendações específicas sobre qual caminho escolher.Mesclar provedores de sincronização de banco de dados de replicação ou Sync Framework?SQL Express ou SQL CE no Assinante?Posso usar LINQ to SQL para o DAL?

É um aplicativo Silverlight 'off-line/fora do navegador' Exemplo aqui, viável?

Este é meu primeiro aplicativo de GRANDE negócio, portanto, quaisquer comentários experientes são bem-vindos.


Conforme solicitado, aqui estão algumas informações adicionais sobre o tipo de dados.Meus usuários são Enfermeiros e Assistentes Sociais que vão às casas dos Membros e criam “Planos” ou “Revisões de Avaliação de Saúde” para eles.São coisas como uma lista de medicamentos ou uma lista dos "provedores" atuais.Passos para atingir os objetivos dos membros ou uma lista de diagnósticos atuais/passados.Coisas assim.

Além disso, o nome, endereço, número de telefone típico dos membros, etc.Principalmente, este é um aplicativo de armazenamento e recuperação de dados que facilita a geração de relatórios.Muito pouco “processamento” ocorre e Enfermeiros e Assistentes Sociais trabalham em equipes com membros designados, então geralmente tenho muito pouco cruzamento ou possíveis conflitos de dados.Enfermeiros e TS também são responsáveis ​​por diversas áreas do MCP(Plano Centrado no Membro)


Pergunta adicional;O Sync Framework é realmente apenas uma opção viável se eu puder usar o SQL 2008?Parece que sim devido aos pensamentos de controle de alterações, etc.?

Foi útil?

Solução

Depois de resolver o problema de detecção de alterações e movimentação de dados, todo o resto é trivial.Em outras palavras, tecnologias como WPF, Silverlight, Forms e até mesmo WCF são ortogonais ao seu problema principal e sua escolha deve ser baseada em suas preferências e experiências pessoais.O verdadeiro problema é trabalhar desconectado e sincronizar as mudanças.O que deixa dois caminhos prontos para uso:Estrutura de sincronização ou replicação.

Eu diria que, para o seu cenário, definitivamente Estrutura de sincronização.A replicação de mesclagem, como todas as formas de replicação, foi projetada para sistemas conectados continuamente com desconexões intermitentes.E o mais importante é que a replicação só pode funcionar com nomes estáticos.Laptops conectados a vários pontos de acesso e ISPs têm o péssimo hábito de alterar nomes de FQ a cada conexão.A replicação só pode superar isso se um tipo de VPN for usado e a VPN geralmente é um grande problema de suporte.A replicação simplesmente não foi projetada para a alta mobilidade dos sistemas OCA.

O Synch Framework irá forçá-lo a usar o back-end do SQL 2008 devido à necessidade de Alterar captura de dados ou Acompanhamento de alterações, ambos sendo recursos exclusivos do SQL 2008.

Você ainda terá muitos problemas difíceis para resolver (autenticação, controle de versão e atualização, políticas de resolução de conflitos de dados, proteção de dados no cliente contra perda acidental de mídia, etc.)

Outras dicas

Pessoalmente, eu diria:

  • .NET 3.5
  • WCF Data Services (para comunicação entre o aplicativo cliente e seus dados)
  • SQL Server 2k5/2k8 (o que você puder usar)
  • Silverlight com funcionalidade fora do navegador
  • VistaDB (para armazenar dados localmente no cliente até que você possa enviar para o servidor)

usar identificador único para a chave se você estiver criando coisas offline e não conectado e quando você se conectar, atualizando o banco de dados.

isso será muito mais fácil do que usar a tecla de incremento automático

Tendo trabalhado em um aplicativo conectado ocasionalmente, recomendo que você procure no SQL Server CE as máquinas clientes, com o Sync Services para lidar com as conexões. Aqui está um bom tutorial.

Você poderia criar essas coisas do zero, ao que parece.

No entanto, isso se parece muito com um aplicativo de CRM, e não me surpreenderia se você pudesse encontrar um pacote de software empresarial para fazer isso sem começar do zero e, em vez disso, modificar uma das configurações para atender às suas regras de negócios.

Em uma vida anterior, fui desenvolvedor de configuração para uma coisa chamada Siebel isso pode estar próximo do que você está procurando.Eles ainda têm uma ferramenta de sincronização integrada chamada Siebel Remote.

Pode ser um caminho mais barato do que criar o seu próprio do zero.

Escrevi um programa de recebimento de pedidos para representantes de vendas de vinhos. Aqui está o vídeo. O software cliente é instalado usando um clique.Isso também instala o SQL Server Express e carrega o banco de dados.Usei o Microsoft Sync Framework para sincronizar o banco de dados local com o do servidor (veja a última seção do vídeo).

  • Com clientes poderosos agora não vejo razão para não usar o SQL Server Express, ele é gratuito com limite de 4GB.

  • O SQL CE tinha muitas limitações - nenhum processo armazenado era o principal.

  • Você precisará usar GUIDs em todos os lugares como chave primária - veja o novo NewSequentialID().

  • Adoro clicar uma vez, pois economiza muito tempo.

Estou ansioso pelo Silverlight, mas ainda não tive tempo de dar uma olhada nele.Não tenho certeza se eu teria feito isso com o Silverlight se fizesse agora ou não.

Dito tudo isto, este não é um projeto para alguém inexperiente.Então, eu também receberia ajuda muito experiente.

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