|
||||||||||||
|
Architecture See the Server Component page for instructions on how to install. The architecture described below is functional, but not currently recommended for multiple locations. It's too slow. Instead, see the Multiple Locations page for an overview of current options. This architecture is, however, useful if you must have increased security at a single location. This diagram attempts to explain the goals that the 3-Tier Architecture was initially trying to achieve. This is in contrast to the standard strategy of two tiers: the Windows application, and the database.
Overview The large arrows represent chatty connections, while the single thin arrow represents the slow connection for which everything else is being optimized. Very few calls will be made across this connection. The goal is to have no more than one call to the server for each 'page' of display on the screen. This single call will always return a single dataset (group of tables) which is as small as possible. Eliminating multiple calls reduces latency (roundtrip time) issues, such as when connecting across a satellite connection. And keeping the result set small helps the program remain responsive even when the connection is slow, such as a dial-up connection. Open Dental will always be initially installed with the business layer on the client. This will work fine for small offices. But for larger offices, the business layer can also be installed on the server to cut down on network traffic. OpenDentServer.exe will also handle all authentication, isolating the database from regular users, and providing the level of security required by enterprises. Overall, the new business layer will eventually result in enhanced speed (including reduced startup time), security, database integrity, reusability, and scalability. Although all of the components in the diagram are complete and functional as of version 4.5, there is still a lot of optimization to be done to reduce traffic over the slow connection. So there is currently no performance advantage to be gained by using the server components, although there are advantages from a security standpoint. OpenDentalServer.exe will probably be able to run on Mono instead of the Microsoft dotNet framework. This will allow it to run on Linux or Windows servers. As a web application is eventually built, the long-term goal is to connect it to the OpenDentServer instead of directly to the database. It would communicate with web services. But until the server program is designed for external interfaces, any web app would most likely be built by connecting directly to the database. This should only be considered a temporary solution, and the goal should always be to use the business layer in the future. Explanation of the various components in the diagram above OpenDental.exe: Data Interface: This is what the main program interacts with for any data needs. The data interface is responsible for deciding where to obtain the data and for catching exceptions thrown by OpenDentBusiness.dll and by the Remoting interface. Remoting Interface: Only used if the OpenDentServer is being used. Although it is not shown above, there can be multiple clients all connecting to the single OpenDentServer.exe. The server program can also handle multiple clients on each of the workstations. This happens when the user opens multiple copies of Open Dental on one computer or when terminal services are being used. OpenDentBusiness.dll: All business logic and data access is being moved to this layer. All that will be left in the main program will be user interface logic. Every class that needs direct access to the database for any reason belongs here. This is where all the INSERT, DELETE, SELECT, and UPDATE commands are for each table in the database. This is also where global variables store some of the data that is not changed very often. This includes such things as Providers, Definitions, Operatories, Fees, etc. The business layer also contains the functions that extract the data from these global variables as needed for the main program. For instance, if we need to know the name of an operatory, we would ask the business layer. If this layer does not have a connection to the database, such as on the client of an enterprise computer, then it still functions exactly the same, as a data storage layer. But in that case, the Data Interface is responsible for keeping the global variables updated by using the Remoting Interface. The classes are all organized by database table. So for each table, like patient, there would be one Data Interface class (Patients), and one Business class (PatientB). The Patient class, which defines the actual columns in the table is not shown in the above diagram. It is also in OpenDentBusiness.dll, so that both the server and the workstations have access to the same definitions. Remoting Protocol This section is very technical and is only intended for programmers. We made the decision to not use dot Net remoting because we feel it's too complicated for other programmers to implement. We wanted something a little bit simpler and lower level. So, instead, commands are sent from the client to the server as DataTransferObjects. See below for more details. The reply from the server is either a DataSet (group of tables), an acknowledgement, or an exception. Protocol Encryption Authentication Sharing Data Types Client messages Server responses Using the DataSet Custom Queries
|
||||||||||||
Open Dental Software 1-866-239-0469
|