Middleware vs SOA - soa

Is SOA is part of Middleware or is it the other way around? Im quite confused as how to differentiate both of them. Definition wise, Middleware is computer software that provides services to software applications beyond those available from the operating system. While service oriented architecture is an architectural pattern where in services are provided to the other components. Any simple example are very much appreciated. Tqvm in advanced

SOA is an architectural style that helps build services or components that are loosely coupled but talk to each other through well-defined interfaces such as WSDL or RAML. The services can be run on application servers and can be integrated through an Enterprise Service Bus (ESB). Both ESB and application servers are categorized as middleware.

Related

Trying to setup mimik's back-end services on AWS Ec2 instance

Here are a few clarifications we need from you :
Not able to find back-end service (mDS, mSS) components on GitHub. Could you let us know the path and the implementation steps? We are trying to deploy mimik's back-end components on the EC2 instance and try to configure/access the micro service deployed on the local laptop from another device.
How can we deploy microservices written in other languages like java, python etc. we can see support for microservices written in Java Script( Node JS) only.
mDS and mSS are core mimik backend services and are not publicly available on any website. The capabilities/functionalities of mSS and mDS are provided within edgeEngine during runtime on supported platforms. You can learn about these concepts and develop your own solutions in tandem with edgeEngine and various backend microservices on our developer portal below:

https://developer.mimik.com/products/
1.1. You can run edgeEngine on any of our supported platforms and deploy any of our publicly available local microservices as a way of learning how to develop, deploy and work with edge-microservice.
The agent program on any platform can be developed by any desired programming language; however, for exposing a restful API at the edge to provide any specific function or for orchestration purpose, you need to develop them using JavaScript. In this way you can re-use the microservice and deploy them dynamically on all platforms with different operating systems. This means we only support the deployment of microservices written in JavaScript on to edegEngine environment
If you are trying to develop your own commercial solution please contact mimik support team directly at support#mimik.com.
In addition to the above response by Maz Mandi, please note that your application on top of edgeEngine (application and microservices) will communicate with your application back-end directly vs. going through mimik global functions such as mDS and mSS.

Microservices using .net Framework 4 and above ( instead of .NET Core)

I am a .net developer and trying to learn implementing Microservice using .NET Framework >4.0.
All the article that I refer from internet search, they all talks about implementing Microservices using .NET Core. But I wonder, I could not find any article that says how to develop microservice using .NET Framework >4.0.
I knew that .net core has all the features and run time for Microservices but my question is as below
Question -
1. Is not possible develop Microservice using .NET framework at all ? If not then what are all constrain and limitation ?
2. What are the alternatives if we choose .NET Framework only to develop Microservices oriented architecture
3. Any example/ sample code will be helpful
Thank you
As mentioned in the comments, microservices (MS) is not bound to any language, it's an architectual principle.
Microservices are a software development technique —a variant of the
service-oriented architecture (SOA) structural style— that arranges an
application as a collection of loosely coupled services. In a
microservices architecture, services are fine-grained and the
protocols are lightweight.
https://en.wikipedia.org/wiki/Microservices
You can build MS/SOA with any language and a variety of platform solutions, but there are drawbacks of course to some implementations.
All you do is define a small service A and another small service B to act as your system, exposing data through lightweight REST API(s) (maybe even gRPC) and let them talk to each other - and voila! you have your MS system.
But why are e.g. Microsoft pushing to use .NET Core for MS systems? My best guess would be because of Docker (and other container solutions), to containerize each MS. The difference between .NET Core and .NET Framework in this context is containerization, .NET Core can run on all platforms, such as linux - and docker supports linux containers.
In computing, self-contained system (SCS) is a software architecture
approach that focuses on a separation of the functionality into many
independent systems, making the complete logical system a
collaboration of many smaller software systems
https://en.wikipedia.org/wiki/Self-contained_system_(software)
Why are the linux containers important? Well, I would argue because of Kubernetes (or other container orchestration tools).
Kubernetes (commonly stylized as k8s) is an open-source
container-orchestration system for automating application deployment,
scaling, and management. It was originally designed by Google, and
is now maintained by the Cloud Native Computing Foundation. It aims to
provide a "platform for automating deployment, scaling, and operations
of application containers across clusters of hosts". It works with
a range of container tools, including Docker. Many cloud services
offer a Kubernetes-based platform or infrastructure as a service (PaaS
or IaaS) on which Kubernetes can be deployed as a platform-providing
service. Many vendors also provide their own branded Kubernetes
distributions.
https://en.wikipedia.org/wiki/Kubernetes
Kubernetes is a very powerful container orchestration system. I't can scale your loosely coupled MS linux containers at will - and so much more.
Now, I'd suggest you to keep on reading, a good start would be this:
Read
https://learn.microsoft.com/en-us/dotnet/architecture/microservices/
Source code
https://github.com/dotnet-architecture/eShopOnContainers
https://github.com/EdwinVW/pitstop
Videos
https://www.youtube.com/watch?v=-AfZxdXa7yc
https://www.youtube.com/watch?v=qWUINCZHs6E

