Visão Geral
A camada intermediária de um aplicativo criado usando o StrataFrame consiste de um ou mais
objetos de negócios que herdam da classe abstrata BusinessLayer. Esta classe fornece
base functionality for all tasks, including business object population, business rules
manipulação, validação, recuperação de dados, e navegação de dados. Programar na Linguagem .NET Preferida
StrataFrame não tem nenhuma liguagem de scripting proprietária que deva ser aprendida. Toda lógica de
pode ser completamente codificada em qualquer linguagem gerenciada .NET, incluindo VB.NET e C#. Isto aumenta a velocidade
speed de desenvolvimento e permite a lógica de negócios ser reutilizada.
Objetos de Negócios Fortemente Tipados
Representa Estrutura de Dados
StrataFrame fornece a abilidade de tipar fortemente a coluna de propriedades do objeto de negócios facilmente e
rapidamente usando o Business Object Mapper. Propriedades são criadas em cada objeto de negócios e refletem
a coluna de dados atual da estrutura representada.
Intellisense e Melhorada Confiabilidade do código
Desde que o campo de propriedades são fortemente-tipados, a confiabilidade do código melhora. A principal razão para isto
é que todos os erros de tipos de dados podem ser resolvidos em tempo de compilação sendo melhor que aparecerem em
run-time. Usando um campo fortemente tipado de maneira inconsistente com seu tipo de dado irão produzir um
erro de compilação, enquanto usar a campo fracamente tipado no mesmo scenario não irá.
Tipagem Forte Extendida
Existem muitos exemplos em que uma coluna em um banco de dados representa um tipo diferente do que é armazenado como raw
dado. Por exemplo, uma coluna numa tabela pode ser do tipo INT, mas quando o desenvolvedor interage com a propriedade do campo
no objeto de negócios, ele ou ela necessita da habilidade de telo no tipo enumeration e ter o valor automaticamente
persistido de volta para o banco de dados como INT. Em outro exemplo, uma coluna de dados pode ser do tipo VARBINARY ou IMAGE
mas atualmente representa um bitmap ou objeto serializado; StrataFrame permite o campo de propriedades no obejto de negócios a ser fortemente-tipado
como o objeto do tipo serializado e será irá automaticamente serializar e deserializar os dados para e vindo do banco de dados sem escrever uma única linha de código.
Avançado Suporte Nativo
A camada de negócios do StrataFrame contém características que aliviam muitas das tarefas mundanas
que normalmente atrasam o desenvolvimento do aplicativo. Estas características permitem ao desenvolvedor focar
na especificação da aplicação e não investir tempo na criação e manutenção de funcionalidades básicas.
Suporte a Chave Primária Composta
StrataFrame nativamente suporta chaves primárias compostas com estruturas de tabelas. Este suporte se extende
a toda navigação e métodos de pesquisas com objetos de negócios e está pronto para o uso imediato.
Provider de Erro Auto-Bound Error
O ErrorProvider do .NET ErrorProvider é utilizado para exibir erros e regras de negócios quebradas ao usuário final.
A implementação do provider de erros não requer código do desenvolvedor e sua aparecência pode ser
extensivamente personalizada através de propriedades incluindo a habilidade de desabilitar o error provider completamente.
Gerenciamento Total do Relacionamento Pai-Filho
Relacionamentos são configurados em uma base por-classe para objetos de negócios com a camada de negócios do StrataFrame.
Uma vez configurada, a classe BusinessLayer pode automaticamente gerenciar o relacionamento da chave primária/e chave foreign; novas
linhas filhas serão atribuídas ao valor da chave foreign da chave primária para o objeto de negócios correspondente.
Quando novos registros são salvos, o valor da chave primária do banco de dados atribuida é propagada através dos relacionamentos
para os objetos filhos. O gerenciamento do relacionamento é também usado para garantir que novos registros pai sejam salvos antes
que os registros filhos correspondentes sejam salvos.
Inicialização de Campos e Controle de Prioridades
Por padrão, todos os campos de um novo registro são inicializados por tipo de dados para prevenir quaisquer erros em run-time
de DBNulls. Esta característica pode ser desabilitada configurando uma única propriedade. Adicionalmente, todos os objetos de negócios
podem ter uma prioridade de inicialização que permite ao desenvolvedor controlar a ordem em que os objetos em um formulário são inicializados.
Padronizado mas Simplificado
A classe BusinessLayer segue as melhores praticas de programação orientada a objetos e
utiliza muitos padrões de desenvolvimento estabelecidos. Somente uma única classe é criada para cada
objeto de negócios em um aplicativo StrataFrame. Herdando da calsse base BusinessLayer,
os objetos de negócios desfrutam de toda a funcionalidade necessária mencionada na visão geral.
Isto integra firmemente e cohesive o desenho de classe-única de alta significância
ao desenvolvedor porque aumenta muito a simplicidade do aplicativo quando comparadado a 5 ou 7
classes por objetos de negócios tipicamente requeridos por outras opçoes de frameworks comerciais.
Otimizado para Performance
A camada de negócios tem sido otimizada para entregar um alto nível de performance para o desenvolvedor de apliações.
Um DataTable, diferente de um DataSet, é usado com objetos de negócios para se reduzir meória em cada instância de um
objeto de negócios. Navegação de dados personalizada foi implementada para permitir ao desenvolvedor a interagir
através dos registros com o objeto de negócios (classificado ou não classificado, filtrado ou não filtrado) mais rapidamente
do que interagir através de entidades com uma coleção de entidades personalizada.
Localização Centralizada para Lógica de Negócios
Toda a logica de negócios é guardada com a sua classe de objetos de negócios correspondente.
Classes adicionais não são requeridas para regras de negócios, validação de dados, valores padrão, etc.
Campos requeridos são implementados pela classe base de negócios e não necessitam de nenhum código do desenvolvedor.
Esta centralização simplifica o processo de codificação do desenvolvedor e aumenta a performance mantendo as instâncias
de classes e viagens até o servidor (para checar a lógica do lado do servidor) ao mínimo.
Implementação de Campos Requeridos
Embora a lógica de campos requeridos tenha uma programação manual, StrataFrame prove um jeito rápido
e fácil de se especificar os campos que requerem entrada simplismente clicando em uma caixa de seleção. Cada objeto de
negócios contém uma coleção chamada RequiredFields. Através do component designer do Visual
Studio, os campos que requerem entrada podem ser configurados usando o editor integrado de tipos.
Suporte a Localização Integrado
Todas as áreas do StrataFrame são localizáveis, incluindo a lógica de negócios. Ao invés de hard-coding
mensagens de regras quebradas no código, elas podem retiradas de um banco de dados de localização através de um
suporte Messaging and Localization extensivo.
Personalizável e Extensível
Em comparação com outros elementos do Framework de Aplicativos StrataFrame, a camada
de negócios é desenvolvida para dar mais poder aos desenvolvedores, e não limita-los. A calsse BusinessLayer provê
muita flexibilidade e funcionalidade que pode ser reescrita ou modificada. Além disso,
propriedades estratégicas estão reveladas, que habilita o desenvolvedor a transmitir muita automação
com os objetos de negócios. Propriedades de campos criados pelo Business Object Mapper
podem ser personalizados ou ser recolocados por um código personalizado que o desenvolvedor tenha.
Acesso Programatico Boundless
Tnato usado programaticamente ou configurado para data-binding aos controles, os objetos de negócios do StrataFrame
são desenhados para ser fáceis de usar. Com os campos fortemente tipados aos obejtos de negócios,
todas as propriedades estão disponíveis com o Intellisense dado pelo editor de códigos do Visual Studio.
Você nunca precisará olhar o gráfico das referências para checar os nomes do seus campos novamente. Acesso programático
é is favorecido pela classe base de métodos que podem ser usados para procurar, filtrar, navegar,
repetir, ou ordenar registros nos objetos de negócios.
Ganchos de Eventos
Muitos ganchos guiados por eventos estão intrinsicamente provisionados para dar ao desenvolvedor controle completo
quando interagindo com os objetos de negócios. Existe uma grande gama de eventos existentes provendo ao desenvolvedor
o controle completo. Esta metodologia permite muito maisinteração com o ambiente e previne a necessidade de metodos overrides.
Os ganchosincluem enventos como antes, após, segurançac, mudança de estado, erros, concorrência, notificações de mudança de dados,
valor de inicicialização padrão de novo registro, e mais.
Extensivos Métodos de Navegação
Mudando a linha atual do objeto de negócios é muito fácil através da funcionalidade cedida
pela classe base BusinessLayer. Quando invocada os métodos de navegação de dados irão modificar
a CurrentRowIndex e mundando a linha acessada pelas propriedades do campos atual. Suporte a
ADO Style, FoxPro e UI Bound a navegação existe com os seguintes métodos: MoveFirst(), MoveNext(),
MovePrevious(), MoveLast(), MoveAbsolute(), Seek(), SeekToPrimaryKey(), Navigate(), and NavigateToPrimaryKey().
Ordenando e Filtrando
Os dados nos objetos de negócios podem ser ordenados ou filtrados facilmente pelo desenvolvedor. Opcionalmente, o filtro corrente pode ser propagadopara os objetos de negócios filhos.
Componentes ADO.NET Expostos
Embora o StrataFrame gerencie todas as tarefas necessárias ao desenvolvimento de aplicativos robustos,
existem horas em que o acesso direto é requerido por um desenvolvedor. Quando estas situações acontecem, os
componentes ADO.NET estão diretamente acessíveis através de seus objetos de negócios. Isto
inclui propriedades como: CurrentDataTable, CurrentView, CurrentRow, and CurrentRowIndex.
Coleção de Regras Quebradas
Quando a necessidade de diretamente interagir com as regras quebradas, uma coleção existe em todos os objetos de negócios
que permitem ao desenvolvedor manipular e mostrar as regras quebradas e desejadas.
Grid e Suporte a Terceiros
Todos objetos de negócios tem a habilidade de nativamente suportar grids através das propriedades ADO.NET.
O suporte a grid prove interação com eventos nativos permitindo ao desenvolvedor monitorar a navegação de eventos
sem a adição de nenhum cógigo. Também, a maioria dos controles de terceiros podem facilmente ter interface com os negócios através de
opções de binding suportadas disponíveis no StrataFrame.
Suporte a Fonte de Dados XML
Algumas horas, é necessário usar o XML como fonte de dados. Quando esta necessidade aparece, um objeto de negócios pode ser
fortemente tipado e ler de um aquivo no formato XML. Adicionalmente, este arquivo XML pode ser dinâmicamente encriptado e decriptado
chamando apenas um método.
Serialização de Objetos de Negócios
Objetos de negócios tem suporte completo a serialização. Isto permite a um objeto de negócios a ser salvo e restaurado
ao disco em seu estado completo. Alem disso, um objeto de negócios pode ser serializado para e de um stream permitindo
que um objeto de negógios seja manuseado de fora de um simples local e passe através de uma conexão de rede.
Isto provê provê suporte para serviços de empresas, remoting e web services.
Especificações Técnicasexpand all | collapse all | |
| Tipagem Forte | | | |
Propriedades são criadas em cada objeto de negócios e refletem o valor
atual dos campos da tabela de dados interna. As propriedades são populadas
como um subproduto dos métodos de navegação do framework. Isto simplifica
acesso ao simples mybo.myfield vernáculo, suavizando totalmente
o requerimento de indexes sendo passados.
| | |
| | Navegação de Dados | | | |
Mudando a linha atual do objeto de negócios é muito fácil através da funcionalidade
cedida pela classe base BusinessLayer. Quando invocada os métodos de navegação de
dados irão modificar a CurrentRowIndex e mundando a linha acessada pelas propriedades
do campos atual.
- ADO-style Navigation
MoveFirst()
MoveNext()
MovePrevious()
MoveLast()
MoveAbsolute() - FoxPro-style Navigation
Seek()
SeekToPrimaryKey() - UI-bound Navigation
Navigate()
NavigateToPrimaryKey()
| | |
| | Ordenando; Filtrando | | | |
Os dados nos objetos de negócios podem ser ordenados ou filtrados
facilmente pelo desenvolvedor. Opcionalmente, o filtro corrente pode
ser propagadopara os objetos de negócios filhos.
| | |
| | Componentes ADO.NET Expostos | | | |
Todos componentes ADO.NET usados com os objetos de negócios são expostos para interação
com o desenvolvedor.
- CurrentRow -– O DataRow normalmente usado
pelo campo de propriedades dos objetos de negócios. Esta linha é
determinada pelo CurrentRowIndex do CurrentDataView.
- CurrentDataTable -– A
DataTable interna dos objetos de negócios que guarda todos os dados.
- CurrentDataView -– A DefaultView
da tabela internaque permiteaos objetos de negócios serem ordenados
e filtrados.
| | |
| | Ganchos de Eventos | | | |
Guanchos são criados pelo desenvolvedor para extender a funcionalidade dos objetos de negócios.
- Pre- Hooks
- BeforeSave
- BeforeDelete
- BeforeUndo
- CurrentDataTable
- AfterSave
- AfterDelete
- AfterUndo
- Ganchos de Segurança
- CheckSecurity -- aparece quando um obejto de negócios tenta
adicionar, editar, apagar ou salvar um registro, permitindo ao desenvolvedor
determinar se o usuáriotem os privilégios requeridos.
- CheckFieldSecurity -- aparece quando o obejto de negócios
está configurado para checar a segurança dos campos e permite ao desenvolvedor
a bloquear campos específicos de serem usandos pelo usuário final.
| | |
| | |
| Criaçao e Manutenção de Propriedades Criadas Automaticamente | | | |
As propriedades de campos fortemente tipados em qualquer objeto de negócios
são criadas e mantidas através do Business Object Mapper. O Business Object Mapper
integra diretamente com o Visual Studio e permite a modificaçao dos arquivos
usando a IDE. as propriedades dos campos estão organizadas como um arquivo de classes parciais
usado pelo component designer.
| | |
| | Tipos de Dados Personalizados | | | |
Propriedades de campos não estão limitados a tipos de dados primivos, mas podem ser
criados novos tipos de dados. Tipos de dados personalizados incluem enumeração
que permitem ao objetos de negócios retornarem o tipo de enumeração mas ainda guardar
no banco de dados um valor integer.
| | |
| | Serialização de Objetos | | | |
Propriedades de campos podem também ser complexos, tipos de dados serializaveis.
Quando configurado, a propriedade de um campo irá serializar e deserializar um objecto
dentro e fora de um campo, guardando no banco de dados como um tipo de dados binário. Por exemplo,
uma imagem bitmap pode ser serializada quando ela resideno disco e depois deserializada
para uso na camada de apresentação; um objeto System.Drawing.Bitmap seria retornado
pelo campo ao invés de um Byte[].
| | |
| | Sem UML ou XSD | | | |
O desenvolvedor não é requerido a manter uma coleção de arquivos UML, XSD ou XML
para definir mapenamento de campos em cada objeto de negócios. O Business Object Mapper
pode usar a fonte de dados ou o meta-dado com o Database Deployment
Toolkit para derivar o esquema para o objeto de negócios.
| | |
|
| expand all | collapse all | |
| Todas as Regras de Negócios Checadas em um Evento | | | |
Um gancho de eventoé provisinado para checar as regras de negócios. Toda a regra de negócios é
colocada como reponsável por este evento. Ela é levantada com a base classe
BusinessLayer base quando o objeto de negócios é salvo. Também é ativado
se o desenvolvedor explicitamente chamar uma checagem de regras.
| | |
| | Implementação de Simples Campos Requeridos | | | |
Uma coleção de campos requeridos é implemetada através da classe base da camada de
negócios a cada campo é atualmente selecionado simplesmente utilizando o editor.
Estes campos requeridos são checados quando as regras de negócios são checadas, e
regras quebradas são automaticamente adicionadas a coleção para cada each campo requerido
que não houve entrada.
| | |
| | Coleção de Regras Quebradas | | | |
Quando regras de negócios são checadas, regras quebradas são adicionadas ao objeto de negócios.
A coleção mais recente de regras quebradas está disponível ao desenvolvedor através
da classe base BusinessLayer.
| | |
| | Provedor de Erros de Auto-Bound | | | |
Um .NET ErrorProvider é utilizado para exibir erros e regras de negócios para o
usuário final. A implementação do provedor de erros não requer código do desenvolvedor
e pode ser trocada.
| | |
| | Programe na sua Linguagem .NET Preferida | | | |
Muitos frameworks de aplicativos implementão sua própria linguagem de desenvolvimento para
programar regras de negócios. Com StrataFrame, o desenvolvedor não precisa aprender
uma nova linguagem de script para chegar as regras de negócios porque toda regra de negócios é
programada em linguagem .NET usada para criar o objeto de negócios.
| | |
| | Sem Código no Servidor para Regras de Negócios | | | |
Enquanto o desenvolvedor pode usar qualquer combinação de lógica no lado do servidor
e do lado do cliente para checar as regras de negócios, StrataFrame não requer nenhum código do lado do
servidor. Muitas regras de negócios requerem uma pesquisa no banco de dados ou uma checagem de arquivo de sistema;
this is possible, as all business rules are coded within .NET rather than
T-SQL ou uma linguagem de script proprietária.
| | |
| | |
| Acesso a Dados Através da Classe DataAccessLayer | | | |
Cada objeto de negócios contém uma instância interna da classe DataAccessLayer.
Este objeto provê uma interface entre as regras de negócios e os dados armazenados.
A classe baseBusinessLayer provisiona vários métodos protegidos ao desenvolvedor
para fazer a interface com a camada de acesso a dados.
- Métodos de Povoamento -- Todos os métodos
substituem a tabela de dados internacom o resultado retornado pela camada
de acesso a dados:
FillDataTable(SELECT)
FillDataTable(DbCommand)
FillByPrimaryKey()
FillByParentPrimaryKey()
FillByParent() - Métodos de Recuperação -– Todos métodos de
recuperação retornam uma tabela com dados carregada com o resultado
retornado pela camada de acesso a dados:
GetDataTable(SELECT)
GetDataTable(DbCommand)
GetByPrimaryKey()
GetByParentPrimaryKey()
GetByParent()
Nota: Os métodos de recuperação não interrompem o objeto de
negócios atual (tabela de dados interna). Os novos dados trazidos são autonomos
e não interferem com qualquer processo existente do objeto de
negócios atual.
- Métodos de Factory -– Contrutores são provisionados
pela classe base BusinessLayer provisionada e que permite ao desenvolvedor
a implementar factories personalizadas ou um método de factory compartilhado methods diretamente
na classe de objetos de negócios.
| | |
| | Gerenciamento de Relacionamentos | | | |
A classe base BusinessLayer gerencia relacionamentos sincronizando valores de chaves primárias
que corrêspondem aos valores de chaves estrangeiras. Os relacionamentos são configurados
no nível de classe de cada objeto de negócios.
| | |
| | Forçar Salvar o Pai Se o Filho for Salvo Antes | | | |
Se um relacionamento é definido num objeto de negócios filho e o filho tenta salvar
enquanto o objeto de negócios pai ainda esta "sujo", o objeto de negócios
filho forçara o objeto de negócios pai a salvar. Isto permite que novos valores de chaves primárias
atribuídos ao objeto de negócios pai object pelos dados armazenados sejam propagados para o
objeto de negócios filho antes de ser salvo.
| | |
| | Auto Filtro para Filhos | | | |
Um objeto de negócios pode ser configurado filtrar registros automaticamente em um objeto de negócios
filho para que somente registros que possam corresponder aos registros pais sejam visíveis
aos filhos.
| | |
|
|
|