Enterprise development reference architecture (Edra), that is, the previous shadowfax, released the official version 1.0 in March, now the project is in the development stage of 1.1 (a 1.1 test version has been released ).
Well, Let's explain the enterprise development application framework. edaf is an enterprise-level development platform and framework provided by this project. developers can develop enterprise-level applications based on edaf. Edra is a reference, description, and specification for edaf development...
First look at the Edra Architecture Overview image:
Edra can be regarded as a very typical SOA architecture. We can see that the graph is divided into two major parts: Service Interface and Service implementation. Based on the name, we can roughly guess their respective roles and positions. In practical applications, we can usually deploy the interface and implementation to different tier for better scalability. Let's go from top to bottom based on this figure. :)
First, the client app sends a request to the service interface, which can be a variety of protocols, such as WebServices, MSMQ, and remoting. Each Protocol corresponds to an interface transport, which accepts the request, and pass it to the corresponding adapter.
The adapter can initialize the request, such as security verification. Then, the adapter creates a context object and places the request in the context object, then, the context object is passed to the pipeline in the service interface.
Pipeline is a highly Configuration component. It loads various handler according to the configuration file. Context objects containing the request content are processed and transmitted by the loaded hander in sequence, and finally reach an interface pipeline target, which is a dispatching target, which can be configured according to, use different protocols to pass context to the Service implement section (Web Service, MSMQ, DCOM, or inproc direct call ).
Context first arrives at the dispatching transport (similar to service implement, there are also a variety of transport to receive multiple Protocol requests) of the Service implement. Each transport also has an adapter, the adapter then creates the pipeline and transmits the context. Context does the same thing in the pipeline of Service implementation. In the end, context reaches a Business Action target, which calls the "real" Business Action.
The Business Action executes the corresponding action according to the request contained in the context, generates a response, puts the response into the context, and then returns the context to the Business Action target.
The context object is returned along the next route. The returned path may also be processed by handler. Finally, the context returns the interface transport adapter that created it.
The adapter needs to check whether the context contains the exception information, and identify whether the exception information is a business logic execution exception or a system exception generated by edaf, it is directly returned to the client app. If it is the latter, logs or other operations are performed, and a packaged security error message is returned to the client app.
On the Edra homepage, A Global Bank reference implementation is also provided to demonstrate a banking system project built using Edra. Edra wiki also has a lot of interesting content.
Finally, if you are interested in this architecture and framework, you can also look at another Microsoft Project: fabriq, fabriq is a high-performance, one-way, queue-based messaging architecture implementation.