Blazor – Framework with C#, HTML & No Javascript. Is it a reality?

Blazor – Framework with C#, HTML & No Javascript. Is it a reality?

Since last 10 years we have followed a habit of mixing Javascript with html. Sometimes it is in form of jQuery, Ajax, native javascript, Angularjs, Reactjs, Vuejs and many other Javascript frameworks. But very rarely do we see alternative of javascript when it comes to Single Page applications. Blazor has made it possible.

What is Blazor and How it was invented ?

Blazor is an opensource and cross-platform framework for building interactive client-side User Interface. It is developed by the ASP.NET team of Microsoft. Its initial release was made in 2018. All of Windows, Linux and macOS support it. It is an alternative for all the other frontend frameworks for Single Page Applications like Angular, Reactjs, Vuejs etc. It combines the older Razor syntax with the new .Net and WebAssembly, allowing us to create both browser and server-side applications.

Blazor has brought WebAssembly to Tables that now it is possible to use .Net to fully develop your web application, limiting, if not eliminating completely, the use of JavaScript. For some, this might be a good enough reason to choose Blazor. Typescript is the most famous language nowadays, which was designed by Anders Hejlsberg who also designed C#. Features such as interfaces, classes, compile time type-checking, generics and even more already exist in C#. This makes Blazor a potential competitor of Javascript SPA frameworks as using it we can also create native mobile UIs.

Blazor Platform C#

How is Blazor flexible?

Blazor has a way of calculating UI changes as well as how these changes are rendered. This process sets Blazor apart from other frameworks like Angular, React. With Blazor you can also create UI for native mobile apps. For the native mobile app the mobile renderers would come into picture and web renderers cant be useful. Here we can do everything without using Javascript.

Types of Renderer or Hosting Models

Blazor’s component model calculates UI changes, but we can use different type of renderers. App component model includes Navigation, routing, and programming mode. These renderers manipulate how the UI is actually displayed and updated and are referred to as Hosting models. Following are the models:

Blazor Server 

  • Platform: Web (Every interaction handled on server. Prerendered HTML is optional)
  • Status – GA/Production Supported
  • Here the Blazor application runs on the server above the .NET core runtime.
  • A JavaScript file downloads when user installs app and it establishes a two-way SignalR connection with the server.
  • SignalR makes the user’s interaction with server realtime. Once server finishes processing, Blazor sends all updates to client side applying on DOM model.

Blazor WebAssembly 

  • Platform: Web (App with client-side execution and loaded from web server. It also can work offline via Service worker)
  • Status:  GA/Production Supported
  • WebAssembly has given the Javascript SPA frameworks like Reactjs, Vuejs & Angular a run for their money. Here we can write entire UI logic in C# and avoid javascript.  Blazor downloads Mono .NET runtime to the client’s browser while working with Blazor WebAssembly.
  • Assembly also downloads the application DLL files and other dependencies. After everything is perfectly downloaded in browser, the Mono runtime gets bootstrapped. This in turn installs and executes the application DLLs.

Blazor Electron 

  • Platform: Desktop (Is like a Windows app and can work offline too)
  • Status: Experimental (Not Committed)

Mobile Blazor Bindings

  • Platform: Mobile (iOS and Android)
  • Status: Experimental (Not Committed)

Here 3 hosting models understand web standards whereas one understands mobile standards. Web models use html & css whereas mobile renderer doesnt understand web standards but native mobile controls.

Features of Blazor

  • Has lot of predefined UI components to build a custom web applicatiton
  • Features from Asp.Net can be used through a function owing to Blazor’s “Javascript interoperability”
  • Comes with Dependency injection
  • Use SignalR without javascript through a Nuget package
  • Works with older browser versions
  • Allows debugging and has rich intellisense
  • Easy server side rendering
  • Integrated support for gRPC(Remote Procedure Calls).
  • Lazy Loading support

Pros of Blazor

  • It is open source
  • Runs in sandboxed environment and gives fast performance like a native app
  • Supports all needed javascript SPA framework features like Routing, Components, Dependency Injection
  • We can deploy Blazor apps like static files on machines which dont have .Net
  • Predefined UI components and rich intellisense makes development easy and fast
  • Supports older browser versions and works fine without browser plugins
  • Code stays on server and not downloaded to client

Cons of Blazor

  • Doesnt work well in high latency environments
  • Requires constant server connection
  • Due to download size, devices with slower connections may have to wait long.

For any code queries, architecture or new project requirement on Blazor, you can mail me at [email protected] or skype : shalin.jirawla

Cheers!!

 

Chipotle Mexican Grill website uses .Net Core & Azure

Chipotle Mexican Grill website uses .Net Core & Azure

Chipotle Mexican Grill is a big name in the food industry known for its Mexican Dishes. This company is vocal about serving local produced, sourced, cooked, without artificial colors, or preservatives. By 2020 Chipotle have more than 2,600 restaurants in the US, Canada, UK, France & Germany, all of which are company owned & operated.

Chipotle-Ecommerce-Azure-dotnetcore

Scenario

Steve Ells, owner of Chipotle started first restaurant in Denver, Colorado in 1993. In 2018, company decided to move its headquarter including the software development division to California. Soon Mike Smith, joined Chipotle as a lead software developer. The first project he got assigned was to create a Fresh Customer-facing website which makes company agile. They assign Steve to serve Chipotle’s fast growing online customer base.

Prior to Mike, Chipotle had 3 differently looking customer-facing websites for: a Main Presentation Website, Online Ordering, and Catering. All 3 were built on AngularJS and all content on the sites was static with old standards, including Menus, Pricing, and Item availability. They had to write new code for each small change request. This followed with subsequent mandatory testing and deployment processes. The sites were self-hosted. So Chipotle had to assign resources for day-to-day operation of all three sites. All this was required to keep everything running smoothly.

The company decided to start from scratch a new, unified web presence. The website would need to connect to existing back-end systems for ordering, preferences, authentication, and so on. It also had to integrate with the company’s recently purchased, cloud-based content management system, which drives menu content and item availability for displays in the company’s 2,500 stores.

Solution

First they started choosing which Tech-stack and Framework to go with. As per the requirements, the new site would have to support content changes in minutes or hours, without any developer assistance. Menus and menu item availability needed more configurability along with modification on the fly. They also had to make a feature to push notification for addressing scenarios like a local store running out of a menu item/ingredient.

Building everything within a CMS(content management system), seemed risky for case like integration with existing back-end systems. The main motive was  to deliver a state of art and responsive user experience with an agile architecture. So they decided to follow a single-page application pattern, which dynamically rewrites the current web-page as needed rather than loading an entire new set of pages from a server.

