Portabilidade e Arquitetura
Debug Remoto - Visual Studio em servidores externos
1) Nomenclatura de Dlls
Ao criar Dlls no módulo Common do TCGI
- Form: RM.Imb.Nome.Form;
- Intf: RM.Imb.Nome.Intf;
- Data: RM.Imb.Nome.Data;
- ISever: RM.Imb.Nome.IServer
- Sever: RM.Imb.Nome.Server
Ao criar Dlls no módulo de Vendas
- Form: RM.Imb.Venda.Nome.Form;
- Intf: RM.Imb.Venda.Nome.Intf;
- Data: RM.Imb.Venda.Nome.Data;
- ISever: RM.Imb.Venda.Nome.IServer
- Sever: RM.Imb.Venda.Nome.Server
Ao criar Dlls no módulo de Aluguel
- Form: RM.Imb.Aluguel.Nome.Form;
- Intf: RM.Imb.Aluguel.Nome.Intf;
- Data: RM.Imb.Aluguel.Nome.Data;
- ISever: RM.Imb.Aluguel.Nome.IServer
- Sever: RM.Imb.Aluguel.Nome.Server
2) Heranças
Ao criar um cadastro
Seguir o padrão de tela:
Simples: ImbCobrancaAcaoAction
Complexa: ImbVendaContratoAction
Utilizar a Herança ImbActionMasterView
Utilizar a Herança ImbFormEdit ou ImbFormEditNavBar
No caso de vendas, sempre cadastrar Resources do Props no projeto "RM.Imb.Venda.Resources" para reutilizar os nomes.
Sempre utilizar a Herança DataSetProperties
Utilizar a Herança ImbDataServer
Utilizar a sempre as tags RMSSecurityFilterAttribute , RMSServerInfo e RMSServerSecurityInfo
Importante: versão 12.1.29 e superiores, RMSSecurityFilterAttribute passou a ser obsoleto, agora utilize [RMSSecurityFilter(CodSistema.Imb, 813000316, 0)] o numero da tag de segurança é o padrão da liberação de consumo do server.
Atenção: Override o método DoReadRecordSecurityFilter, para que não ocorrá erro, informando que não pode consumir readrecord de dataserver ao ser consumido via WSDataServer (PDC, PI e terceiros poderam chamar metodos publicos que consomem 'ReadRecord' no server).
Exemplo de override:
protected override void DoReadRecordSecurityFilter(DataSet dataSet, object[] primaryKey, object ownerData)
{
DoReadRecord(dataSet, primaryKey, ownerData); // Caso não tenha nenhuma restrição de acesso por usuário a row, se tiver tem que implementar a regra.
}
Utilizar a Herança IRMSModule
Utilizar a Herança RMSModule
Ao criar um Processo
Seguir o padrão de tela:
Simples: ImbGerarAcaoCobrancaManualAction
Complexa: ImbGerarAcaoCobrancaManualAcaoAction
Utilizar a Herança ImbActionProc
Utilizar a Herança ImbFormParamsProc
Utilizar a Herança ImbParamsProc
Utilizar a Herança ImbMaquinaCalculoProcess ou ImbProcess
Utilizar a sempre as tags RMSServerInfo e RMSServerSecurityInfo
Importante: A Tag 813000329 é relacionada a segurança do processo, atenção para não criar nova tag, quando o processo for apenas um facilitador para criação de vinculos para cadastros que já possuem a tag de segurança, nestes casos, quando já se tem permissão para cadastrar um objeto, o vínculo dos demais segue a mesma tag.
3) Check-List
- Documente o seu código;
- Não deixar método vazio e nem código fonte comentado;
- Utilizar Resources em todas as mensagens para o usuário;
- Não instanciar classes de server no cliente e vice-versa;
- Evitar loops no cliente;
- Sempre crie o objeto remoto utilizando blocos using();
- Diminuir o IO com o banco de dados
- Ler todos os dados de uma só vez (eliminando acesso ao banco dentro de loops);
- Não utilizar valores constantes nas sentenças SQL e evitar a criação de sentenças SQL criadas dinamicamente;
- Não esquecer de colocar (NOLOCK) nas sentenças;
- Ao escrever uma cláusula WHERE, sempre colocar a cláusula mais restritiva antes;
- No SELECT, trazer apenas as colunas necessárias;
- Ao final do processo executar o Check-dll, executar a seguinte BAT em e executar o processo em C:\CorporeRM\RMCheckDll;
- Analisar o sonar parar não criar novas pendencias;
- Procure criar testes unitários em processos e cadastros com regra de negócio;
- Revisar documentação a garantir que não existem informações de clientes indevidamente;
- Realizar o Code Review do código fonte;