Jan 7, 2013 at 3:10 PM
Edited Jan 7, 2013 at 3:11 PM
Dear App Arch Guide team,
I read most of the “Microsoft Application Architecture Guide 2nd Edition”, with emphasis on the first 14 chapters, where my following questions refer to. At first I want to thank you (and the many other contributors) for the great
guide, it already helped me very much in finding out how to structure my layers (together with the Layered Architecture Sample by Serena Yeoh). I posted my questions on stackoverflow.com some days ago (because the discussion site on codeplex seemed not to
be active any more), but it was closed as “too vague” (not my opinion, of course). Since my main objective is to get a qualified answer, I wanted to ask you kindly whether you could help me; if not directly, feel free to forward this to any of
your co-authors if more specialised on this topic. I expanded the list of questions now to all which popped up to me during reading of the guide. I know they are many, but I hope they are interesting feedback for you, too.
Many thanks in advance for any help and again for this great guide!
Acronyms used by me:
Application logic (AL)
Business logic (BL)
Domain logic (DL)
Business components (BCs)
business workflow components (BWCs)
business process components (BPCs)
business entities (BEs)
business logic components (BLCs)
- What exactly are BPCs, how do they differ from BEs, as both implement business logic: “Chapter 10: Component Guidelines” > Business Layer Components: BWCs: “…the application can use this
to perform a business process…”, “BWCs work with BPCs that instantiate and perform operations on BWCs.” BEs: “BEs, or – more generally – business objects, encapsulate the business logic…”.
This question seems to have something to do with “application state” vs. “entity (domain object) state” and how to differentiate between these two. Could you provide some examples for each of the two, since I have only a vague imagination
what the differences could be?
- Are BCs the general term for business workflow components (BWCs), business process components (BPCs), business entities (BEs), utility classes etc., as suggested in Chapter 12: “Designing Business Entities”
(“Examples of these components include business logic components, business entities, business process or workflow components, and utility and helper components”) or are they all EXCLUDING the BWCs and BEs, as suggested by the layer diagram e.g.
on page 84, where they are depicted separately? Or are there two different definitions of BCs used here, one like in chapter 12 where BWCs and BEs are included and the other like in Chapter 14, Step 5 “Design BCs to support Workflow” where they
are separated from BWCs in the context of BizTalk Server like in the layer diagram?
- Contradictory definitions of term BLCs: In chapter 10: “Component Guidelines” > “Business Layer Components”, BLCs are defined as encompassing BWCs (and also BPCs? Please see question 1 and clarify.) and BEs. However, in
chapter 12: “Designing BCs” > “Step 1 – Identify BCs Your Application Will Use”, they are not (listed on the same level as BEs and BWCs instead). So which definition is the correct one?
- Same section in chapter 10 as in question 3: “Application logic” (AL) vs. “business logic” (BL): “Business logic is defined as any application logic…” i.e. in this definition AL is the more general term. This however
contradicts Randy Stafford’s definition in Fowlers book which is: "Business logic" is the
general term, can be subdivided into "domain logic" (purely concerned with the problem domain) and
"application logic" (“sometimes referred to as “workflow logic”, although
different people have different interpretations of “workflow”.”). (see
Fowler, "Patterns of Enterprise Application Architecture" > "Service Layer"). Could you be more precise what you mean with AL and tell me what is AL which is not BL (being a subset of it in your definition)?
- Same section: “business logic components should not contain any behaviour or application logic that is specific to a use case or user story.
BLCs can be further subdivided into the following two components (BWCs and BECs)”.
So where do I implement the use cases? “It depends? J” In the article cited in question 4, Randy Stafford writes: “In the
operation script approach a Service Layer is implemented as a set of thicker classes (“services”) that
directly implement application logic but delegate to encapsulated
domain object classes for domain logic”. I think this is the approach followed in the “Layered Architecture Sample” by Serena Yeoh, i.e. the use cases are in the service layer?
- Finally: I always thought “workflow” and “use cases” were somewhat related? I did nowhere find something about how these terms relate (or do not) to each other. Could you explain that to me a) in general, b) specifically concerning
MS Workflow Foundation?
Many thanks for your patience if you read this far,
Have you got answers to your questions? If so can you share it with me. I have pretty much similar questions in my mind.