Smith’s team decided to go with  following:

  • C# – Already Chipotle Mexican Grill’s favorite language for other existing back-end services for its features like LINQ, Generics, Async/await, and NuGet for sharing code. They shared NuGet packages internally for code reusability and achieving consistency across teams.
  • TypeScript – Team chose Typescript for client-side scripting for features like object orientation and strong type checking. It made easy for JS developers to  write better code with more language features & built-in compile-time safety.
  • .Net Core – Chose Asp.Net Core as it offered more platform options as well as hosting options—like deploying Docker containers on Linux
  • VS Code – They use VS Code for frontend development. It works across OS like MAC, Linux, Windows so becomes easy to sync.

Azure CDN

Today, when customers go to chipotle.com, the first page loads from Azure Content Delivery Network. Browser then requests the single web page (.js, .css & image files) from CDN, backed by Azure Blob storage.  All back-end API calls (for ordering, delivery, and account management and preferences) happen via Azure API Management, giving Chipotle a single, easily managed endpoint into its various back-end services. Due to this other development teams at Chipotle could work to modernize the APIs behind the gateway remained transparent to Smith’s front-end app.

Azure Cosmos DB

A Separate team is working to replace some relational data stores with Azure Cosmos DB. Their data has needs of both document storage as well as relational, so  switched to Azure Cosmos DB. With Cosmos DB they can easily achieve scalability, availability and futuristic geographic distribution. For instance, we can store a customer’s order as a single, unstructured JSON document, instead of in multiple different relational tables. Features like Time to Live also prove helpful in providing a convenient way to automatically delete an order that’s not completed within a certain amount of time.

Other Azure services that play a role in the solution include:

  • Azure Event Hubs, for collecting/procecssing events and identify bottlenecks which brought the company’s website down in the past.
  • Cache for Redis, improve website performance by providing in-memory caching for certain important info.
  • Azure App Service, provide an auto-scaling hosting environment for each back-end service: order, tax, payment, and so on.
  • Azure Functions, which runs event-triggered code in cases where a full-blown hosted service isn’t needed. For example, a Serverless function used to provide an API using which stores can adjust their local menus if they run out of an item.
  • Azure Key Vault, which provides a means of safeguarding cryptographic keys and other secrets used by Chipotle’s cloud apps and services.Following the above combination helped them achieve developer productivity, scalability ,reliability and Devops
    If you also are looking to make a website as good as Chipotle Mexican Grill, lets talk. Send us your requirement at [email protected] or
    skype
    at shalin.jirawla

How to Build your Real-Time Apps with SignalR?

How to Build your Real-Time Apps with SignalR?

Real-time apps are programs that work within a timeframe and show current updated value to all the users. For eg: we have Stock exchange, Commodities, Live score of any match, weather, COVID19 count, Statistics, Dashboards etc. All the users can see the latest value even if they have interacted with it or not. The latency should be less than a define value in seconds. Information of data is sent and received in milliseconds.

What is SignalR?

SignalR is an open-source software library for Microsoft ASP.NET . It allows server code to send asynchronous notifications to client-side web applications.  Asp.net SignalR is a library for Asp.net Developers to add real-time web functionalities to their applications. These functionalities are kind of ability to have server side code push content to connected clients. 

For most applications, we recommend SignalR over raw WebSockets. SignalR provides transport fallback for environments where WebSockets is not available. It also provides a simple remote procedure call app model. And in most scenarios, SignalR has no significant performance disadvantage compared to using raw WebSockets. It takes advantage of WebSocket, an HTML5 API that enables bi-directional communication between the browser and server. SignalR also provides a high-level API for doing server-to-client RPC  (Remote procedure Call). It calls JavaScript functions in a client’s browser from server-side .NET Core/MVC code. It also adds useful hooks for connection management, such as connect/disconnect events, grouping connections, authorization.

Where to use SignalR?

  • Apps that require high frequency updates from the server. Examples are gaming, social networks, voting, auction, maps, and GPS apps.
  • Dashboards and monitoring apps. Examples include company dashboards, instant sales updates, or travel alerts.
  • Collaborative apps. Whiteboard apps and team meeting software like JIRA, Trello are examples of collaborative apps.
  • Apps that require notifications. Social networks like Facebook, Instagram etc., email, chat, games, travel alerts, and many other apps use notifications.

Transports

SignalR supports the following techniques for handling real-time communication

  • WebSockets
  • Server-Sent Events
  • Long Polling

SignalR automatically chooses the best transport method that is within the capabilities of the server and client. It works with Asp.net 4.5, Asp.Net MVC as well as .Net Core. Here we will like to talk about SignalR with Asp.Net Core.

SignalR RealTime Applications AspNetCore Angular

What is WebSocket?

Websocket is a communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket API is an advanced technology that makes it possible to open a two-way interactive communication session between the user’s browser and a server. With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply. It is basically a live connection between server and client.

SignalR is an abstraction over some of the transports that are required to do real-time work between client and server. A SignalR connection starts as HTTP, and is then promoted to a WebSocket connection if it is available.

Features

  • Handles connection management automatically.
  • Sends messages to all connected clients simultaneously. For example, a chat room.
  • Sends messages to specific clients or groups of clients.
  • Scales to handle increasing traffic.

Configure the middleware

The SignalR server must be configured to pass SignalR requests.

public void ConfigureServices(IServiceCollection services)

{

        services.AddSignalR();

}

Add the WebSockets middleware in the Configure method of the Startup class in Dotnet Core:

app.UseWebSockets(); 

// Accept WebSocket requests

app.Use(async (context, next) =>

{

if (context.Request.Path == “/ws”)

{

     if (context.WebSockets.IsWebSocketRequest)

     {

         WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();

         await Echo(context, webSocket);

     }

     else

     {

            context.Response.StatusCode = 400;

     }

}

else

{

     await next();

}

});

A WebSocket request could come in on any URL, but this sample code only accepts requests for ‘/ws’.

Hubs

A hub is a high-level pipeline that allows a client and server to call methods on each other. SignalR handles the dispatching across machine boundaries automatically, allowing clients to call methods on the server and vice versa. You can pass strongly-typed parameters to methods, which enables model binding. SignalR provides two built-in hub protocols: a text protocol based on JSON and a binary protocol based on MessagePack. MessagePack generally creates smaller messages compared to JSON.

The SignalR Hubs API enables you to call methods on connected clients from the server. In the server code, you define methods that are called by the client. In the client code, you define methods that are called from the server. SignalR takes care of everything behind the scenes that makes real-time client-to-server and server-to-client communications possible.

Configure SignalR Hubs

The SignalR middleware requires some services, which are configured by calling services.AddSignalR.

//SignalR Routes

app.UseRouting();

app.UseEndpoints(endpoints =>

{

endpoints.MapHub<MyHub>(“/myhub”);

});

 

//Using Hub

public class ChatHub : Hub

{

public Task SendMessage(string user, string message)

{

     return Clients.All.SendAsync(“ReceiveResponse”, user, message);

}

}

