Nelibur alternatives and similar packages
Based on the "API" category.
Alternatively, view Nelibur alternatives based on common mentions on social networks and blogs.
-
NancyFx
Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. Note: This project is no longer maintained and has been archived. -
ServiceStack
Thoughtfully architected, obscenely fast, thoroughly enjoyable web services for all -
Hot Chocolate
Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE. -
WexFlow
An easy and fast way to build automation and workflows on Windows, Linux, macOS, and the cloud. -
Xamarin.Essentials
Essential cross platform APIs for your mobile apps. -
FFImageLoading - Fast & Furious Image Loading
Image loading, caching & transforming library for Xamarin and Windows -
Mobius: C# API for Spark
C# and F# language binding and extensions to Apache Spark -
JsonApiDotNetCore
A framework for building JSON:API compliant REST APIs using ASP.NET and Entity Framework Core. -
SapphireDb
SapphireDb Server, a self-hosted, easy to use realtime database for Asp.Net Core and EF Core -
🎨 Awesome .Net Core Education
A curated list of awesome articles and resources for learning and practicing .Net Core and its related technologies. -
Lib.AspNetCore.ServerSentEvents
Lib.AspNetCore.ServerSentEvents is a library which provides Server-Sent Events (SSE) support for ASP.NET Core -
EISK Web API
Project based on latest .NET (v6.0) technologies for building scalable web api, along with clean architecture patterns. -
RedditSharp
C# Implementation of the Reddit API. This is an ("unofficial") Fork of SirCmpwn/RedditSharp with Nuget package/support. -
CommandQuery
Command Query Separation for 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions -
Lib.Web.Mvc
Lib.Web.Mvc is a library which contains some helper classes for ASP.NET MVC such as strongly typed jqGrid helper, attribute and helper providing support for HTTP/2 Server Push with Cache Digest, attribute and helpers providing support for Content Security Policy Level 2, FileResult providing support for Range Requests, action result and helper providing support for XSL transformation and more. -
cryptocompare-api
An async-based CryptoCompare API client library for .NET and .NET Core -
Juka
🥣 Juka Programming Language - Fast Portable Programming Language. Run code anywhere without complicated installations and admin rights. Simple, yet powerful new programming language [Easy to code and run on any system] IOT devices supported! -
Genius.NET
.NET library to access Genius API @ (https://www.genius.com) -
Google Search Results in .NET
Google Search Results via SERP API DotNet Package -
Automatic Migration support for EF Core
EF Core Automatic Migration -
DuckSharp
An unofficial asynchronous .NET DuckDuckGo Instant Answer Web API wrapper -
Developer Exception Json Response Middleware
Http Middleware Extensions for ASP.NET Core application -
Gamepad-Controller-Test
Gamepads are often used as replacements for Mouse / Keyboard. While it is not possible to use them with every game, there are several games available that support gamepad controls, especially console ports of PC titles or even games designed for gamepad controls in the first place. To ensure maximum compatibility, Windows uses a default gamepad driver which supports a wide variety of gamepads. The most notable exception is the Xbox controllers, which still use XBCD for their enhanced features (e.g., force feedback). Therefore I have decided to make an easy test for gamers to test their gamepad controller devices on the go online without wasting any time trying to install third-party softwares which are usually out of order on their PCs to get the job done. This project is inspired by the work of @greggman and tweaks his work a little bit for a better user experience, all credit goes to him for this amazing work and for making my job easy. -
Boycotter
Simple library for removing unnecessary properties from objects. -
Phoesion.DevJwt
Dotnet tool/lib for testing JWT-protected web APIs -
ASP.NET Web API
Framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices -
ASP.NET WebAPI
Framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Nelibur or a related project?
README
Nelibur - Message based web service framework on the pure WCF
Nelibur is message based web service framework on the pure WCF. Nelibur simplifies creating high-performance and message based web services and you certainly have all the power of the WCF
What to read
- Advantages of message based web services
- Getting Started with RESTful WCF Powered by Nelibur
- Building RESTful Message Based Web Services with WCF
- Building SOAP Message Based Web Services with WCF
- How to create REST message based Servcie on the pure WCF
- How to use REST message based Client
- How to create SOAP message based Servcie on the pure WCF
- How to use SOAP message based Client
Simple RESTful Message based Client
var client = new JsonServiceClient("http://localhost:8080/webhost");
var createRequest = new CreateClientRequest
{
Email = "[email protected]"
};
ClientResponse response = client.Post<ClientResponse>(createRequest);
var updateRequest = new UpdateClientRequest
{
Email = "[email protected]",
Id = response.Id
};
response = client.Put<ClientResponse>(updateRequest);
var getClientRequest = new GetClientRequest
{
Id = response.Id
};
response = client.Get<ClientResponse>(getClientRequest);
var deleteRequest = new DeleteClientRequest
{
Id = response.Id
};
client.Delete(deleteRequest);
Simple RESTful Message based service on the pure WCF
var service = new WebServiceHost(typeof(JsonServicePerCall));
service.Open();
JsonServicePerCall
- is predefined service which implements following interface IJsonService
The IJsonService is flexible, stable and maintainable, we can transfer any data, because the service contract depends only from WCF's Message class. "The Message class is fundamental to Windows Communication Foundation (WCF). All communication between clients and services ultimately results in Message instances being sent and received." (MSDN)
[ServiceContract]
public interface IJsonService
{
[OperationContract]
[WebInvoke(Method = OperationType.Delete,
UriTemplate = RestServiceMetadata.Path.Delete,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Message Delete(Message message);
[OperationContract]
[WebInvoke(Method = OperationType.Delete,
UriTemplate = RestServiceMetadata.Path.DeleteOneWay,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void DeleteOneWay(Message message);
[OperationContract]
[WebGet(UriTemplate = RestServiceMetadata.Path.Get,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Message Get(Message message);
[OperationContract]
[WebGet(UriTemplate = RestServiceMetadata.Path.GetOneWay,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void GetOneWay(Message message);
[OperationContract]
[WebInvoke(Method = OperationType.Post,
UriTemplate = RestServiceMetadata.Path.Post,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Message Post(Message message);
[OperationContract]
[WebInvoke(Method = OperationType.Post,
UriTemplate = RestServiceMetadata.Path.PostOneWay,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void PostOneWay(Message message);
[OperationContract]
[WebInvoke(Method = OperationType.Put,
UriTemplate = RestServiceMetadata.Path.Put,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Message Put(Message message);
[OperationContract]
[WebInvoke(Method = OperationType.Put,
UriTemplate = RestServiceMetadata.Path.PutOneWay,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void PutOneWay(Message message);
}
Performance of CRUD operations - JsonServiceClient
Method
Duration
Remarks
Get
3767 ms
10 000 messages. Default WebServiceHost settings.
JsonServiceClient sends messages in one thread.
Win x64. Intel Core i7-2600 3.4 GHz.
Post with void return
4546 ms
Post
5323 ms
Put with void return
4521 ms
Put
5334 ms
Delete with void return
3243 ms
Delete
3807 ms
WCF's RESTful service
Nelibur already contains JsonServicePerCall
service, but you can create your own custom Service, for instance
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public sealed class SampleWebService : IJsonService
{
public void DeleteOneWay(Message message)
{
NeliburRestService.ProcessOneWay(message);
}
public Message Delete(Message message)
{
return NeliburRestService.Process(message);
}
public void GetOneWay(Message message)
{
NeliburRestService.ProcessOneWay(message);
}
public Message Get(Message message)
{
return NeliburRestService.Process(message);
}
public void PostOneWay(Message message)
{
NeliburRestService.ProcessOneWay(message);
}
public Message Post(Message message)
{
return NeliburRestService.Process(message);
}
public void PutOneWay(Message message)
{
NeliburRestService.ProcessOneWay(message);
}
public Message Put(Message message)
{
return NeliburRestService.Process(message);
}
}
Request binding on appropriate Processor
NeliburRestService.Configure(x =>
{
x.Bind<CreateClientRequest, ClientProcessor>();
x.Bind<UpdateClientRequest, ClientProcessor>();
x.Bind<DeleteClientRequest, ClientProcessor>();
x.Bind<GetClientRequest, ClientProcessor>();
});
ClientProcessor example
public sealed class ClientProcessor : IPost<CreateClientRequest>,
IGet<GetClientRequest>,
IDeleteOneWay<DeleteClientRequest>,
IPut<UpdateClientRequest>
{
private static List<Client> _clients = new List<Client>();
public void DeleteOneWay(DeleteClientRequest request)
{
_clients = _clients.Where(x => x.Id != request.Id).ToList();
}
public object Get(GetClientRequest request)
{
Client client = _clients.Single(x => x.Id == request.Id);
return new ClientResponse { Id = client.Id, Email = client.Email };
}
public object Post(CreateClientRequest request)
{
var client = new Client
{
Id = Guid.NewGuid(),
Email = request.Email
};
_clients.Add(client);
return new ClientResponse { Id = client.Id, Email = client.Email };
}
public object Put(UpdateClientRequest request)
{
Client client = _clients.Single(x => x.Id == request.Id);
client.Email = request.Email;
return new ClientResponse { Id = client.Id, Email = client.Email };
}
}
Simple SOAP Message based Client
var client = new SoapServiceClient("NeliburSoapService");
var createRequest = new CreateClientRequest
{
Email = "[email protected]"
};
ClientResponse response = client.Post<ClientResponse>(createRequest);
var updateRequest = new UpdateClientRequest
{
Email = "[email protected]",
Id = response.Id
};
response = client.Put<ClientResponse>(updateRequest);
var getClientRequest = new GetClientRequest
{
Id = response.Id
};
response = client.Get<ClientResponse>(getClientRequest);
var deleteRequest = new DeleteClientRequest
{
Id = response.Id
};
client.Delete(deleteRequest);
Simple SOAP Message based service on the pure WCF
WCF's ServiceContract
[ServiceContract]
public interface ISoapService
{
[OperationContract(Action = SoapServiceMetadata.Action.Process,
ReplyAction = SoapServiceMetadata.Action.ProcessResponse)]
Message Process(Message message);
[OperationContract(Action = SoapServiceMetadata.Action.ProcessOneWay)]
void ProcessOneWay(Message message);
}
WCF's SOAP service
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public sealed class SampleSoapService : ISoapService
{
public Message Process(Message message)
{
return NeliburSoapService.Process(message);
}
public void ProcessOneWay(Message message)
{
NeliburSoapService.ProcessOneWay(message);
}
}
Request binding on appropriate Processor
NeliburSoapService.Configure(x =>
{
x.Bind<CreateClientRequest, ClientProcessor>();
x.Bind<UpdateClientRequest, ClientProcessor>();
x.Bind<DeleteClientRequest, ClientProcessor>();
x.Bind<GetClientRequest, ClientProcessor>();
});
ClientProcessor is the same as for RESTful
public sealed class ClientProcessor : IPost<CreateClientRequest>,
IGet<GetClientRequest>,
IDeleteOneWay<DeleteClientRequest>,
IPut<UpdateClientRequest>
{
private static List<Client> _clients = new List<Client>();
public void DeleteOneWay(DeleteClientRequest request)
{
_clients = _clients.Where(x => x.Id != request.Id).ToList();
}
public object Get(GetClientRequest request)
{
Client client = _clients.Single(x => x.Id == request.Id);
return new ClientResponse { Id = client.Id, Email = client.Email };
}
public object Post(CreateClientRequest request)
{
var client = new Client
{
Id = Guid.NewGuid(),
Email = request.Email
};
_clients.Add(client);
return new ClientResponse { Id = client.Id, Email = client.Email };
}
public object Put(UpdateClientRequest request)
{
Client client = _clients.Single(x => x.Id == request.Id);
client.Email = request.Email;
return new ClientResponse { Id = client.Id, Email = client.Email };
}
}
Contributing
To contribute please follow these guidelines:
- Fork the project
- Spaces, not Tabs and no regions
- Make a branch for each thing you want to do
- Send a pull request
Contributors
A big thanks to all of Nelibur's contributors:
*Note that all licence references and agreements mentioned in the Nelibur README section above
are relevant to that project's source code only.