Мой общий совет: создавайте слои так, как будто они будут развернуты на разных уровнях. Поэтому обращайте особое внимание на дизайн, особенно на детализацию интерфейсов. Занятые интерфейсы (getFirstName, getFamilyName, getPhoneNumber ...) будут иметь серьезные накладные расходы при удалении (предпочитайте один метод. GetPersonDetails) Также учитывайте ошибки, которые могут возникнуть, когда слои разделены.
Теперь вы можете переносить доступ к слоям в Location Transparant API. CORBA, Java EE EJB - примеры того, как это сделать, но, конечно, вы можете написать свой собственный фасад.
Фактически технология удаленного взаимодействия, которую вы используете, зависит от вас, я парень из Java EE, поэтому я бы просто использовал EJB.