Create a hub by declaring a class that inherits from Hub, and add public methods to it. Clients can call methods that are defined as public. You can specify a return type and parameters, including complex types and arrays, as you would in any C# method. SignalR handles the serialization and deserialization of complex objects and arrays in your parameters and return values.

Send response to clients

  • SendMessage sends a message to all connected clients, using Clients.All.
  • SendMessageToCaller sends a message back to the caller, using Clients.Caller.
  • SendMessageToGroups sends a message to all clients in the SignalR Users group.

public Task SendMessage(string user, string message)

{

return Clients.All.SendAsync(“ReceiveResponse”, user, message);

}

 

public Task SendMessageToCaller(string message)

{

return Clients.Caller.SendAsync(“ReceiveResponse “, message);

}

 

public Task SendMessageToGroup(string message)

{

return Clients.Group(“SignalR Users”).SendAsync(“ReceiveResponse “, message);

}

 

SignalR with Angular

Now the question is how to call these methods from the client side, so we have some JavaScript libraries and NPM packages for SignalR where we are connected with server Hub and can send messages as per application flow. If we want to implement into Angular then bellow code is to install package:

npm install @aspnet/signalr

As per below image all clients are connected to single SignalR Hub, Hub will send the response whenever any event occurs, this is a real time process so client will watch for the response, when hub send the message then all clients can receive it, hub can send to particular client, in Group or to All clients as per previous discussion.

//Create a connection

let connection = new signalR.HubConnectionBuilder()

.withUrl(“/chat”)

.build();

 

//Start connection

connection.start()

.then(() => {

      . . .

}); 

//Invoke/Send message to SignalR Hub

connection.invoke(“send”, “Hello”)

 

//Receive response from SignalR Hub

connection.on(“send”, data => {

console.log(data);

});

This way we have tried to demonstrate how you can build your Real-Time application using SignalR along with Angular & Asp.net Core.

We recently built a Realtime Chat, social timeline feed and a Live Auction System for multiple clients from US & Australia using the above technology stack combination.

Live Auction System for Real estate Autralia

In case you have similar or any other Realtime requirement, you can always consult with us at [email protected] or

Skype : shalin.jirawla

Why SOLID principles are necessary for any Enterprise Software?

Why SOLID principles are necessary for any Enterprise Software?

SOLID Principles is a an acronym used as a coding standard. Robert Martin introduced it first. It is used across the object-oriented design family. All developers should have a clarity for developing software in the right way to avoid a bad design. When applied appropriately it makes your code easier to read, more extendable and logical. A software with a bad design has inflexible code. Small changes if introduced to such software may break existing code or cause bugs. Design principles and patters prove a lot of significance in any software’s scalability, maintainability. It may take time to understand SOLID principles but they improve code quality and provide component reusability making future integrations easier. Extending functionality in your existing app without rewriting code at all tiers will be possible through these principles.

Why many software applications fail due to bad code?

All softwares which are not built with future vision of type of change requests or system scalability will die. Following are design flaws that cause dent in software in the long run:

  1. Put more stress on Classes by assigning more responsibilities to them. (A lot of functionality not related to a class put together.)
  2. Forcing the classes to depend on each other. If classes are dependent on each other (in other words tightly coupled), then a change in one will surely affect the other.
  3. Spreading duplicate and redundant code in the system/application.
  4. Hardcoding url, constants, keys etc. as well as habit of declaring static code everywhere.

The right way to avoid all the above is SOLID way. Lets see what it actually means:

        S: Single Responsibility Principle (SRP)
        O: Open closed Principle (OSP)
        L: Liskov substitution Principle (LSP)
        I: Interface Segregation Principle (ISP)
        D: Dependency Inversion Principle (DIP)

Single Responsibility Principle (SRP)

This SOLID Principle means “A Class should only have a single responsibility“. All its method should relate to function. Class should only have one reason to change; the more entities in the class, the more difficult it becomes to achieve this. Only change in 1 part of software should be all required to affect the class functionality. So we need to build a structure of software in such a way that classes should cover only one responsibility or functionality.

To understand this let’s consider, We implement the methods for a Company. Now we also want logging, error handling, emailing etc, kind of activities then we must implement all of these into different classes.
For an instance below I have not followed this rule:

public class Company

{

     public void AddCompany()

     {

         //Implementation

         MailMessage mailMessage = new MailMessage(“EMailFrom”“EMailTo”“EMailSubject”“EMailBody”);

         this.SendEmail(mailMessage);

     }

     public void DeleteCompany()

     {

         //Implementation

     }

     public void SendEmail(MailMessage mailMessage)

     {

         //Implementation

     }

}

Now if I want to make my code with Single Responsibility Principle I will create a separate class for employee and Email like below:

public class Company

{

public void AddCompany()

{

     //Implementation

     MailMessage mailMessage = new MailMessage(“EMailFrom”“EMailTo”“EMailSubject”“EMailBody”);

     Emailing emailing = new Emailing();

     emailing.SendEmail(mailMessage);

}

public void DeleteCompany()

{

     //Implementation

}

}

public class Emailing

{

public void SendEmail(MailMessage mailMessage)

{

     //Implementation

}

}

 If we write the database logic, business logic as well as the display logic in a single class, then our class performs multiple responsibilities. So it gets very difficult to change one responsibility without breaking other functionalities. Also we may face difficulties with testing and duplication of logic. What if I want to send an email for an Employee in future requirements ? That’s why we recommend to have separate code for each purpose.

Open closed Principle (OSP)

Open closed Principle is defined as “Software entities such as modules, classes, functions, etc. should be open for extension, but closed for modification“. The first thing is “Open for extension” which means new functions, classes, modules can inherit existing code when new requirements are generated and “Closed for modification” which means we are allowing its behavior to be extended without modifying existing source code. In a simple way we can say that we should not change already working functionality, it may affect the entire feature of that module.

Easiest way to implement the Open-Closed Principle

  •         Use derived classes that inherit from base class
  •         Allow access to use original classes with interface
  •         Create new method for new feature so better to us derived class instead of base class

Not following this principle brings problem with existing module and its class maintenance becomes difficult. In addition with every change in existing code we have to test our entire code every time. This also breaks our first principle Single Responsibility Principle.

Example

public class Event

{

public int GetDiscount(int input, DiscountType discountType)

{

     int amount = 0;

     if (discountType == DiscountType.TypeOne)

     {

         amount = input – 20;

     }

     if (discountType == DiscountType.TypeTwo)

     {

         amount = input – 40;

     }

     return amount;

}

}

Here we are checking discount types implementing a business Logic with if else conditions so if in future we have another discount for new events then we need to change the logic for this method.

public class Event

{

public virtual int GetDiscount(int amount)

{

     int regularDiscount = 10;

     return amount – regularDiscount;

}

}

public class DiscountOne : Event

{

public override int GetDiscount(int input)

{

     return base.GetDiscount(input) – 20;

}

}

