{"id":13753179,"url":"https://github.com/xigadee/Microservice","last_synced_at":"2025-05-09T20:35:05.942Z","repository":{"id":14097742,"uuid":"67787265","full_name":"xigadee/Microservice","owner":"xigadee","description":"Xigadee is an open-source Microservice framework, developed by Paul Stancer and Guy Steel. The libraries provide a simple and consistent approach for building modern enterprise API and Microservice based solutions; specifically those solutions targeted on the Azure platform.","archived":false,"fork":false,"pushed_at":"2023-01-13T06:41:45.000Z","size":9887,"stargazers_count":54,"open_issues_count":68,"forks_count":20,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-16T05:32:37.023Z","etag":null,"topics":["azure","microservice","microservices-application","serverless","serverless-architectures","serverless-framework","xigadee","xigadee-microservice-library"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xigadee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-09T09:47:19.000Z","updated_at":"2023-03-10T17:32:17.000Z","dependencies_parsed_at":"2023-01-17T01:45:59.999Z","dependency_job_id":null,"html_url":"https://github.com/xigadee/Microservice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xigadee%2FMicroservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xigadee%2FMicroservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xigadee%2FMicroservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xigadee%2FMicroservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xigadee","download_url":"https://codeload.github.com/xigadee/Microservice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253321841,"owners_count":21890476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","microservice","microservices-application","serverless","serverless-architectures","serverless-framework","xigadee","xigadee-microservice-library"],"created_at":"2024-08-03T09:01:17.810Z","updated_at":"2025-05-09T20:35:00.852Z","avatar_url":"https://github.com/xigadee.png","language":"C#","readme":"![Xigadee](/docs/X2a.png)\n\nXigadee is an open-source Microservice framework, developed by [Paul Stancer](https://github.com/paulstancer) and [Guy Steel](https://github.com/guysteel), and originally released under the Apache 2 license by Hitachi Consulting in 2016. You are free to use it within your own commercial applications without restriction. \n\nThe framework is a result of our experience - and frustration - over the past five years, in building large-scale distributed cloud applications for our enterprise customers.\n\nWe found that when constructing Microservices, we could spend as much time on building and testing the repeatable \"plumbing\" code (messaging, monitoring, communication, security etc.) as we did on the actual application business logic. \n\nSo our goal with Xigadee is to solve that challenge. To provide a consistent development approach; and more importantly - a set of reusable tools that we can apply to any type of Microservice application - while removing the drudgery and overhead of \"re-inventing the Microservice-wheel\" each time we construct a new distributed solution.\n\n**_Please note: the current main branch of the code is being converted to support both .NET Standard 2.0 and .NET Framework 4.7 ready for release 2 of Xigadee. Ideally you should have Visual Studio 2017 v15.4 or later to build._**\n\n## A quick demonstration\n\nThe Xigadee libraries are built using Microsoft's .NET technology, and have specific accelerators to target Platform-as-a-Service (PaaS) technologies in the Azure stack.\n\nAll the libraries utilise a simple declarative programming model to aid in the construction of the Microservice. \n\nA quick sample of code from [this](Src/Test/Test.Xigadee/Samples/PersistenceLocal.cs) unit test shows how a Microservice can be quickly constructed within a few lines of code. This code can be found in the '_PersistenceSingle_' method:\n```C#\nPersistenceClient\u003cGuid, Sample1\u003e repo;\n\nvar p1 = new MicroservicePipeline(\"Local\")\n    .AddChannelIncoming(\"request\")\n        .AttachPersistenceManagerHandlerMemory(\n              keyMaker: (Sample1 e) =\u003e e.Id\n            , keyDeserializer: (s) =\u003e new Guid(s)\n            , versionPolicy: ((e) =\u003e e.VersionId.ToString(\"N\").ToUpperInvariant(), (e) =\u003e e.VersionId = Guid.NewGuid(), true)\n        )\n        .AttachPersistenceClient(out repo)\n        .Revert()\n    ;\n\np1.Start();\n\nvar sample = new Sample1() { Message = \"Hello mom\" };\nvar id = sample.Id;\n//Run a set of simple version entity tests.\n//Create\nAssert.IsTrue(repo.Create(sample).Result.IsSuccess);\n//Read\nvar result = repo.Read(id).Result;\nAssert.IsTrue(result.IsSuccess);\nAssert.IsTrue(result.Entity.Message == \"Hello mom\");\n```\nThis service creates a quick memory-based entity store for the POCO class, Sample1, that supports CRUD (Create/Read/Update/Delete) functions for the entity, with optimistic locking, and additional versioning and search methods, based on a key field (Id) and optional version field (VersionId) that are defined in the entity. \n\nIf we were to use the [Xigadee Azure](Src/Xigadee.Azure/_docs/Introduction.md) library, we could replace the following method:\n```C#\n.AttachPersistenceManagerHandlerMemory(\n```\nwith this method, which would switch it to use a DocumentDb (now CosmosDb) backed entity store:\n```C#\n.AttachPersistenceManagerDocumentDbSdk(\n```                       \nor this method to use a Azure Blob Storage collection instead:\n ```C#\n.AttachPersistenceManagerAzureBlobStorage(\n```\n\nIf you want a more in-depth explanation of how to build a new Microservice application using the Xigadee libraries, then jump to the following article: [The 15-minute Microservice.](Src/Xigadee.Platform/_Docs/fifteenminuteMicroservice.md)\n\n## Feedback\nXigadee is in active development across a number of development projects, and is still very much a work-in-progress; we are still improving the code, extending the unit-test coverage, adding new features, and providing more detailed documentation and code examples.\n\nWe have recently shipped release 1.1 of the Framework, which has some key improvements in creating custom application logic. Our next version will be 2.0 which will be built under the .NET Standard 2.0, which will allow Xigadee applications to work with both traditional .NET Framework libraries, but also to use the new .NET Core multi-platform capabilities, such as Linux and ARM based systems.\n\n We welcome feedback and suggestions for future features of the Framework. More importantly, if you are using the libraries and discover a bug, please report it [here](https://github.com/xigadee/Microservice/issues/new) so we can track and fix it.\n\n## Quick guides\n\nIf you are new to Microservice development, then the following links gives you an overview of the technology and how a Microservice based application is composed.\n* [What is a Microservice?](Src/Xigadee.Platform/_Docs/WhatIsAMicroservice.md)\n* [An introduction to Xigadee.](Src/Xigadee.Platform/_Docs/Introduction.md)\n\n## NuGet Packages\n\nXigadee is made up of a set of libraries, which are listed below. They support different areas of Microservice functionality. These capabilities can be added to your project through the relevant [NuGet](https://www.nuget.org/packages?q=Tags%3A%22Xigadee%22) packages. \n\n* [Xigadee](Src/Xigadee.Platform/_Docs/Introduction.md) \n\t- This is the core root library that is used to create Microservice based solutions. \n* [Xigadee Azure](Src/Xigadee.Azure/_docs/Introduction.md) \n\t- This library allows for the seamless integration with many of the Azure platform PAAS services.\n* [Xigadee Api Server](Src/Xigadee.Api.Server/_docs/Introduction.md)\n\t- This package allows for the rapid development of API based services, and includes integration with the Unity DI framework.\n* [Xigadee Api Client](Src/Xigadee.Api.Client/_docs/Introduction.md)\n\t- This package speeds up the development of client libraries that consume API services.\n* [Xigadee Console](Src/Xigadee.Console/_docs/Introduction.md)\n\t- This package is designed to help in building simple console based test harnesses, for your Microservice applications.\n* [Xigadee Framework](Src/Xigadee.Framework/_docs/Introduction.md)\n\t- This package is used to provide deeper integration in to the Windows platform, and supports features which are not part of the .NET Standard library set.\n\nTo read what's new in the latest NuGet release packages, please click [here](/docs/whatsnew.md).\n\n## Legal Stuff\n\nParts of Xigadee are the copyright of [Hitachi Consulting](http://www.hitachiconsulting.com) 2012-2017. \n\nXigadee is released in its entirety under the Apache License, Version 2.0 (the \"License\").\nYou may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0\n \nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and limitations under the License.\n\n\n\u003ctable\u003e\u003ctr\u003e \n\u003ctd\u003eCreated by: \u003ca href=\"http://github.com/paulstancer\"\u003ePaul Stancer\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\u003c/table\u003e\n","funding_links":[],"categories":["serverless-framework"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxigadee%2FMicroservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxigadee%2FMicroservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxigadee%2FMicroservice/lists"}