A prescriptive architecture for application development is provided. In
some embodiments, the architecture comprises a service, a receiver, a
sender, and a transport. The service functions to perform the actual
business logic, is decorated with service deployment metadata; and is
operable to communicate via types. The receiver is coupled to the service
and is generated entirely from the service deployment metadata. The
receiver is operable to receive messages, convert the received messages
into types, and communicate with the service using the types. The sender
is coupled to the receiver and is generated entirely from the service
deployment metadata. The sender functions as a proxy for the service to a
service consumer, and is operable to communicate using types with the
service consumer. The sender is operable to convert the types to
messages, and communicate with the receiver via messages. The transport
functions as a message exchange technology that allows the sender and
receiver to communicate, and is designated by the service deployment
metadata and implemented as an underlying technology of the sender and
the receiver.