public class DiscountTwo : Event

{

public override int GetDiscount(int input)

{

     return base.GetDiscount(input) – 40;

}

}

Using this Open-Closed Principle we can inherit from base class and use custom logic for. Here if we are adding more into existing code, we dont need to worry about other functionalities and let it remain as it is.

Liskov substitution Principle (LSP)

This principle tells “Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program“. It also defines some guidelines for maintaining inheritor substitution. Passing an object’s inheritor in place of the base class shouldn’t break any existing functionality in the called method. You should be able to substitute all implementations of a given interface with each other.

public class Program

{

static void Main(string[] args)

{

     A objA = new B();

     Console.WriteLine(objA.GetValue());

}

}

public class A

{

public virtual int GetValue()

{

     return 10;

}

}

public class B : A

{

public override int GetValue()

{

     return 20;

}

}

In this example we have used inherited class A and override method GetValue() so at this point class B cannot be replaced by class A and it returns value from class B. In this case we need to have a generic base class so we can use sub class and it will behave correctly.

public class Program

{

static void Main(string[] args)

{

     C objA = new A();

     C objB = new B();

     Console.WriteLine(objA.GetValue());

     Console.WriteLine(objB.GetValue());

}

}

public abstract class C

{

public abstract int GetValue();

}

public class A :C

{

public override int GetValue()

{

     return 10;

}

}

public class B : C

{

public override int GetValue()

{

     return 20;

}

}

Interface Segregation Principle (ISP)

This Principle in SOLID emphasizes as “Clients should not be forced to implement any methods they don’t use”. Rather than one fat interface, numerous little interfaces are preferred based on groups of methods with each interface serving one sub module. Do not create methods which will not be used or implemented.

If we need to implement the functionality and have a common method implementation from the interface or abstract class but we don’t use all the methods from that then create a separate interface and implement individually. 

public interface AppService

{

void Insert();

void Update();

void Delete();

}

public class Employee : AppService

{

public void Insert()

{

     Console.WriteLine(“Created”);

}

public void Update()

{

     Console.WriteLine(“Updated”);

}

public void Delete()

{

     Console.WriteLine(“Deleted”);

}

}

public class Company : AppService

{

public void Insert()

{

     Console.WriteLine(“Created”);

}

public void Update()

{

     Console.WriteLine(“Updated”);

}

public void Delete()

{

     throw new NotImplementedException();

}

}

Here we have implementation of AppService interface into employee and company where we don’t want to implement Delete method for Company then we can use another interface service that only provides Delete method to implement like this,

public interface AppService

{

void Insert();

void Update();

}

public interface DeleteService

{

void Delete();

}

public class Employee : AppService, DeleteService

{

public void Insert()

{

     Console.WriteLine(“Created”);

}

public void Update()

{

     Console.WriteLine(“Updated”);

}

public void Delete()

{

     Console.WriteLine(“Deleted”);

}

}

public class Company : AppService

{

public void Insert()

{

     Console.WriteLine(“Created”);

}

public void Update()

{

     Console.WriteLine(“Updated”);

}

}

 So as per SOLID we can only implement required services and no need to write invalid code. We have split that big interface into three small interfaces. Each interface now has some specific purpose.

Dependency Inversion Principle (DIP)

The Dependency Inversion Principle says that “Program to an interface, not to an implementation“. It means high-level modules/classes should not depend on low-level modules/classes. Both should depend upon abstractions. Secondly, abstractions should not depend upon details. Dependency Inversion means to depend on abstractions instead of concrete types.

If one class knows implementation of another class then it will raise the risk of changing one will affect another. So it should both depend on abstraction. As a result we must keep these high-level and low-level modules/classes loosely coupled as much as possible.

public class EmployeeController

{

BusinessLogic service;

public EmployeeController(BusinessLogic _service)

{

     service = _service;

}

public List<Employee> GetAllEmployee()

{

     return service.GetEmployees();

}

}

public class BusinessLogic

{

public List<Employee> GetEmployees()

{

     //Implementation

}

}

Here we are using BusinessLogic class which gives access to data layer. It also gives implementation of actual logic of employee where EmployeeController is higher level class and BusinessLogic is lower level class. Therefore, class/module should not depend on the concrete EmployeeDataAccess class/module, instead, both the classes should depend on abstraction or interface. For instance as below:

public class EmployeeController

{

     IBusinessLogic service;

     public EmployeeController(IBusinessLogic _service)

     {

         service = _service;

     }

     public List<Employee> GetAllEmployee()

     {

         return service.GetEmployees();

     }

}

public interface IBusinessLogic

{

     List<Employee> GetEmployees();

}

public class BusinessLogic: IBusinessLogic

{

     public List<Employee> GetEmployees()

     {

         //Implementation

     }

}

Now both EmployeeController and BusinessLogic classes are loosely coupled so it doesn’t depend on concrete BusinessLogic class.

Conclusion

Indeed, the SOLID principles are generally overlapping in their effects upon sustainable computer code. As the process of writing software has always evolved from the theoretical realm into a true engineering discipline.

Hope I gave you a good picture about how to implement SOLID principles. In case you are looking for additional consulting, or you need to Hire a Developer then we will be happy to help you. For queries, mail your problem or requirement at [email protected] or skype me @ shalin.jirawla

Customers love Business hosted on SAAS

Customers love Business on SAAS

Software as a Service often called SAAS, is a delivery model in which software is licensed on subscription basis. This Software is centrally hosted with a public url be it multi-tenant or single-tenant based. It can also be called an “On-demand software”. SAAS comes under the umbrella of Cloud computing along with IAAS (Infrastructure as a Service) and PAAS(Platform as a Service). End-users can access SAAS apps through a web browser.

Business Applications in the last 3 decades hosted as SAAS :

  • Office Software like Office 365
  • Messaging Software like Slack
  • Payroll & Invoice processing software like Quickbooks
  • Enterprise Resource Planning (ERP) like Oracle Netsuite
  • Customer Relationship Management (CRM) like Salesforce & Zoho
  • Human Resource Management (HRM) like SAGE
  • Service Desk Software like JIRA
  • Learning Management System (LMS) like Adobe captivate prime
  • Content Management System (CMS) like Sharepoint
  • Accounting Software like XERO & Quickbooks

And many more totalling SAAS sales of 100 Billion US$ up till 2019.

Distribution & Pricing

This cloud model has no need for physical distribution or installation as it is centrally deployed. Now you can avoid traditional agents and middleman, thanks to SAAS. SAAS has complimented a lot to all types of Application development. SAAS doesn’t charge an upfront setup cost like traditional softwares. They charge a subscription fee be it monthly, annually on user-basis. The data stays on the SAAS owners server so some of the apps charge on transaction basis. Many SAAS software offer a freemium model where in you can use a limited set of features unlike the package with a subscription charge. Many apps don’t charge any subscription charge but rather monetize using advertisements.

