See what´s cooking: Wisej 2.5

seewhatscooking-header

In this blog section we like to inform you about topics and technologies that we are evaluating and working on to possibly integrate into Wisej in the future. While this is not intended to be a roadmap, it should still give you a peek behind the scenes and a feeling of what could be included in future Wisej releases.

Wisej 2.2 and Wisej 2.5

Wisej 2.2 has been released but we continue to refine it, enhance it, and add experimental new features and extensions that will make it into the next major release Wisej 2.5.

Latest Enhancements

Parallel Designer Renderers

Starting with the latest 2.2 build you will find a new settings icon in the Wisej designer toolbar, next to the icon on the right side. It looks like this:

parallel-renderers

The designer options dialog allows you to set the number of parallel renderers and the renderer timeout (this is the timeout that controls when to show the little warning icon). This experimental feature is the first step to support support the Edge/Chrome as the rendering engine in a future release of Wisej.

For now, using IE, we recommend using a maximum of 3 or up to 5 renderers since IE is not fully parallel and runs mostly on the main UI thread. So, when there are too many IE instances it actually decrease performance.

In this video https://www.screencast.com/t/WHgWseNvwSr you can see the design rendering performance with 3 parallel IE renderers and then with the current limit of 1.

WMF, EMF, TIFF Support

Most, if not all, browsers don’t support displaying Windows Meta File (WMF), Enhanced Meta File (EMF), or Tag Image File Format (TIFF) images. We have now added support for these formats in our Wisej.Web.PictureBox. It’s done by taking advantage of a super cool Wisej feature: custom painting.

In fact, any Wisej control can attach to the Paint event and draw just about anything on the control’s background surface.

BarCode Decoder Extension

The BarCode extension has a new BarCodeReader class. It’s a component that you can drop on any container and use to read and decode barcodes either on the server or on the client.

In fact, it has two internal implementations. If you pass an Image object to the barCode.DecodeBarCode(image) method, it will decode it on the server and return a string with the decoded value.

If you attach it to a Wisej Camera control, it can scan any barcode in front of the camera automatically and fire the ScanSuccess event with the decoded value.

Async JavaScript Calls

In Wisej you can call JavaScript methods and scripts from the .NET server code quite easily using Call(name, args), Eval(script) or CallAsync(name, args) or EvalAsync(script). The call is marshaled to the browser which executes the JavaScript code and can return a value. On the server side, you receive the value asynchronously:

// asynchronous callback
this.Call("doSomething", (retval)=>{AlertBox.Show(retval);});

// async/await
var retval = await this.Call("doSomething");

 

It all works amazingly well, but… What if the JavaScript code in the browser is asynchronous itself, as it’s more and more the case with code dealing with media elements or external services? The JavaScript function doesn’t return any value. It calls a method and will receive a callback response after the method is exited.

Now Wisej supports also asynchronous JavaScript methods:


function doSomethingAsync() {

  // create Promise instance
  var p = new Promise(function(resolve, reject) {

    // simulate async call
    setTimeout(function() {resolve("my result")}, 1000);
});

  // return promise instead of result
  return p;
}

Wisej now detects that the returned value is a Promise and it will send the response to the server call when the promise is completed or rejected (in case of error).

This functionality opens the door to lots of cool JavaScript integrations from the server.

AutoComplete

We have extended the AutoComplete enumeration to encompass the entire set of options. Now you can pick where the autocomplete list comes from, i.e: CcNumber, CcName, Country, CountryName, etc.

VB.NET Examples

We have just recreated all the C# examples  in VB.NET here. Some may still be missing, so check back in case there is a specific example that you need to use.

 

Wisej 3 for .NET Core (5 and 6)

All of Wisej is already running very well in .NET Core 3 and .NET 5. We have it running on a small Linux server without a single crash for months now, and we have demonstrated it running on a $60 Raspberry Pi at several conferences.

In Wisej 3 we have streamlined the base platform components and data binding, resulting in smaller memory usage and faster execution.

However, the biggest challenge is the migration of the Wisej designer to .NET 5 since it requires the creation of a new remote design system running in a separate process. We may be able to start a Wisej 3 beta (Windows and Linux) for Technology Partners, right after the release of Wisej 2.5.