WPF or ASP.NET as WCF Client

I am new to WCF and going through tutorials right now. I was wondering what are the benefits and disadvantages of using a WPF or an ASP.NET web application as a client for a service. I understand it will depend on the kind of service, but besides the common difference of one being a windows app and other a web application, what are the advantages of one over other.
First of all, the choice of client technology does not depend at all on the kind of service you will be talking to. Both WPF/Winforms and a Web app will be perfectly capable to talk to a web service.
Instead, choice of client technology should purely be driven by requirements on the client side
Factors that you should consider when coosing one client technology over the other are:
Know-How available to you (and your team)
Deployment scearios: How do you get your app to the users, etc.
Client environment: How many OSs do you need to support, how many different browsers would you have to support when doing a web app?
Do you have occasionally connected scenarios, or do you need privileged access to client resources? - This would tip the scale somewhat towards a Rich client.
Even so, in many cases a web app appears to be a very valid option as you have access to a wealth of non-MS tech like Javascript Frameworks, CSS resources etc. etc.
On a personal note: Do not use WCF to define your web services - there are fantastic Open Source Frameworks, most notably ServiceStack that will make you more productive and concentrate on what your service does and less on the mechanics and abstractions.

Consuming ASP.NET Web API in C#

ASP.NET Web API seems to lack the service contract / data contract features of WCF web services which would have generated a wsdl that could be used to generate proxy classes. I'm wondering whether Web API is intended for consumption in a service-oriented architecture or if it's meant simply for Ajax consumption.
Web API (as far as I know) does not support WSDL generation. If you absolutely require a WSDL, WCF REST might be an option, though no longer supported.
Service-oriented architecture does not require the use of SOAP or reliance on a WSDL and RESTful services aren't restricted to being useful only for AJAX requests. There are quite a few RESTful web service client libraries available from nuget that makes interacting with these services easier. Though it might not be as simple as using code-gen, creating a library of POCO classes you can share with other C# clients also makes things easier. Hope that helps.

Recommended architecture - Server application that provides a ASP.NET Web front end

I'm having a look at the best way of developing a server application that presents an ASP.NET MVC front end for management/reporting.
The server app (service?) will also need to provide TCP listener as well as communicate to devices on a COM port.
The most obvious way I can think of doing this is to have an ASP.NET MVC web app and have a windows service that talks to the web app using a web calls/services. I guess then I'd talk to the service using the tcp listener or remoting?
The only other way would be to actually host an web server component in the service, and not use IIS which seems a bit to over the top.
Does anyone have any experience of this/recommendations?
It's a bit open ended but hope I've explained the basics.
TIA
Sam
I would probably try and decouple things a bit more.
Start off w/ a core project where all your business logic lies (agnostic of how users interact with it); sort of the DDD Domain Model idea.
Then, create two projects which consume that core project, one that is your MVC app, and another that's a WCF or ServiceStack-based service which can handle your TCP stuff.
Share state between them using the normal means; either inter-process comms, shared database, etc.
It sounds to me like you're looking for something very close to Windows Communication Foundation. Your requirements for IIS hosting, ASP.NET communication, and TCP communication. MSDN has a brief overview of WCF up here. There's also an article available about the transportation protocols here.
There are some good -- if a little old -- WCF questions here on Stack Overflow. I've just started delving into this world myself, and I have to admit that it's daunting at first. The Beginner's Guide (found under the first hyperlink above) has some slightly old, but very useful tutorial videos about WCF.
I will say that, although it may seem daunting or difficult, it's certainly better to use an existing, established technology for your purposes than to try to write your own homebrewed solution for something like this.
I started ServiceStack because I needed a high-performance web services framework option that promotes the correct way to develop web services.
ServiceStack can be run on top of any ASP.NET host or self-hosted using the HttpListener option. See the Starter Templates for example projects of a Console App or Windows Service hosts. Although even under IIS, ServiceStack is very fast and imposes very little overhead with a hello world service executing in sub <1ms response times.
ServiceStack also comes with .NET's fastest text serializers and a myriad of high-performance caching providers so you can escape the XML config bound ASP.NET's session and caching provider model.
Because ServiceStack encourages a clean message-based development model your same web services can take advantage of the Redis MQ Host allowing it to be invoked outside of HTTP context using Redis as a broker - with no code-changes required.
Redis is one of the fastest distributed NoSQL data stores.

Resources