Why is SAAS loved by Customers?

  • Pay for Use Only. Many Softwares calculate the units used by the user or the users in his company. For eg: Microsoft Azure calculate units for the apps you use like SQL, Azure App service etc. It only charges you for the time and units you use. If your virtual server is unused for 6 months, it is like you own a server but you dont pay the rent as you dont use it. Isnt  that amazing to save a lot of money without stopping your company operations. Businesses with traditional applications have to spend a lot for upgrades. Also with SAAS your expenses become variable rather than the traditional fixed.
  • Cheaper. Many Customers lack the courage to pay 20k-50k USD for app development, as along with money they also need to make sure their employees are making full use of it. So signing up on a SAAS platform just for less than 100 USD per month gives them the luxury to use a Cloud product which solves their business problems and then in future if they want they can go for custom software development according to their business particulars. Now as the customer knows what do their employees want for daily operation, it becomes productive as well as affordable. Sometimes customers are so happy with SAAS platform that they dont feel the need of a custom software at all.
  • Avoid App Development Costs. Customers now don’t need to spend money in hiring developers to make an app for their business if all the features already exist in any SAAS application. No extra Infrastructure, Lower IT spending and maintenance costs makes business owners happy as they can use that budget in other operations.

Why Updates in SAAS platform don’t stop your work anymore?

  • Easier Updates. Updates are decided by SAAS providers and not customers at regular intervals of time.  It has single version unlike traditional app where each client has different app version. Its easier to update single version for all clients rather than to go at each client’s office and do manual upgrade.
  • Flexibility. SAAS enables the app-makers to accept all types of feature requests from customer. Without asking the customer to reboot, or upgrade hardware, they can release new version with all new features and past bug fixes. CHANGE IS THE NEW CONSTANT. 
  • Upgrade/Degrade. With SAAS you can upgrade your package for more features or degrade to a lower package for less features easily. It is hassle-free and doesn’t affect your existing data. You can always come back and change your package. No additional hardware needed.
  • Scalability. This Cloud model allows users to add more users to company subscription, as well as to remove the users. It has tendency of handling millions of userbase  Its loosely coupled architecture makes it easier for app manufacturers to deploy on separate server in different region just like Copies. The flexible model helps to easily scale any system even if there are millions of users sending message or raising order at a single time. Unlike traditional application, you don’t need to add new hardware or extra server or RAM when the user-base expands.

Other Special Qualities in SAAS

  • Ease of Use & Performance. Now you dont have to wait till the technical guys finishes the installation of exe file. You can now start using the app in seconds after registration. The performance is faster
  • Faster Testing and Bug fixes. All the SAAS owners host all the customer data centrally along with logs so it becomes very easy to find out the bugs and solved them soon. SAAS provider is 1 step ahead and knows the user behavior via Google analytics or Hotjar which helps him/her to improve app faster without the customer complaining.
  • Security. With SAAS, customers can take a sigh of relief as the service providers take up responsibility for security along with availability and performance
  • 24*7 Availability. Customer can register or use the app at anytime of day and in any part of world. It frees customer’s employees to work from anywhere along with office, which gives better productivity and employee satisfaction too.
  • Live chat support. Customers love to solve their queries, doubts or issues at real-time. Almost all SAAS have live chat some with 24*7 availability of agents who can answer back in less than 5 mins or you also have the option to raise a ticket offline.

Recently we build Software as a Service platforms using Asp.net zero framework
We used Asp.net core 3.1 & Angular 8/9 with SQL & Entity framework code-first in Asp.net zero.
Following are some of these SAAS projects built by us:

COIPRO
Oneserv
Simpletix

And many more in Fintech, Insurance, Field tracking, Education, Event Booking, Human resource, ERP etc.

Hope you like our content about SAAS. In case you have more doubts on SAAS or are looking to transform your traditional business to software as a service, send us your requirements to [email protected] for a Free Consultation on Application Development.

Stay tuned for more such blogs.

Businesses use ASP.NET Core for Web Application development

Why Businesses use ASP.NET Core for Web Application development

Businesses are using open-source technologies like Java, PHP, Python or closed-source technology for web application development. But not all of them know that Microsoft offers an open-source and cross-platform framework in the form of Asp.net core. Asp.net core has more advantages than normal Asp.net MVC.

Businesses use Asp.net Core for web application development

What is ASP.NET Core?

ASP.NET Core is a free and open-source web framework and successor to ASP.NET, developed by Microsoft and the community. It is a modular framework that runs on both the full .NET Framework, on Windows, and the cross-platform .NET Core and, it best suits businesses that look for a wide range of features like web-based services, desktop software, and cloud infrastructure support.

Why are enterprises eager to migrate to ASP.NET Core?

Businesses use Asp.net core for the following 10 reasons:

  • Performance. When you compile your code, Dotnet core automatically optimizes it in order to increase the performance. For instance, .Net core takes  57,843 requests per second vs .NET MVC which takes 313,001 requests per second (i.e. almost 5x). Asp.net Core is faster than Nodejs too, see the case-study here.  Also it’s request time is 7 times faster than Laravel and 3 times faster than Django, see the case-study here. All these data justify how good Asp.net core is for web application development.
  • Easy to Update new version thanks to Nuget package which manages this well,  not like before where a new framework version had to be deployed.
  • Command line support which enables the developer to code in any of Linux, Mac & Windows to execute and host several apps.
  • Cheaper maintenance due to less code philosophy everytime a new version is out, the developer can enhance their code in few lines for same feature.
  • Cross-platform support makes deployment and hosting to any platform like MAC or Linux so easy. Also apps are now loosely coupled with backend developed in C# , whereas frontend app can be developed in any framework like React, Vuejs or Angular.
  • Cloud-based support makes  convenient for developers to make one for all backend and deploy on Azure, AWS or Google cloud for mobile app, web-app, IOT devices.
  • MVC architecture & Dependency Injection  support
  • Hosting support for web servers like IIS, Apache, Docker.
  • Support for all frontend frameworks like Angular, React & Vuejs along with jQuery and Javascript
  • Supports ASP.NET Boilerplate which is a strong architectural model based on DDD(Domain Driven Design).
  • Better support for Unit testing.

Currently Asp.net Core 3.1 is the latest version, see how much ahead it is in comparison to its peers here.

What is new in ASP.NET Core 3.1?

  • Razor components are now generated as partial classes and can be written in code-behind class files.
  • Blazor (new framework launched in 3.0 version) Component Tag Helper and pass parameters to top-level components
  • Ability to create or attach to an existing named HTTP.sys request queue.
  • Breaking changes for SameSite cookies.
  • Prevent default actions for events in Blazor apps.
  • Stop event propagation in Blazor apps.
  • Developers get errors with detail viewability during Blazor app development.
  • Performance improvements wrt memory allocation, usage and json serializer
  • For more information about updates in last version (Asp.net core 3.0), check here.

