microdot | Microdot : An open source .NET microservices framework | Microservice library

 by   gigya C# Version: v3.1 License: Apache-2.0

kandi X-RAY | microdot Summary

microdot is a C# library typically used in Architecture, Microservice applications. microdot has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.
Microdot: An open source .NET microservices framework
    Support
      Quality
        Security
          License
            Reuse
            Support
              Quality
                Security
                  License
                    Reuse

                      kandi-support Support

                        summary
                        microdot has a medium active ecosystem.
                        summary
                        It has 1456 star(s) with 217 fork(s). There are 106 watchers for this library.
                        summary
                        It had no major release in the last 12 months.
                        summary
                        There are 12 open issues and 11 have been closed. On average issues are closed in 286 days. There are 16 open pull requests and 0 closed requests.
                        summary
                        It has a neutral sentiment in the developer community.
                        summary
                        The latest version of microdot is v3.1
                        microdot Support
                          Best in #Microservice
                            Average in #Microservice
                            microdot Support
                              Best in #Microservice
                                Average in #Microservice

                                  kandi-Quality Quality

                                    summary
                                    microdot has 0 bugs and 0 code smells.
                                    microdot Quality
                                      Best in #Microservice
                                        Average in #Microservice
                                        microdot Quality
                                          Best in #Microservice
                                            Average in #Microservice

                                              kandi-Security Security

                                                summary
                                                microdot has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
                                                summary
                                                microdot code analysis shows 0 unresolved vulnerabilities.
                                                summary
                                                There are 0 security hotspots that need review.
                                                microdot Security
                                                  Best in #Microservice
                                                    Average in #Microservice
                                                    microdot Security
                                                      Best in #Microservice
                                                        Average in #Microservice

                                                          kandi-License License

                                                            summary
                                                            microdot is licensed under the Apache-2.0 License. This license is Permissive.
                                                            summary
                                                            Permissive licenses have the least restrictions, and you can use them in most projects.
                                                            microdot License
                                                              Best in #Microservice
                                                                Average in #Microservice
                                                                microdot License
                                                                  Best in #Microservice
                                                                    Average in #Microservice

                                                                      kandi-Reuse Reuse

                                                                        summary
                                                                        microdot releases are available to install and integrate.
                                                                        summary
                                                                        Installation instructions are available. Examples and code snippets are not available.
                                                                        summary
                                                                        microdot saves you 0 person hours of effort in developing the same functionality from scratch.
                                                                        summary
                                                                        It has 1 lines of code, 0 functions and 607 files.
                                                                        summary
                                                                        It has low code complexity. Code complexity directly impacts maintainability of the code.
                                                                        microdot Reuse
                                                                          Best in #Microservice
                                                                            Average in #Microservice
                                                                            microdot Reuse
                                                                              Best in #Microservice
                                                                                Average in #Microservice
                                                                                  Top functions reviewed by kandi - BETA
                                                                                  kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
                                                                                  Currently covering the most popular Java, JavaScript and Python libraries. See a Sample Here
                                                                                  Get all kandi verified functions for this library.
                                                                                  Get all kandi verified functions for this library.

                                                                                  microdot Key Features

                                                                                  A service container which accepts command-line parameters that define how your service runs, e.g. as a command-line process or a Windows Service, with or without console logs, the port your service will use to listen to incoming requests, whether it runs alone or as part of a cluster (and the cluster name to join), and whether it should shut down gracefully once a monitored parent PID exits. Sensible defaults are used based on your build configuration (Release/Debug).
                                                                                  inter-service RPC allowing services to call one another. Each service exposes one or more C# interfaces, and clients call it by receiving an instance of an interface that performs transparent RPC using JSON over HTTP. This includes client-side load balancing (no need for a load balancer in front of your service), failover support, and secure comunication via HTTPS with certificates validations for sensitive services, if needed.
                                                                                  Client-side, opt-in, transparent response caching between services. Useful to reduce end-to-end latency when many of your services rely on a few core services that serve relatively static data that is allowed to be eventually consistent. Also useful to reduce the impact of said services failing, while their responses are still cached by clients.
                                                                                  Logging and Distributed Tracing facilities to help diagnosing issues in production, such as Exception Tracking. Client- and server-side events are emitted for every call and can be used to trace how a request was handled across all services (the call tree), and the latency each one contributed.
                                                                                  Client-side Service discovery that supports HashiCorp's Consul or manual configuration-based discovery.
                                                                                  All components emit performance metrics via Metrics.NET for real-time performance monitoring.
                                                                                  Detailed Health Checks are provided for each subsystem, and can easily be extended to cover your service's external dependencies.
                                                                                  A hierarchical configuration system based on XML files which allows overriding values based on where and how the microservice is hosted (per data center, environment and microservice). The configuration is consumed from code via strongly-typed objects with automatic mapping and is refreshed at real time when XML files change.
                                                                                  Highly modular design and first-class dependency injection support using Ninject, allowing you to swap out every component with your own implementation if needed.
                                                                                  Tools to help test your service, for Unit Tests, Service Component Tests and Service Integration Contract Test.

                                                                                  microdot Examples and Code Snippets

                                                                                  No Code Snippets are available at this moment for microdot.
                                                                                  Community Discussions

                                                                                  Trending Discussions on microdot

                                                                                  How to load-balance the workload of a service in .NET
                                                                                  chevron right

                                                                                  QUESTION

                                                                                  How to load-balance the workload of a service in .NET
                                                                                  Asked 2018-Nov-04 at 20:38

                                                                                  I am thinking of building an application using a Service Oriented Architecture (SOA).

                                                                                  This architecture is not as complex and messy as a microservices solution (I think), but I am facing similar design problems. Imagine I have services of type ServiceA that send work to services of type ServiceB. I guess, if I use a queue, then load balancing will not be a problem (since consumers will take what they can handle from the queue). But queues tend to generate some bad asynchrony in the code that requires extra effort to fix. So, I was more inclined to use HTTP calls between services, using the efficient and amazing async/await feature of C#. But this generates issues on sharing the workload and detecting services that are saturated or dead.

                                                                                  So my questions are:

                                                                                  1. Is there a queue that supports some sort of async/await feature and that functions like an HTTP call that returns the result where you need it and not in some callback where you cannot continue your original execution flow?
                                                                                  2. How do I load-balance the traffic between services and detect nodes that are not suitable for new assignments when using HTTP? I mean, I can probably design something by myself from scratch, but there ought to be some standard way or library or framework to do that by now. The best I found online was this, but it is built for microservices, so I am not sure if I can use it without problems or overkills.

                                                                                  Update: I have now discovered this question, that also asks for awaitable queues: awaitable Task based queue ...and also discovered Kubernetes, Marathon, and the like.

                                                                                  ANSWER

                                                                                  Answered 2018-Nov-04 at 20:38

                                                                                  Regarding your first question, NServiceBus, which is a commercial framework for .NET that abstracts message transports and adds many features on top of them, has the exact feature that you are looking for. They actually call it "callbacks" and the usage is as follows:

                                                                                  Assuming you have a Message to send to a backend service and a Response that you expect back, you would do, in ServiceA:

                                                                                  var message = new Message();
                                                                                  var response = await endpoint.Request(message);
                                                                                  log.Info($"Callback received with response:{response.Result}");
                                                                                  

                                                                                  Where endpoint is an NServiceBus artifact that allows you to send messages and receive messages.

                                                                                  What this simple syntax will do is put Message in a queue and wait (asynchronously) until the message has been handled by a backend service and it has replied to it. The response is a message of type Response in a queue.

                                                                                  In ServiceB, you would do:

                                                                                  public class Handler : IHandleMessages
                                                                                  {
                                                                                    public Task Handle(Message message, IMessageHandlerContext context)
                                                                                    {
                                                                                      var responseMessage = new ResponseMessage
                                                                                      {
                                                                                          Result = "TheResult"
                                                                                      };
                                                                                      return context.Reply(responseMessage);
                                                                                    }
                                                                                  }
                                                                                  

                                                                                  This allows you to have multiple ServiceA nodes sending messages to multiple ServiceB nodes (competing consumers on a single queueu). NServiceBus takes care of routing the response to the right ServerA for every given message.

                                                                                  Note that this has the disadvantage that if ServerA goes down while waiting a response, you'll never receive the response. For this reason, this pattern is not recommended for most scenarios.

                                                                                  Regarding your question number 2, I would say a load balancer would do the job. For more complex scenarios, you could look at Service Fabric.

                                                                                  Source https://stackoverflow.com/questions/52775484

                                                                                  Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                                                                                  Vulnerabilities

                                                                                  No vulnerabilities reported

                                                                                  Install microdot

                                                                                  The easiest way to start using Microdot is by adding the Gigya.Microdot.Orleans.Ninject.Host NuGet to a Console Application C# project. This will also install its dependencies, which includes everything you need to build your service. Then will need to:.
                                                                                  Create your service host that will run your service
                                                                                  Define your public-facing service interface. Methods on that interface can be called from outside.
                                                                                  Define your stateless-worker service grain and interface that implement the public-facing interface.
                                                                                  Define any other grains you need to perform the required processing.
                                                                                  Run your service (F5)

                                                                                  Support

                                                                                  For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
                                                                                  Find more information at:
                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit

                                                                                  Share this Page

                                                                                  share link

                                                                                  Explore Related Topics

                                                                                  Consider Popular Microservice Libraries

                                                                                  mall

                                                                                  by macrozheng

                                                                                  istio

                                                                                  by istio

                                                                                  apollo

                                                                                  by apolloconfig

                                                                                  Try Top Libraries by gigya

                                                                                  ReactNative-Demo

                                                                                  by gigyaJavaScript

                                                                                  Magento-2

                                                                                  by gigyaPHP

                                                                                  Compare Microservice Libraries with Highest Support

                                                                                  apollo

                                                                                  by ctripcorp

                                                                                  istio

                                                                                  by istio

                                                                                  open-liberty

                                                                                  by OpenLiberty

                                                                                  envoy

                                                                                  by envoyproxy

                                                                                  seata

                                                                                  by seata

                                                                                  Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                  Find more libraries
                                                                                  Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                  Save this library and start creating your kit