Fórum Dúvida com Sistema .NET que trabalha com XML e WebService #2950
19/02/2009
0
Fernando Reis
Curtir tópico
+ 0Posts
20/02/2009
Fernando Reis
Gostei + 0
27/02/2009
Devmedia
seu chamado está em análise, em breve o consultor irá respondê-lo.
obrigado por sua compreensão
Gostei + 0
27/02/2009
[devmedia .net]
segue abaixo as respostas para as mesmas.
Necessidades:
a) Aplicativo desktop instalado um cada máquina de usuários:
- Windows Application
b) Inserção, Deleção e Atualização dos registros.
- Utilização de uma classe de acesso a dados com os métodos CRUD ( create, Retrieve, Update e Delete)
c) Cadastro de Empresa, Contatos e Projetos ( Venda de Serviços)
- Formulários de cadastro utilizando a classe de acesso a dados
d) Uma base Central SQL Server que faça a Integração de todos os dados de cada Aplicativo instalado.
- Sql server 2005 express e muto fácil fazer a integração dos dados por ele e é gratuito Veja essa aula -> https://www.devmedia.com.br/articles/viewcomp.asp?comp=7116
Video Aula sobre divisão de aplicação em camadas, nessa aula eu ensino como fazer uma classe de acesso a dados, negócio e interface que pode web ou windows.
Caso não tenha acesso a aula, por favor me informe para que possamos lhe dar acesso gratuito a mesma. Queria saber como realizar esta aplicação na parte de estrutura. Pensei em fazer desta forma, mas ainda não tenho todo o conhecimento técnico para isto,
1) Criar a aplicação para trabalhar com arquivos XML em substituição ao Banco de Dados ( Access ou Sql Server Express)
- Arquivo XML não é o mais indicado para trabalhar como base dados, pois os mesmo não tem relacionamento, constraint, chave primária e etc,
o mais indicado é utilizar o sql server express 2005, fácil , rápido e simples de mexer se ainda quiser pode utilizar o Access.
2) Criar um WebService que recebe cada registro e realizar as alterações necessárias.
- Criação de webservices para esse tipo de serviço é simples, basta utilizar as classes de acesso a dados e desenvolver como uma página asp.net normal.
3) Caso não exista um conexão momentanea de internet, os registros posssam ser armazenados localmente até sua atualização pelo Webservice,
- WebServices não armazena nada , você deverá armazenar de alguma forma, utilizando o sql server express é a melhor solução.
Dúvida,
1) Como conseguir a definição que um código ou um registro não vai ser duplicado na hora de Armazenar este no servidor,
pois se há um código incremental em cada base todos podem ter os mesmos códigos mas de registros diferentes, por exemplo:
Maquina A Maquina B
ID Empresa ID Empresa
1 AAAAAA 1 BBBBB
Quando inegrar na Base deve ficar
Servidor
ID Empresa
1 AAAAA
2 BBBBB
ou seja a maquina 2 que em primeiro lugar recebeu o ID 1 na base será 2, mas como vou referenciar este no servidor quando por exemplo quiser realizar uma Alteração? - Você deverá criar sua própria lógica de controle de identificador, uma dica que dou é utilizar como prefixo ou sufixo a data atual junto com a hora, minuto e segundo,
ou até mesmo utilizar somente a hora, minuto e segundo, assim todos poderão ter seus código mantidos em cada máquina, podendo ser utilizado também o código do usuário,
pois esse deve ser único, também pode utilizar o MAC adrees da placa de rede, bom isso são idéias mas quem decidir a melhor maneira para seu sistema é você.
E na máquina (servidor) que vai receber as integralções os identificadores não podem ser incrementais, devem ser int e receber o código da máquina que está chamando o webservices.
2) Podem me encaminhar algum exemplo de como trabalhar com o XML em substituição a um banco de dados, ou seja, um banco com 3 ou 4 tabelas com relacionametos entre elas
- Como disse, XML não substitui o banco de dados, XML não tem relacionamentos nem controle de chave única e mais um milhão de coisas que não tem como substituir o banco de dados.
Grande abraço, Aguardo seu retorno Carlos Jr
Gostei + 0
27/02/2009
Fernando Reis
segue abaixo as respostas para as mesmas.
Necessidades:
a) Aplicativo desktop instalado um cada máquina de usuários:
- Windows Application tudo bem até aqui,
b) Inserção, Deleção e Atualização dos registros.
- Utilização de uma classe de acesso a dados com os métodos CRUD ( create, Retrieve, Update e Delete) tudo bem até aqui, ja faço isto normalmente
c) Cadastro de Empresa, Contatos e Projetos ( Venda de Serviços)
- Formulários de cadastro utilizando a classe de acesso a dados tudo bem até aqui,
d) Uma base Central SQL Server que faça a Integração de todos os dados de cada Aplicativo instalado.
- Sql server 2005 express e muto fácil fazer a integração dos dados por ele e é gratuito tudo bem até aqui, concordo plenamente e faço muito o uso deste Veja essa aula -> https://www.devmedia.com.br/articles/viewcomp.asp?comp=7116
Video Aula sobre divisão de aplicação em camadas, nessa aula eu ensino como fazer uma classe de acesso a dados, negócio e interface que pode web ou windows.
Caso não tenha acesso a aula, por favor me informe para que possamos lhe dar acesso gratuito a mesma. Queria saber como realizar esta aplicação na parte de estrutura. Pensei em fazer desta forma, mas ainda não tenho todo o conhecimento técnico para isto,
1) Criar a aplicação para trabalhar com arquivos XML em substituição ao Banco de Dados ( Access ou Sql Server Express)
- Arquivo XML não é o mais indicado para trabalhar como base dados, pois os mesmo não tem relacionamento, constraint, chave primária e etc,
o mais indicado é utilizar o sql server express 2005, fácil , rápido e simples de mexer se ainda quiser pode utilizar o Access.
*Concordo contigo, pensei na utilização de arquivos XML, pois quando tentei Publicar minha aplicação para efeito de teste, ( OQUE AINDA NÃO TENHO MUITA PRÁTICA) aconteceu oseguinte erro, 2 Desktops ( 1 com Windows XP/office 2003 e 1 Com Windows Vista/office 2007) na aplicação exista uma conexão feita com DNS em todas as máquinas. O problema é que no Vista/Office2007 meu arquivo (base de dados) access 2003 foi todo corrompido. e em outras tentativas fui informado sobre RESTRIÇÃO DE ACESSO POR ADMINISTRADOR... ( lembrando que o arquivo access esta sem usuario e senha) (posso enviar a pasta com o projeto par analisar se quiser)
2) Criar um WebService que recebe cada registro e realizar as alterações necessárias.
- Criação de webservices para esse tipo de serviço é simples, basta utilizar as classes de acesso a dados e desenvolver como uma página asp.net normal.
tudo bem até aqui,
3) Caso não exista um conexão momentanea de internet, os registros posssam ser armazenados localmente até sua atualização pelo Webservice,
- WebServices não armazena nada , você deverá armazenar de alguma forma, utilizando o sql server express é a melhor solução.
tudo bem até aqui, concordo contigo, mas me baseio na dúvida acima sobre publicação e banco de dados*
Dúvida,
1) Como conseguir a definição que um código ou um registro não vai ser duplicado na hora de Armazenar este no servidor,
pois se há um código incremental em cada base todos podem ter os mesmos códigos mas de registros diferentes, por exemplo:
Maquina A Maquina B
ID Empresa ID Empresa
1 AAAAAA 1 BBBBB
Quando inegrar na Base deve ficar
Servidor
ID Empresa
1 AAAAA
2 BBBBB
ou seja a maquina 2 que em primeiro lugar recebeu o ID 1 na base será 2, mas como vou referenciar este no servidor quando por exemplo quiser realizar uma Alteração? - Você deverá criar sua própria lógica de controle de identificador, uma dica que dou é utilizar como prefixo ou sufixo a data atual junto com a hora, minuto e segundo,
ou até mesmo utilizar somente a hora, minuto e segundo, assim todos poderão ter seus código mantidos em cada máquina, podendo ser utilizado também o código do usuário, esclarecendo: acha que posso então deixar o código como INTEGER e não numerador e utilizar uma lógica para utilização da data e hora como código identificador para não acontecer uma duplicação??? (achei muito boa a idéia o risco de duplicação é pequeno correto? pois esse deve ser único, também pode utilizar o MAC adrees da placa de rede, bom isso são idéias mas quem decidir a melhor maneira para seu sistema é você.
E na máquina (servidor) que vai receber as integralções os identificadores não podem ser incrementais, devem ser int e receber o código da máquina que está chamando o webservices.
2) Podem me encaminhar algum exemplo de como trabalhar com o XML em substituição a um banco de dados, ou seja, um banco com 3 ou 4 tabelas com relacionametos entre elas
- Como disse, XML não substitui o banco de dados, XML não tem relacionamentos nem controle de chave única e mais um milhão de coisas que não tem como substituir o banco de dados.
ok, me convenceu...kkkk gostaria de ver o arquivo com a publicação?
Grande abraço, Aguardo seu retorno Fernando
Gostei + 0
27/02/2009
[devmedia .net]
1) Criar a aplicação para trabalhar com arquivos XML em substituição ao Banco de Dados ( Access ou Sql Server Express)
- Arquivo XML não é o mais indicado para trabalhar como base dados, pois os mesmo não tem relacionamento, constraint, chave primária e etc,
o mais indicado é utilizar o sql server express 2005, fácil , rápido e simples de mexer se ainda quiser pode utilizar o Access.
*Concordo contigo, pensei na utilização de arquivos XML, pois quando tentei Publicar minha aplicação para efeito de teste, ( OQUE AINDA NÃO TENHO MUITA PRÁTICA) aconteceu oseguinte erro,
2 Desktops ( 1 com Windows XP/office 2003 e 1 Com Windows Vista/office 2007)
na aplicação exista uma conexão feita com DNS em todas as máquinas. O problema é que no Vista/Office2007 meu arquivo (base de dados) access 2003 foi todo corrompido. e em outras tentativas fui informado sobre RESTRIÇÃO DE ACESSO POR ADMINISTRADOR... ( lembrando que o arquivo access esta sem usuario e senha)
(posso enviar a pasta com o projeto par analisar se quiser) ###### Nunca vi este erro, há algo errado no seu arquivo do access e isso não tem nada a ver com publicação, todo arquivo em access só aceita uma conexão,
e outra coisa access não é confiável, como disse utilize o Sql Express 2005, é leve , fácil de utilizar e gratuito, aplicação windows não se publica, gera-se um setup para instalação, você falou que era aplicação windows e não web.
Dúvida,
1) Como conseguir a definição que um código ou um registro não vai ser duplicado na hora de Armazenar este no servidor,
pois se há um código incremental em cada base todos podem ter os mesmos códigos mas de registros diferentes, por exemplo:
esclarecendo: acha que posso então deixar o código como INTEGER e não numerador e utilizar uma lógica para utilização da data e hora como código identificador para não acontecer uma duplicação??? (achei muito boa a idéia o risco de duplicação é pequeno correto? ###### Dependendo de como utilizar NUNCA se repetirão faça isso..
2) Podem me encaminhar algum exemplo de como trabalhar com o XML em substituição a um banco de dados, ou seja, um banco com 3 ou 4 tabelas com relacionametos entre elas
- Como disse, XML não substitui o banco de dados, XML não tem relacionamentos nem controle de chave única e mais um milhão de coisas que não tem como substituir o banco de dados.
ok, me convenceu...kkkk
gostaria de ver o arquivo com a publicação?
######## Publicação ?? Mas aplicação windows não tem publicação, tem setup.
Não há necessidade de ver o código, parece que seu problema é na base de dados, portanto terá que substituí-la, pode trabalhar com access que é bem mais simples, mas tem restrições de acesso simultâneo e problemas com corrompimento de dados, na versão mais nova do access que é o 2007 isso não acontece com frequência e o acesso a base access é bem mais rápido do que em outras versões. Abraços Carlos Jr
Gostei + 0
27/02/2009
Fernando Reis
1) Criar a aplicação para trabalhar com arquivos XML em substituição ao Banco de Dados ( Access ou Sql Server Express)
- Arquivo XML não é o mais indicado para trabalhar como base dados, pois os mesmo não tem relacionamento, constraint, chave primária e etc,
o mais indicado é utilizar o sql server express 2005, fácil , rápido e simples de mexer se ainda quiser pode utilizar o Access.
*Concordo contigo, pensei na utilização de arquivos XML, pois quando tentei Publicar minha aplicação para efeito de teste, ( OQUE AINDA NÃO TENHO MUITA PRÁTICA) aconteceu oseguinte erro,
2 Desktops ( 1 com Windows XP/office 2003 e 1 Com Windows Vista/office 2007)
na aplicação exista uma conexão feita com DNS em todas as máquinas. O problema é que no Vista/Office2007 meu arquivo (base de dados) access 2003 foi todo corrompido. e em outras tentativas fui informado sobre RESTRIÇÃO DE ACESSO POR ADMINISTRADOR... ( lembrando que o arquivo access esta sem usuario e senha)
(posso enviar a pasta com o projeto par analisar se quiser) ###### Nunca vi este erro, há algo errado no seu arquivo do access e isso não tem nada a ver com publicação, todo arquivo em access só aceita uma conexão,
e outra coisa access não é confiável, como disse utilize o Sql Express 2005, é leve , fácil de utilizar e gratuito, aplicação windows não se publica, gera-se um setup para instalação, você falou que era aplicação windows e não web. Carlos, houve uma troca de palavras de minha parte, estou criando uma aplicação DESKTOP ( Windows Forms) e quando crio o SETUP ou faço apenas um DEBUG ( que cria um arquivo executavel ) isto me gera o erro especificado acima, me esclareça uma dúvida, existe uma forma de criar um setup desta aplicação que necessita de umm banco de dados e que , na instalação não tenha a necessidade do usuário instalar o SQL Server 2005 express, ou seja que o próprio SETUP faça isto? pergunto pois, até onde entendi quando utilizo o Sql Server 2005 ( que é muito bom, concordo) eu sou obrigado a instalar este em cada máquina de usuários, correto? ----------------------------------------------------------------------------------------------------------------------------------------------- oque acha deste código para retorno de um valor de código??? Public Function GetCodigo() As ULong 'Instancia a variavel para arrumar a data e hora retirando "/", ":" e " " Dim strCodigo As String = Date.Now.ToString.Replace("/", "") strCodigo = strCodigo.Replace(":", "") strCodigo = strCodigo.Replace(" ", "") 'Instancia a variavel uLong Dim lngCodigo As ULong = CLng(strCodigo) 'Retorna o Código 'EXEMPLO : 27220091045 Return (lngCodigo) End Function Dúvida No access como fica o tipo de campo utilizando um registro tão grande ? TIPO: NUMÉRICO : INTEIRO LONGO / DUPLO???? ------------------------------------------------------------------------------------------------------------------------------------------- 2) Podem me encaminhar algum exemplo de como trabalhar com o XML em substituição a um banco de dados, ou seja, um banco com 3 ou 4 tabelas com relacionametos entre elas
- Como disse, XML não substitui o banco de dados, XML não tem relacionamentos nem controle de chave única e mais um milhão de coisas que não tem como substituir o banco de dados.
ok, me convenceu...kkkk
gostaria de ver o arquivo com a publicação?
######## Publicação ?? Mas aplicação windows não tem publicação, tem setup.
Não há necessidade de ver o código, parece que seu problema é na base de dados, portanto terá que substituí-la, pode trabalhar com access que é bem mais simples, mas tem restrições de acesso simultâneo e problemas com corrompimento de dados, na versão mais nova do access que é o 2007 isso não acontece com frequência e o acesso a base access é bem mais rápido do que em outras versões. Troca de palavras novamente, desculpe.... Voce possue uma vídeo aula com a criação de SETUP em aplicações que utilizam Banco de dados ( access, Sql server)??? Abraços FERNANDO
Gostei + 0
27/02/2009
[devmedia .net]
Antes de iniciar o processo de instalação do SQL Express via linha de comando, é preciso extrair os arquivos de instalação para um caminho temporário. Para extrair os arquivos de instalação, execute o pacote do SQL Express com a opção /X e informe o caminho onde os aquivos deverão ser extraídos. Exemplo: C:/SQLEXPR.EXE /X Depois de extraído os arquivos, a instalação do SQL Express via linha de comando pode ser realizada de duas formas bastante simples: 1. Chamando o setup.exe e especificando os parâmetros desejados na própria linha de comando. Exemplo:
start /wait <caminhotemporario>setup.exe /qb ADDLOCAL=ALL INSTANCENAME=SQLEXPRESS SECURITYMODE=SQL SAPWD=pass SQLCOLLATION="SQL_Latin1_General_CP1_CI_AI" SQLAUTOSTART=1 DISABLENETWORKPROTOCOLS=0 2. Criando um arquivo de configuração e especificando o mesmo na linha de comando Caso você não queira executar o setup especificando os parâmetros, uma alternativa é executá-lo informando um arquivo .ini, o qual deverá conter todos os parâmetros a serem utilizados durante a instalação. O arquivo .ini é um arquivo texto que pode ser criado usando o NotePad e deve ser salvo com a extensão .ini. A primeira linha do arquivo deve ser [Options], depois se devem especificar os parâmetros sendo um em cada linha. Depois de criado o arquivo .ini, execute o setup usando a opção /settings para informar o arquivo .ini O exemplo abaixo utiliza o arquivo setup.ini para executar o setup.exe e informar os parâmetros desejados. Exemplo:
start /wait <caminhotemporario>setup.exe /qb SAPWD=pass /settings <caminhotemporario>setup.ini -- conteúdo do arquivo setup.ini
[Options]
ADDLOCAL=ALL
INSTANCENAME=SQLEXPRESS
SECURITYMODE=SQL
SQLCOLLATION="SQL_Latin1_General_CP1_CI_AI"
SQLAUTOSTART=1
DISABLENETWORKPROTOCOLS=0 Nos exemplos acima, o parâmetro ADDLOCAL=ALL informa ao setup do SQL Express que devem ser instalados todos os seus componentes. INSTANCENAME indica o nome da instância, SECURITYMODE indica que o modo de autenticação a ser utilizado é o SQL Authentication, SQLCOLLATION informa o collation default a ser utilizado pelo SQL Express, SQLAUTOSTART informa ao setup para configurar o serviço do SQL Express para inicialização automática, SAPWD informa a senha para o usuário sa e o parâmetro DISABLENETWORKPROTOCOLS indica quais os protocolos deverão estar habilitados. É importante ficar atento ao valor informado no parâmetro DISABLENETWORKPROTOCOLS, o qual por default é 1. O valor 1 informa ao SQL Express para desativar os protocolos TCP/IP e Named Pipes. Como conseqüência o SQL Express não aceitará conexões vindas de outras máquinas da rede. Os possíveis valores para o parâmetro podem ser. DISABLENETWORKPROTOCOLS = 0; Shared Memory= On, Named Pipe= On, TCP= On
DISABLENETWORKPROTOCOLS = 1; Shared Memory= On, Named Pipe= Off (Local Only),TCP= Off
DISABLENETWORKPROTOCOLS = 2; Shared Memory= On, Named Pipe= Off (Local Only), TCP= On Ao utilizar um dos dois métodos de instalação apresentados acima, as contas de serviço SQL Server Express e SQL Server Browser serão iniciadas com o usuário de sistema NT AUTHORITYNetworkService. Para especificar uma conta de serviço diferente, acrescente os parâmetros abaixo: SQLACCOUNT=<domainuser>
SQLPASSWORD=<domainuserpassowrd>
SQLBROWSERACCOUNT=<domainuser>
SQLBROWSERPASSWORD=<domainuserpassowrd> Para obter uma lista completa de todos os parâmetros que podem ser utilizados na instalação via linha de comando e seus respectivos significados, após extrair os arquivos do SQL Express para um caminho temporário, leia o arquivo template.ini. ----------------------------------------------------------------------------------------------------------------------------------------------- oque acha deste código para retorno de um valor de código??? Public Function GetCodigo() As ULong 'Instancia a variavel para arrumar a data e hora retirando "/", ":" e " " Dim strCodigo As String = Date.Now.ToString.Replace("/", "") strCodigo = strCodigo.Replace(":", "") strCodigo = strCodigo.Replace(" ", "") 'Instancia a variavel uLong Dim lngCodigo As ULong = CLng(strCodigo) 'Retorna o Código 'EXEMPLO : 27220091045 Return (lngCodigo) End Function Dúvida No access como fica o tipo de campo utilizando um registro tão grande ? TIPO: NUMÉRICO : INTEIRO LONGO / DUPLO???? ##### Você deve utilizar o Inteiro Longo mesmo, uma dica as inclusões podem acontecer no mesmo dia, hora e minuto, portanto eu colocaria os segundo aí no meio..
pra ficar melhor ainda e não tão grande o código, faria da seguinte maneira... ano mês segundo e milisegundo (4 números) assim te dou certeza de que nunca vai se repetir... Infelizmente não tenho video aula sobre isso posso fazê-la, mas irá demorar um pouco, pouco como te falei o processo de instalação unnatended é complicado demais, acho que para primeiro momento, você pode instalar o sql server express via linha de comando ou até mesmo na mão, pois como você disse são poucas máquinas. Outra solução é utilizar o Access, não necessita de instalação complicada, vai te atender perfeitamente, a única coisas que te oriento é utilizar o Access 2007 que é o mais novo e melhor. Abraços Carlos Jr
Gostei + 0
27/02/2009
Fernando Reis
Gostei + 0
27/02/2009
[devmedia .net]
pra ficar melhor ainda e não tão grande o código, faria da seguinte maneira... ano mês segundo e milisegundo (4 números) assim te dou certeza de que nunca vai se repetir... Só com isso você consegue... Chamado resolvido ?? Abraços Carlos Jr
Gostei + 0
27/02/2009
Fernando Reis
pra ficar melhor ainda e não tão grande o código, faria da seguinte maneira... ano mês segundo e milisegundo (4 números) 2009123030 ou seria 09123030 GRATO
Gostei + 0
28/02/2009
[devmedia .net]
Gostei + 0
28/02/2009
Fernando Reis
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)