Other Improvements in ASP.NET Core 3.1

  • C# 8 add async streams.
  • F# 4.7 focuses on making something easier.
  • ASP.NET Core and Xamarin support.
  • Windows Desktop apps are now supported with .NET Core.
  • Raspberry Pi and ARM chips are now supported.
  • .NET Core apps now have executables by default.
  • High performance JSON APIs have been added.
  • The garbage collector uses less memory.

Platforms supporting .NET core 3.1

  •   Alpine: 3.10+
  •   Debian: 9+
  •   Ubuntu: 16.04+
  •   Fedora: 29+
  •   centOS: 7+
  •   RHEL: 6+
  •   openSUSE: 15+
  •   SUSE Enterprise Linux (SLES): 12 SP2+
  •   macOS: 10.13+
  •   Windows Client: 7, 8.1, 10 (1607+)
  •   Windows Server: 2012 R2+

Other Use-Cases for ASP.NET Core

  • Cross-platform needs. In case you need the app that will work across platforms, .NET core will be a great choice to cover most platforms thereby reducing development effort while expanding your desktop or mobile app to other operating systems. Also engineering cases like Gaming (including Xbox) and AR development (including HoloLens) can also use ASP.NET Core.
  • PHP is a preferable web application framework used by many developers, But Asp.net is better when we consider enterprise software applications and medium applications. With its tightly coupled architectural design, PHP is better equipped to serve small-sized organizations.

What technology stack should we work with, is a question all businesses sometimes struggle with while planning software development. Often, clients bracket projects into different segments like small, medium or enterprise size, depending on various factors like budget, timeframe, bandwidth and complexity of the project. Selecting a web framework is a challenging task due to a huge number of aspects to take into consideration.

End of the day, you have to decide what framework works best and  cost-effective for you in the long run.

If all these frameworks confuse you about what to choose for web application development,
write us a mail at [email protected] or skype : shalin.jirawla
We will help you in deciding faster owing to our several case-studies and experience of delivering 30+ enterprise web/mobile solutions in 15+ industries.

 

Field Tracking Software for Astar, Inc. | Ncoresoft

ASTAR, Inc.

Custom SAAS product in Field Tracking and Resource Management
for a US leader in Pipeline OQ Evaluations.

AstarInc FieldTracking SAAS Ncoresoft

About ASTAR, Inc.

ASTAR, Inc. is the nation’s leader in providing pipeline Operator Qualification (OQ) evaluations and training services starting in 2007. They specialize in Veriforce, ITS, NCCER, MEA, OQSG, Energy WorldNet, eWebOQ and ISNetworld. ASTAR has a new vision in OQ management. They actively work in the field with both pipeline Operators and Contractors, so we understand the complications that exist while trying to meet OQ requirement. ASTAR is the only companies to earn a Four-Star Elite Evaluator status with Veriforce.

The Challenge.

ASTAR’s 300 field trainers & employees relied on Service Fusion software for their routine operations. The complexity of Service Fusion made Astar employees take more time to operate it and even after that couldnt get realtime data about trainer allocation onsite. Customers used to fill in form on ASTAR website, which went down in form of mail. This mail was then forward to data entry operators, who entered this data 1 by 1 in Service fusion. The calendar of admin was so cluttered that he couldnt understand where John was actually allocated amidst 100 employees. The project manager didn’t had any clarity of whether the Trainer was available or not or whether he/she is idle. Such operational inefficiencies wasted time & money.

Due to this ASTAR recognised the need for a bespoke software solution in form of a SAAS product. This would completely digitize their current manual process to record onsite jobs listing and trainer’s job allocation. The plan was to increase productivity of employees using technology. They wanted a Cloud solution which could be accessed from anywhere in the world. This solution also needs to be responsive to tablet &  small-size desktops.

They were looking for an expert solution provider in Asp.net zero who can convert their idea to reality with authorized access to Management Roles, Access, Jobs, Allocation Calendar etc. We were already an official partner with Asp.net zero for last 3 years. We had experience of delivering multiple apps in Aspnetzero which we demoed and got selected. This app also had to be cost-effective service as client wanted value to migrate from their legacy software. They also wanted that they could sell this software on subscription basis to other clients. This software could be saving them a lot of revenue as well as create new revenue.

Objectives.

  • Job Scheduling
  • Clutter free calendar
  • Connect data coming from website
  • QuickBooks Desktop Integration
  • Real time availability check of Trainers
  • Better navigation and accountability
  • Portal Access to customers
  • Multitenancy to allow selling software on subscription basis.

Our Approach.

We went through their entire scope of work and started with due diligence process. We did this to cover the loopholes found during the course of action. Our Analysts asked the right question which even ASTAR folks didn’t thought while using Service fusion for last 3 years. Once they answered our questions we were good to start our Agile lifecycle and dividing the requirements to sprints. The customer wanted this software in less than 6 months as they wanted to migrate from Service Fusion asap. Therefore we had to put in 3 developers to suffice the requirement. First we started with user roles, security, tenancy and database schema. Based on that we decided how differently it should look to host admin, tenant admin, tenant user , customer admin etc.

We wanted to deliver a user friendly design for Jobs, Calendar as well as QuickBooks Integration with Invoice screen. Our team made sure each screen had consistent stylesheets whether it input controls, modal designs or advance filter in accordion. In addition, We researched well for the color codes to help customer act accordingly.

Delivery

Random color generation was done to award each new user & job status with a new color. This helped user to recognize trainer allocation separately in calendar. Our software supported Data export to excel and pdf to make data available across different systems. Security was a major concern for which we had Audit logs & Reporting to our support. As a result, the admin could see who changed record and when.

Users could add time to show their task allocation and utilization each day. A company can work better if it knows what is the utilization rate of each of its employees. Drag n drop functionality helped users to directly put unassigned jobs on specific dates. These calendar events allowed dragging to change dates. Also there were provisions to add customers, users, assignee, services on the fly without redirecting. We had integrated sendgrid through SMTP to send mails. In conclusion, we had covered every feature which a multitenant SAAS system should have.

Solutions Provided.

  • Database Design with SQL 2018
  • User Interface Design with Angular8, Metronic Theme & PrimeNG Customization
  • API Development with Asp.net core 2.3 & Integration
  • Client Portal & Dashboard
  • Quickbooks Desktop Integration
  • Quickbooks Online Integration

 

Job listing aspnetzero Ncoresoft ASTAR

Calendar view for ASTAR By Ncoresoft

Quickbook Invoice for ASTAR By Ncoresoft

 

Avg Time Saved Per Day => 2hrs (Tested on 100 employees)

Digital Solutions For Improving Your Business

    With Ncoresoft as your Digital transformation partner,
stay ahead of the competition and transform your business today.

Contact us Now

NCoreSoft Named Top Software Developers!

NCoreSoft Named Top Software Developers!

