A domain-protocol mapping based middleware for distributed application development