I am a BTS dev with four years experience implementing "classic" BTS solutions.
I have to do a surprise presentation tomorrow on the ESB toolkit 2. Don't ask why. I would like to be as prepared as possible. I am looking for resources which can be quickly assimilated. Ideally (in rough order of importance):
A technical overview of the main moving parts
A few of the implementation details, descriptions of itineraries, resolvers, on-ramps etc.
Installation and deployment.
Any swift help would be greatly appreciated.
If you're familiar with the picture in the Pro BizTalk 2009 book the ESB poster might help you translate some of that info.
Here are some resources:
(obvious) ESB 2.1 on MSDN
The Pro BizTalk 2009 book has a chapter in it on ESB with sections:
BizTalk and the ESB Concept
The Architecture
The Functional Components
Working with Itineraries
Using the Toolkit
Summary
Interesting thread where Richard Seroter posts some info. (author of SOA Patterns with BizTalk Server 2009)
The ESB Toolkit is large toolkit, it's somewhat unfair to ask you to a presentation on it with so little time to prepare.
In its most simple form, say you have a classic BizTalk implementation that does something simple like pickup a file a directory, drive it through some biz process in an orchestration, transform it, and drop it in another directory.
With the ESB toolkit, you would create an itinerary that gets attached to the message and the itinerary are basically instructions on how/what should happen to it. So your business process orchestration and maps are de-coupled from the solution. This also affords you the ability to make changes to the itinerary without re-building the solution. As the itinerary is being driven, services like the map that is needed to transform your messaged can be "looked up" in the UDDI registry. All the while the ESB exception management piece can give devs/admins/users a nice web interface into a central location where all your exceptions are sent. The exception management portal can also provide notifications and alerts for all kinds of exception criteria.
In addition to Derek's answer, I would also suggest readidng up on the ESB Portal and Exception Handling framework components in the Toolkit. I would say that most of my clients using the ESB components are only using those components, and not itineraries, UDDI, etc.
Related
I am in the process of moving an application from c# to node.js. I am learning node.js as I go along, so I am a node.js newbie. I am reading the book, Patterns, Principles and Practices of Domain Driven Design and found a lot of great information my current project could benefit from.
For instance, in the book, there is a sample e-commerce application that contains three bounded contexts: sales, shipping and billing. Each bounded context is responsible for its own database and each bounded context is running in an instance of NServiceBus. This seems to be a great approach as everything is running under the same solution, but different projects. In translating this to node.js, I am having a few areas of confusion.
1) I am having a rough time finding good examples that incorporate node.js with ddd like the e-commerce example above? Some of the hurdle here is the difference in how OOP is handled.
2) If in the book sample code, each bounded context is in its own project and runs within NServiceBus, would this mean that in translating this to node.js, I am using vscode as GUI, that I would need to create a separate parent folder(bounded context) for each project and supply a different port for each bounded context to listen on if I want all of the bounded contexts to run on the same server until I need to scale accordingly?
3) NServiceBus allows messages and events to get passed back ad forth. For node.js, what service bus technology, preferably open source and can run on linux-based machine, exists that would provide the kind of functionality NServiceBus provides and reliably? Should I just look at using rabbitmq alone to provide this functionality including sending events?
You might be interested in wolkenkit, a CQRS and event-sourcing framework for Node.js and JavaScript that plays very well together with domain-driven design (DDD).
Besides the actual framework (which is deployed as npm module wolkenkit), there are a number of sample applications available that show how things work:
wolkenkit-todomvc is the classical TodoMVC application modeled using DDD
wolkenkit-boards is a team collaboration software similar to Trello
wolkenkit-nevercompletedgame is the wolkenkit version of the game at nevercompletedgame.com
wolkenkit-geocaching is an application to manage caches for geocaching
Apart from that you might want to take a look at the wolkenkit documentation, and there again especially at the brochure you can download which explains DDD, event-sourcing and CQRS, what they are, how they relate to each other, and so on…
PS: Please note that I am one of the authors of wolkenkit, so please take my answer with a grain of salt.
I would suggest going through the npm modules tagged with ddd:
https://www.npmjs.com/browse/keyword/ddd
and tagged with service bus:
https://www.npmjs.com/browse/keyword/servicebus
There is also a JavaScript Domain-Driven Design book by Philipp Fehre.
This post is a couple of years old, but for anyone still interested there's a DDD framework for Typescript/node at:
https://github.com/node-ts/ddd
As well as an NServiceBus inspired message bus at:
https://node-ts.github.io/bus/
They're designed to work together to build message driven DDD systems with node
I am not sure this is the correct place to ask this question but I could not see a forum link in spring-statemachine project(http://projects.spring.io/spring-statemachine/) to ask a question to the developers, I hope this is the correct way to do it.
For a while I wrote a blog,
Extremely Axajified Web Application
concerning about extremely asynchronous web applications, using Spring Webflow with those and the limitations of Spring Webflow for these sort of projects.
In my proposed solution, I used extensively state machine principles. At the timeframe that I wrote this blog there wasn't an out of the box State Machine that I can use, so I implemented my own version of it.
Now to my surprise, I just saw Spring Statemachine project and I considering to convert my sample application to use the Spring Statemachine framework.
I have two questions to ask before really starting investing effort to the subject. I checked the samples of the Spring Statemachine, it seems that the configuration of the State Machine is done via Java Code.
Is this only possible method, in my sample application, I am reading an UML Model (XMI) and create via Eclipse M2T a Spring configuration file to startup the application.
I find it is for practical uses to complex for the end user to configure a complex State Machine via Java code. For this purpose I used graphical user interfaces to create UML model of the State Machine and convert this to Spring application context, so it will be easier to understand for the end user.
Which you can see here.
UML Model (unfortunately Stack Overflow is not letting me post extra link so please use "#sm_model" at the end of the previous link)
Eclipse M2T UML Model conversion (see above "#m2t")
So is it possible to provide an XML file and configure Spring Statemachine with it? I can naturally create Java classes via M2T but I have a feeling end result will be nearly unreadable for end user for complex projects.
Second question I like to ask, can Spring Statemachine support "Nested Statemachines", I found in the project web site a hint about the possibility but in the existing sample project I could not find a concrete implementation.
Biggest hurdle for the usage of a State Machine in a practical web application is the "State Explosion" and best way to deal with it, is the "Nested Statemachines".
Does Spring Statemachine support this concept.
You can find more details about what I mean with "State Explosion" and "Nested StateMachines" in the following links.
State Explosion (see above "#stateexplosion")
Nested Statemachines (see above "#nested_sm")
I hope this was the correct place to ask these questions.
Thx for the answers
Sorry for late answer, I just noticed this tagged question.
We don't yet have any functionality to define machine config outside of annotation based config model(javaconfig). Xml config is in our roadmap and you can track its status in ticket https://github.com/spring-projects/spring-statemachine/issues/78.
For your second question, yes we support nested states and even orthogonal regions. Showcase example shows relatively complex scenarios how nested states and transitions between those can be used http://docs.spring.io/spring-statemachine/docs/1.0.0.RC1/reference/htmlsingle/#statemachine-examples-showcase.
I'm in a company re-writing the existing applications, using the full Oracle stack, in a SOA way.
Everything is nice and so on until we're starting to discuss the UI. We are wondering what to use as web framework in order to web application.
In the first hand, we are developers in love with NodeJS and frameworks like Ember.js, we're developing today (until the application is migrated) in Ruby on Rails (so working with Macs). In the other hand, Oracle is providing ADF which is obviously well integrated in the Oracle stack and so on. But when we compare ADF to the way we are working today (Ruby on Rails) or the way we would work in the future (with Ember.js for instance) it looks like less development, more point and click, with an heavy framework.
What are the advantages of ADF ?
What are the right domains where ADF make sense ?
How popular is ADF ? (Especially in the enterprise context)
How hard is the learning of ADF for someone developing today with Ruby On Rails (IDE is Sublime Text, so all is about writing code -- mouse not needed) while for ADF JDeveloper seems mandatory (seems a large use of the mouse and less writing code ?)
I hope my post is understandable.
I've used in production java frameworks like Struts, Struts2, JBoss Seam, Tapestry, Spring, Hibernate and I've moved to ADF 6 years ago, therefore I can't comment on how ADF compares with NodeJS or Ember.js.
What are the advantages of ADF ?
ADF has in Jdeveloper a strong development tool support. If your team is not technically very strong in Java, it might be the right tool for you.
What are the right domains where ADF make sense ?
Web applications providing Desktop-like experience: that means complex input forms, complex querying - screens with lots of data and business rules. By far the most productive framework I've used when building these kind of web applications.
How popular is ADF ? (Especially in the enterprise context)
ADF is a niche at the moment. Though it is strongly supported by Oracle. Most of Oracle's products - e.g. Fusion Apps - are based on ADF, so ADF is here to stay.
How hard is the learning of ADF for someone developing today with Ruby
On Rails (IDE is Sublime Text, so all is about writing code -- mouse
not needed) while for ADF JDeveloper seems mandatory (seems a large
use of the mouse and less writing code ?)
At start, it will look like you are having good progress in relatively short period of time. Then, you will realise that even though Jdeveloper does 'everything' for you, you need to understand every piece of code JDeveloper generates. ADF has a steep learning curve (though you may find others telling you otherwise), it requires a different way of thinking web application development, especially difficult for developers with previous web experience: ADF is using a STATEFUL business layer. So, unless you have been using Stateful Session Beans before, there are good chances to mess up your first ADF Design - is what I keep seeing as ADF consultant. But once you've learn it, productivity-wise is fantastic.
From innovation point of view, ADF sounds like listening to Vanilla Ice in your Beats headsets: it is based on XML, it uses JSF, no sign of dependency injection on ADF Faces. Still, is Ajax-based.
I am new to the enterprise integration area.
We have a requirement to develop a solution where multiple OSS (operations support systems) should talk to multiple EMS (element management systems) and network devices (Different transports and protocols has to be supported), solution should be such that, that it should run in Weblogic.
Queries
Which will be the best fit for this situation ESB/Apache ServiceMix/Spring Integration?
If we use opensource ESBs ( like WSo2 and Talend ESBs) I think we need to maintain two servers ESB server and Weblogic server and ESB/Weblogic integration will be an issue?
Apache servicemix or Spring Integration be deployed/run inside Weblogic?
Whether Apache ServiceMix is supported now, as I could see most updates are happening in fuse ESB only?
You need to analyze your scenario and then decide. If you need only transformation or alongside with a simple routing you can use some frameworks like smooks, camel etc.
You need to transform and still a lot of system involved where you need those transformed messages then you could use an ESB.
Then comes selecting the ESB product is also based on you application eco system. All products are amazing and each fits the better than the other in their own application eco system.
First you need to know a few things on Camel / Fuse ESB / Service Mix
All the above revolve around the same, each of them are projects where camel integration framework is the coding De fact o
1.Camel -- Integration framework and the De fact o coding way(sophisticated in its own way and much flexible)
2.Service Mix -- Container for deploying the your integration code. (Camel integration code)
3.Fuse ESB -- Enterprise Feather on the hat of Service Mix where it provides a Studio for coding , a list of components and wrappers like clustering and other facilities around service service mix
.
I would like you to also consider Mule ESB which could also and it will be a good contender in your list.
Some answers for your questions
1.You can deploy Camel code or the spring integration code into the what so ever container (all in the hands Maven and jar management thing you need to do....)
2.Service mix is a Apache license and is complete open source and if you need some support I suggest you to choose the FUSE ESB which is not part of JBoss family and powered by RedHat
Please follow this link below for more detailed discussion from other stackoverflow.com users
use the below for your analysis
Apache Camel and other ESB products
What is an ESB and what is it good for?
Messaging, Queues and ESB's - I know where I want to be but not how to get there
JMS and ESB - how they are related?
I'm not too familiar with ESB or Biztalk and am trying to get my head around what makes the most sense from an EAI perspective if you already own Biztalk. As I understand Biztalk is a message broker(hub and spoke) and the ESB pattern is an anti-broker where the conceptual "bus" is made of individual distributed components that talk to each other somehow.
Message brokers inherently represent a single point of failure as opposed to an ESB where one component failing does not bring down the "bus" as a whole. Also my understanding is that Biztalk is monolithic in the sense that messaging, orchestrations are tightly coupled and scaling is problematic.
If the scenario at hand is:
Biztalk is already being used primarily for running different orchestrations based on different files received from outside parties.
A bunch of inhouse custom appications which are currently tightly coupled to system such as CRM and payroll need to be refactored to abstract out these dependencies.
Would it make sense to use Biztalk directly or Biztalk ESB toolkit for achieving ESB functionality or would it make sense to use a proper ESB implementation such as NServiceBus or Service Bus for Windows which is based on Azure Service Bus.
What are the pros and cons of using Biztalk directly to achieve EAI vs. using a proper ESB.
Would each application take a hard dependency on Biztalk and whether this is desirable?
I will leave this as an open ended discussion since there is no right or wrong answer.
#StuartLC:
Thanks for your response. I've read several of the links you posted but still did not get a clear sense of whether Biztalk would make sense as an ESB solution vs. using something like NServiceBus. Both seem to implement the "ESB" pattern in one way or another. Question being which one has a cleaner implementation, better development experience and low ramp up time. My assessment so far(from pure research only) is that yes Biztalk can be used but it is painful and requires very specialized dev. skill sets. Latency and scaling being problematic and the fact that Biztalk will
eventually be assimilated into the (Azure?) Service Bus and the Biztalk SKU will cease to exist.
On the other hand, a framework like NService bus has relatively low ramp up time, can be easily picked up by a dev. having good .NET programming skills in general and can interface easily with Biztalk.
Given the above, would it still make sense to go the Biztalk route even though you currently have Biztalk in house or to future proof yourself go with a proper ESB such as NService Bus ?
I believe many components of your open-ended question have already been covered on SO:
Pros/Cons of using BizTalk instead of NServiceBus or MassTransit
What ESB systems work best for the .Net stack?
Microsoft BizTalk Server vs Azure AppFabric Service Bus...?
BizTalk 2009 ESB Confusion
Is BizTalk an ESB?
However, IMO it is just a flawed / short-sighted implementation which which would result in tight coupling between apps and endpoints. Loose coupling is easily achieved : (even without the ESB toolkit):
By using multipart messages and canonical internal schemas for decoupling dependencies.
Orchestrations and ports should be decoupled by publishing via the message box
Single point-of-failure is also avoidable:
Configuring Retries and Alternative / backup transports on communication adapters
Redundancy achieved e.g. via Server Groups and Clustering
And fall back using compensation for failed delivery
IMO the Achilles heel when using BizTalk as an ESB is the lack of guaranteed latency e.g. here which is exarcebated if BTS gets into a throttling state.
Update
IMO the choice boils down to a matter of whether you have control over all systems in your environment.
If you are integrating an internal enterprise consisting only of homogeneous, contemporary (and mostly SOA and EDA) applications over which you have direct control, MassTransit or NServiceBus would likely more than do the job give and you better productivity and ramp up time.