“We are thrilled to have been chosen as one of the top software developers in India by Clutch”

 – Shalin Jirawla, CEO of Ncoresoft.com

Ncoresoft Top Software Developers of India 2020 by Clutch

It’s an honor to be recognized as an industry leader by Clutch!

Clutch is an online resource that makes it easy to find businesses for upcoming projects. By compiling case studies and verified client reviews, clients can make confident decisions about partnering with new vendors!

Selected for our market presence, previous experience, and client rating, we stand or as leaders in the software development market.

Awards that consider feedback from our clients, like this one, are particularly meaningful for our team. Whenever we tackle a new project, we consider what makes the most sense for each of our partners. We’re committed to creating the best results that with help them exceed their business targets while reducing costs.

Recent Review for Top Software Developers By our California client:

Client Review On Clutch for Ncoresoft Top Software Developers

By putting our business partners’ needs first, we’ve attained a perfect five star rating on our company profile!

We’d like to thank all of our partners who took the time to provide our team with feedback. In doing so, they’ve helped verify our team too.

By visiting our company profile, users like you can see project details like cost, scheduling, and the tools we use, as well as project results, like metrics, quality of our work, and our partner’s likeliness to refer us to a friend.

NCoreSoft has the Best Dotnet Core, Angular & React Developers in India. They also specialize in React Native mobile apps, chrome extensions, PWA and Responsive design in web, mobile and tablet etc.

Whether you’re in manufacturing, publishing, healthcare, banking, insurance, real estate or anything else, we have the experience to get you where you need to go. To learn more about the services we offer, you can contact us online.

7 Reasons Why your Business needs custom software development

7 Reasons Why your Business needs custom software development

All businesses need Custom Software as they need productivity and profit to go parallel. Custom Softwares are built with a targeted objective in mind to scale company and increase revenue. The timely completion of tasks in the correct way and order daily makes the actual difference in business. All Founders and co-founders always strive to tighten the nut bolts of operations and other departments. The main focus is efficiency in each department so all business units need refining. No one software solution can provide you answer to all problems your business is facing. All they provide is generic and common solutions which may and may not work for your business.

In this query, many times business owners need to buy multiple software or subscriptions which becomes tedious. You need multiple stakeholders to manage multiple apps which decreases productivity too. The time you dedicated for meeting new clients or other important tasks got used in managing multiple applications. Also each app stores data in different servers as per each software creator. This can be unmanageable many times due to synchronization and compatibility issues. A custom software can do wonders to your business. It will become the one stop solution and solve all your company’s issues on the daily run.

We build Mockups before starting custom software development
Following is our list of 7 reasons reading which you may understand the importance of custom built software:

  1. Why use multiple softwares to perform one task?

    – When you start your day, you use Quickbooks for accounting/invoices. You may have Sage for sales/purchases, some other for shipping and tracking. All these affects your learning curve, software expenses, productivity and manageability index daily. This can be solved if you ditch them and go for custom software development. A tailored software solution which performs your team’s daily routine tasks is need of the hour.

  2.  Easy to Expand and Scale

    – When your team grows you dont want to increase your overhead. You want your entire workforce to be on the same page. How will that happen if all are diverted to seperate solutions to reach to common goals. Even training new employees on different softwares can be a big headache. This can be prevented if we have single solution for entire team with separate authentication and authorization. An accountant doesn’t need to see the marketing module and a purchase manager doesn’t need to see sales module. A company can easily grow as they have the highest productivity with single tailored solution. Learning curve and training costs go down to zero as colleagues can teach each other when needed. You can scale your business easily with this unlike offshelf solutions. Those can be used by startups when they don’t have routine operations but wont work when your company is 100+. So why not to invest it onetime and save money rather than to pay for licenses for 10 years and then migrate to a custom software.

  3. Why to pay monthly user-wise licenses and subscriptions

    – It is a one time cost you pay for a custom software. After that it is just minimal annual hosting and maintenance charges. Hosting and maintenance charges depends on client’s choice if he needs them or can host on private server. Imagine you buy 100 SAP licenses for your team. After that you call their team for training your employees. Imagine the cost and compare it with some single solution provider who can deploy your software to cloud. Now your team can access it from anywhere in the world giving you maximum productivity. Also no need for manual upgrades as your Cloud solution will automatically load the latest build.

  4.  Customize Logic Anytime.

    – When you have ordered for a custom built solution, you can send change request even after the product is launched and delivered. You can make any business logic change which you think is right for your business.

  5. Lower separate hardware costs.

    – When you are using third party softwares, you might have to pay extra for the hardware and the licenses of software to access them. But once you go for a custom solution, you make sure that all the features and functionalities related to hardward involvement are covered so that the extra cost is stopped for future.

  6.  Migrate from Paper work to Cloud.

    – Is there any paper still moving in your company from desks to desks? Are you still signing the legal and terms paper via paper ? Are you still using desktop app or spreadsheets where you print out and then send the papers for CEO’s sign ? Gone are the days when you had to manually manage all these chores which occupy 3-4 hours of your day. There are high chances that paper work and spreadsheets have human errors and you cant update them back. We made a mobile and tablet responsive enterprise system for Star-lo Electric. Before this they used to put in all the tasks done by labourers, field managers in paper. This included all of timesheets, tasks, projects, material inventory and reports. Imagine how we saved them a lot of hours each day by migrating them to our wonderful cloud system which can be accessed from anywhere and on any device. It took just 5 months for us to develop it.

  7.  Manage all your customer queries in one system

    – You make amends for healthy customer relations, but still you face complaints, escalations, poor surveys etc. You can make all of them in one place by going for a custom customer software. The software will make sure that it has all the social networks like twitter, Facebook, Instagram etc. where the customer has posted about your product or your company in terms of hashtags. You can also see which team and managers are working on each customer project and what is the current status of delivery. You can also have realtime customer chat or mail integrationWe always suggest our clients to first automate the efficient processes in their current business daily routine. Only after this is successful, go for automation of inefficient and problematic chores in business.If you like our article, please stay tuned for more. For any technical queries or project requirements send mail to [email protected]

Hire Asp.net Core developer | Asp.net core Development

Hire Asp.net Core developers in India

Hire Asp.net Core developers from Ncoresoft Technologies on hourly or full time (dedicated monthly) basis. Our team is experienced in building smart web apps for global clients. As a Dotnet Core Development Company, we outshine others in delivering complex and challenging projects and provide you fast & cost-effective development saving upto 80% of your hard earned money. Isnt that a win-win situation where you can use this bonus money for your expansion or luxury !!!!

