Till now, I have had the experience of developing either a desktop application or a Website. But, with this Hotel reservation system, I am interfacing a problem that needs both. The application needs to be fulfil the following requirements :Manager can do the bookings/checkout of the incoming customers at the reception counter System.Customers should be able to book themselves online. As you can see, the second requirements clearly means that a web app is required, whereas the first can be accomplished via desktop development. This type of requirement is pretty common. Like, in case of cinema seat bookings, We are free to book ourself online or we can go the ticket window and buy one. The question is how are these simultaneous and different requirements fulfilled for a single project. There has to be a sync or else the customer might book himself in an already booked room. From my understanding, there are two ways to develop this solution. You develop a Web application with a back-end(admin panel) and host it on a server. The customers can book themselves on the front-end, while the manager(at reception desk) can use the administrator panel to carry out his bookings and checkouts. Since both front-end and back-end are using a single database, there is no requirement for sync.Develop a desktop application for use at the Hotel and a website for the customers to book online. The two applications are maintaining a single datbase, therefore synchronization comes into play. Some definite development for the sync is mandatory or else the system will fail.   Which of the above solutions should I choose ?. This is also a common scenario for banks. They handle transactions at the local branch as well as over the Internet. How do they achieve this thing. Much like i mentioned above or something different.
How would you approach developing a Hotel Reservation System?
web development;synchronization;desktop development
I agree with the other answers that include web services, but web services is really just one way to implement the solution. The important thing is to separate the reservation system from the various clients of that system. Think in terms of building a reservation server that implements all the logic and data storage needed to keep track of reservations irrespective of any particular UI. The reservation server only presents one interface, all the clients talk to that server through that one interface.This design has a lot of advantages:You can add as many clients as you want:web client for online reservationsdesktop client for use in the hoteladministrative client for producing reportstest client for validating changes to the servercustom clients for interfacing with aggregatorsYou can update the server with little or no impact on the clients, provided you don't change the interfaceCompletely avoids any synchronization issues -- nothing can get out of sync because the data is only stored in one placeWeb services is one very popular way to implement the interface to this sort of server, and I'd say it's likely the right choice in most situations. There are other possibilities, such as defining your own protocol, but I don't see any reason to get into that if you don't have to.