Http://www.microsoft.com/china/msdn/library/enterprisedevelopment/builddistapp/conTracttalks-definingConversationSbetweenServices.mspx
Agreement Q & A: Defining a session between services (.NET Designers)
Release Date: 4/1/2004
| Update Date: 4/1/2004
Steve Kirk
Microsoft Corporation
September 26, 2002
Abstract: MSDN's Steve Kirk met with the solution architect architect Maarten Mullender, Microsoft .NET Platform Strategy group. The latter is committed to the work of Microsoft's service-based application architecture. They discussed how to design an agreement to manage inter-service sessions. (4 page print pages)
The Microsoft Architecture Concept of the Service-based Application has been used as an application architecture in July this year: concept view is published, and these concepts are introduced in .NET Architecture Center, they have triggered in the application design community. Many discussion, including the design of distributed Microsoft_ .NET applications discussed in this column.
Maarten Mullender is one of the Microsoft Architects engaged in this work. We discussed on the topic this month. Maarten's most recent focus is the logic and physical architecture of applications based on these concepts. In the next few months, the MSDN will post this work, and the .NET Architecture Center will also introduce this job.
Steve Kirk: In the application architecture: In the Concept View, you have made recommendations for the service-based application architecture. In your suggestion, the session between services is defined by an agreement. How do you plan to define an agreement?
Maarten Mullender: To answer this question, you can just explain the concept and introduce the related tools, but I am more willing to explain from the design process. Imagine collaboration between high-level services. What we must do first is to define the functions of these services, that is, their responsibilities. If you can't use a few words to describe it, we should reconsider.
Then there is a need to explain the services that these services (the meaning of these two services) or tasks. We need to consider both of business features and asynchronous communications, rather than just consider from request - response relationship: I have issued a request request; you send me a quote. If you don't send a request in time, my response will also be delayed accordingly, so. The message should be processed as a separate event. Do not assume that the other party can respond immediately. In each party, a separate ACID transaction should be used for persistent state and use a reliable communication method.
Steve Kirk: Even very simple sessions, the agreement may also define it very complicated. For example, the quotation may return within a time limit, or may not be returned on time due to system or business reasons. For each case, the agreement may specify different behaviors. So, how do you best define or model this?
Maarten Mullender: So far, most activities can be modeled by UML using the use case tool, or modeling simple English. Which way to choose depends on the tendency of you and your organization, because these two ways are not excluded. Of course, use UML to add a wide variety of comments. I personally prefer starting from a higher level program description, not from the creation of the use case like most people. Then, these schemes are then transformed into use cases.
Steve Kirk: We can understand the API based on its granularity. For example, the call to the API is rough granularity (call using less or lower frequencies) or fine particle size (calls to use more or higher frequencies)? How do you view the API particle size between the collaborative services? Maarten Mullender: The responsibility and tasks of high-level services should describe their business functions, and this feature description should use the wording that the business in the organization can understand. That is, use business processing. This way you can discuss their needs with the business person, and you can make the definition agreement without changes.
Rough granularity should be used for these tasks. Therefore, for example, it should be considered to submit order or change order, rather than considering changing a certain single-item discount condition, because the order already contains these details. Does this mean that fine particle size is not good? That is not. Check that credit card checks and email address validity uses a simple signature, but you may still need them.
We must consider the abstract process suitable for the design part. For interfaces provided to other parts of the organization, even the interface provided to the outside of the organization, must be considered from the perspective of the business process. For internal interfaces, you can consider from the perspective of the design. Design is a trade-off process. We don't provide the most beautiful solutions, but try to provide effective solutions and take care of the recent and long-term goals.
Steve Kirk: How do you view the message itself?
Maarten Mullender: I consider the message from the perspective of the business document. I think that the business document itself is defining a clear message, which contains a well-defined content, meaning, and restrictions. In .NET, it is easy to define a class with fields and properties and only logicals for checking consistency. Define the correct content and define how business logic passes errors and warnings, may be quite challenging.
However, once the message flow and message content are defined, the method signature is automatically obtained. It is not easy to define method signs and messages using interfaces and classes, but it is not easy to shoot messages to existing infrastructure structures. Note that some design time agreements can specify whether to use transaction messages and how to identify the requester (especially when the requester is a person).
Steve Kirk: You mentioned the role of the infrastructure and the potential complexity of handling errors and warnings. In the application architecture: Concept view, you said that if the infrastructure has more powerful capabilities in processing flow, delivery errors, and warnings, use this infrastructure can greatly simplify the design of the agreement. What advice do you have for the design of the agreement for the current infrastructure and future basic architecture?
Maarten Mullender: It is important to know that the basic architecture can be replaced. The new infrastructure can provide more powerful features that you will want to ensure it. The standard of the basic architecture is being developed. Take a look at the progress of the interoperability of Web services (WS-I). Many suppliers have begun to define standards in routing, security, transaction; they will also provide corresponding implementation.
Steve Kirk: In your paper, you discuss the runtime agreement. How do you apply them during the design process?
Maarten Mullender: I really consider it as a service-class protocol. You define requirements, advanced goals, security requirements, and performance requirements and zoom requirements, and then standardize them. I still don't know any standardized form, but I believe that there will be people will have, because there will be software to configure the policy. Frankly, if we define all other standards while defining management interface criteria, it will be the most important step in the standardization process of the infrastructure.
Steve Kirk: In the application concept, you describe the service and process (controlled other services) and extend it as a model view controller (MVC) and UI components to the user layer (or represent layer). How do you plan to define MVC and UI components? Maarten Mullender: Currently, it is a huge "variable". It depends on whether you want to write components in a web-based entry, whether you want to write a user interface for business processes (LOBs) using the web page, and whether to write client applications. I have worked hard to unify programming models with many colleagues.
I think you should consider the components that can be placed independently on the screen or page. These components contain a view and a controller. The view depends on the channel and the controller automatically determines the channel. First, I consider the tree controller. The root controller is responsible for the process (how the user is converted between parts, which parts, etc. need to be displayed), and the leaf controller is responsible for interacting with components. Then, I consider these trees to form a forest, and the tree is used to interact with the release / book. This allows the components that appears to display unrelated information, and can be configured in the deployment period even after deployment. I hope that I can bring some inspiration, but I know that I can't fully accommodate discussions about this topic and related content.
.NET designer
Maarten Mullender is a solution architect for the .NET Platform Strategy group. This group is responsible for defining the architecture guidelines for enterprise solutions. In the past four years, Maarten has been with our carefully selected corporate partners and customers, explores the combination of products and practical applications, ensuring that cooperation projects are conducive to both parties and provide feedback to the product group. Maarten has been more than 20 years of work experience, has done project managers, product managers and architects - initially in NiXDorf (the company later incorporated Siemens-Nixdorf Information Systems), then add Microsoft, engaged in various products jobs.
Steve Kirk is the application architect of the MSDN Architectural Sample Group. He is responsible for organizing ".NET Architecture Center" and "Using .NET Build Distributed Application". Other projects he participated also include Duwamish books and other MSDN applications.
Go to the original English page