It's not a free book but I would definitely recommend Patterns of Enterprise Application Architecture by Martin Fowler.
The book is in two parts. The first part is a short (100 page) tutorial on enterprise application architecture. The bulk of the book is the reference to forty or so patterns. All of these patterns are ones that I've seen in the field, usually on many different programming platforms.
Each pattern describes details of how it works and when to use it, together with code examples in Java, C# or both. (I picked these languages because most software developers can read them, not because of any particular coupling or opinions about the language).
The main topic areas are: how to layer an enterprise application, how to organize domain logic, how to tie that logic to a relational database, how to design a web based presentation, some important principles in distributed design, and handling of what we call "offline concurrency" - concurrency that spans transactions.