Why hire Ncoresoft ?

  • Featured at 36th rank in Top 50 IT Outsourcing Companies of The Manifest.
  • Featured at 78th rank in Leading Software Developers in India for 2019
  • We specialize in SAAS development so we research several ways for you to earn subscription money before starting development.
  • We have worked on all versions of Asp.net core starting from 1.0 to  3.0
  • Save 80% by hiring us. You have to pay a very high rate to your local developer.
  • We only use our inhouse developers and no freelancers.
  • Experience of 100 successfully completed projects and 40+ existing clients.
  • Get free project manager cum scrum master along with developer.
  • MoneyBack Guarantee
  • Source code Handover
  • Non Disclosure Agreement
  • Complete Transparency & Control over Team
  • Bi-Weekly milestone with Agile development and Daily Scrum.

 

 

Above we have given our architecture standard which we use for all our Asp.net core projects. Till date we have completed 15+ Asp.net core projects starting from version 1.0, 2.0, 2.3 & the latest Asp.net core 3.0

Clients we have made happy with our Dotnet Core Solutions:

Wellnicity Ncoresoft          ASTAR INC NCORESOFT          MTN TELECOM NCORESOFT

      Ncoresoft Client Startupsuite          Ncoresoft client Simpletix event

     Ncoresoft Client SmartGovData

     Ncoresoft Client AustraliaTaxOffice           KANSAS WESLEYAN UNIVERSITY

 Ucarenet Ncoresoft      Fine Art Estates Ncoresoft

Our Full Stack Dotnet Solution Services

Our Dedicated .NET developers at Ncoresoft deliver scalable and secure web development solutions. Our aim is always to cater to all the client goals and requirements. Our dedication is irrespective of the size, location or industry vertical of your business. Be it a Startup or a Fortune 500 company, we give our 200% to serve you.

  1. Enterprise Application  Development
    We have provided business enterprise systems to clients like Simpletix, Valprime, Smartgovdata, Cueros Velez, Urcomped, Australia tax Office, Wellnicity, Fine Art estates, Shelby county schools, Kansas Wesleyan University, Startupsuite, MTN global, Astar Inc etc.
  2.  Business Problem Solving Solutions
    Following are the solutions we have created after analysing client problem :
    a) Event & Ticket Management
    b) Live Commodity exchange for Oil companies
    c) Business Intelligence CMS
    d) Present + Forecast Analytics and KPI manager
    e) Financial Dashboard with integration to QuickBooks & XERO
    f)  Hotel Booking system
    g) Ecommerce for Company selling Health kits
    h) Ecommerce for Company selling arts
    I) Assignments & grading system for schools
    j) HR Management System
    k) Investor CRM
    l)  Sales CRM
    m) EMR/ EHR
    n) Transport Management system
    o) Field Tracking Software
    p) Web crawler for linkedin, facebook, twitter, Quora, Angel.co etc.


Cloud & Multitenant SAAS based Solutions

We are very experienced with Azure & AWS deployments of Asp.Net core websites as Azure app services be it with Angular or Reactjs. Our team also have integrated Azure SQL as well as NoSQL Databases with Azure through Blob, Azure table storage and Cosmos dB.
Ncoresoft developers have also built Fan In & Fan Out Azure functions and integrated with Sentiment analysis for twitter.
We built an Azure Schedule job for recurring calls to an REST api.

Our developers have done Payment integrations with Paypal, Stripe, Authorize.net, CCAvenue. Ncoresoft has built single tenant as well as multitenant(multiple clients can subscribe to same system) systems. We know to make multitenant system with single database as well as multitenant system with multi database for more security.
We know how to setup subscription based system for recurring or one time customers.

Our developers have built 50+ stateless microservices with Azure service fabric (Auto-scalable with dynamic site-cloning on increase of user traffic) for a project. We know about loosely coupled architecture and abstain from building Monolithic apps. All our apps with payment gateway are highly secure with JWT tokenization (Json web token) and authentication/authorization.

Other Systems & Features we provide:

  1. Multilingual & Configurable app
    Our developers have built apps for 10 different languages like Chinese, Spanish, Dutch, German, Italian, Russian , French, Portuguese, Arabic, Turkish, English, etc. Our knowledge of Asp.net zero and Asp.net boilerplate is an added advantage than other development companies. We are deemed development partner of Asp.net zero team. We don’t do static coding. All our apps are configurable to the maximum level as we try to save client’s time for small changes. Everything is configurable in our admin panel.
  2.  Get Highly secure features at no extra cost
    Our systems come with many of inbuilt features like user lockout (where only 1 user can be logged in at a time with one credential. If other user will log in with same credential, it will throw out old user). We also provide auto CSRF protection as well as two factor authentication. We also provide social authentication with facebook , google. Our organization unit system and role management makes it easy for you to do granular level access security. You don’t need to pay for Audit logging, Caching, & Exception handling.
  3.  Live Realtime Chat & Stock Exchange App using Signal R
    We have built several realtime systems for various clients who need online and live solutions for their business. There are customer service call centres who need personal high secure chat system and there are commodity and stock exchange clients who need to capture realtime stock quotes in their personal system. Sports clients need live scoring and commentary apps. Organizations need weather forecasting as well as revenue forecasting apps on real time basis. We do it all through .Net core & Signal R hub.

    Mobile Responsive & Crossbrowser PWA

    Our full stack developers don’t need additional designers to work along. They themselves have the ammunition and skills to provide you the best in class mobile responsive progressive web apps. Our knowledge in Html, css3, scss, photoshop, sketch etc. can give you screen design within a day. Our psd to html converters can convert any image or mockup to html within a day. Developers build responsive solutions which work amazingly on all of Tablets, Desktops, Iphones, Android phones etc. Our web solutions work on all browsers like Chrome, Firefox, Edge, Safari. We also cover Internet explorer on additional demand.

     Systems with Inbuilt Unit testing

    Our knowledge of Jasmine, Karma, Protractor, Jest, Enzyme has made it possible for our clients to get zero error solutions. Clients just need to give the test cases and business logic and then we design a very secure testable system. All specifications are mentioned in the asked format in loosely coupled manner.

    Third Party integration systems

    We have done third party integrations with Freshworks, Freshdesk, Aha, QuickBooks, XERO, Twiiter, Facebook, GitHub, Jira etc. to post and update these portals using their Rest APis.

Process we follow before Allotting developers to clients :

  1. Based on your requirement we first do a due diligence of project understanding and requirement analysis.
  2. After that we ask questions and send you loopholes thereby giving you a boilerplate estimation in case of fixed cost project.
  3. We give an Interview to the client. We satisfy the client with our knowledge of  Asp.net core and required frontend technology be it Angular or React.
  4. Once client confides in us, we start taking wireframes or build mockups based on SOW or requirement document from client.
  5. This is where developers communicate daily with clients and make sure to achieve all client milestones on time.

Are you ready with your brilliant business idea or problem? Reach out to us at [email protected] and we will make sure that our Asp.net core solution does wonders to your business.

Lets Make Things Happen

Thanks for visting us. Contact us for all your professional inquiries to Ncoresoft.

Visit Us On TwitterVisit Us On Facebook