Showing posts with label uniPaaS. Show all posts
Showing posts with label uniPaaS. Show all posts

Tuesday, November 22, 2016

10 Reasons to Deploy Your Existing Applications as Rich Internet Applications with Magic xpa


10 Reasons to Deploy Your Existing Applications as Rich Internet Applications with Magic xpa

                                  Rich Internet Applications Extend Your Reach


With Magic xpa, Rich Internet Applications extend the reach of your business applications to locations anywhere on the Internet. Satellite offices, home offices, and your traveling workforce can simply connect to the Internet and access their applications.

           Rich Internet Applications Can Go Mobile


In addition to being able to access applications from desktop and notebook computers, Magic xpa RIA applications can be deployed on Windows Mobile devices, which opens up your business applications to your mobile workforce and field workforce in even more exciting ways.

          Rich Internet Applications Are Rich, As In Interactive


With a whole host of highly-interactive user interface controls built-in to Magic xpa, your applications have the kind of responsive up-to-date look and feel that users expect and need. This enhances the user experience leading to greater employee, trading partner and customer satisfaction.

Rich Internet Applications Are Rich, As In Media Intensive

In addition to all of the native graphical file formats supported from within a Magic xpa "form" or "sub-form", the Magic xpa RIA client can see all types of media types within a so-called "browser-frame." It allows you to display the kinds of rich media (pictures, sound, animation, video, etc.) that you are used to seeing in a web-browser without the overhead and anarchy of the browser itself. Which reminds us…

               Rich Internet Applications Are Browser-Free


Web browsers impose all kinds of interaction uncertainties and security concerns. The advantage of Magic xpa’s approach to RIA is that is browser-free. You don't have to worry about other windows popping-up, the back button, or security violations due to the end-users manipulation of the security settings on the browser or their appetite for cookies, exposure to viruses, adware and other risks.

 Rich Internet Applications Don't Require Terminal Servers (such as Citrix)


Since Magic xpa extends your reach across the Internet, you won't need layers of expensive third-party technology just to let your users see your applications. That saves money, reduces architectural complexity and simplifies installation.

Rich Internet Applications Can Be Built With Magic xpa Unified Development Paradigm


Magic xpa’s unified development paradigm means you don't have to develop complicated architecture for rich client and server interaction, you don't have to use two different tools and programming languages – one for the client and for the server – because Magic xpa Studio environment allows you to develop in a unified fashion for both client and server with automated management of technical and communication layers. That means all of the session contexts and caching are automated according to your application design. It's Magic, after all.

Rich Internet Applications Built on Magic xpa Can Access Local Client Resources


With Magic xpa,the applications you create can access local resources such as XML, databases, email and local files. In the real world of business, not all vital information sits on the server at a centralized data center. Sometimes you need information from the users' machine or access to things as simple as local printers or other I/O devices.

Rich Internet Applications Based on Magic xpa Are SaaS and Cloud Ready


Some companies want to be able to deploy the software applications they create to multiple users on a Software-as-a-Service model. SaaS models flourish with browser-free RIA like Magic xpa because of the heightened security and really all of the reasons mentioned above.  It's great to know that you can deploy your RIA applications today knowing that you can take advantage of SaaS models in the future.


Rich Internet Applications Built In Magic xpa Are Magic!

Calling a business application framework "Magic" conjures up different images in different people's minds. In the best sense, those familiar with Magic Software know that it isn't about hocus-pocus or risky shortcuts, the long tradition of application deployment using Magic, eDeveloper and now Magic xpa is about scalability, reliability, transactional integrity and an innate developers' productivity that extends from our foundation as a rapid-application development environment. It isn't just about working with what you know, it's about knowing it will work. Magic Software Enterprises stands behind Magic xpa Rich Internet Client deployment mode with full support, professional services and a strong community of developers and customers ready to ensure your success. 

Saturday, May 2, 2015

The Power of 3: A New Kind of Magic is Coming



For those who have followed Magic Software over the last 30 years, you might want to write down this date: May 12, 2015. Magic has always been known for providing a more efficient and smarter way of computing. But in a quiet campaign, labeled “The Power of 3” Magic has announced the release of its latest version of the application development platform upon which the company was founded. It’s Magic xpa Application Platform 3.0. A new kind of Magic is coming.

Not that there has been anything wrong with the old Magic. Magic developers have been winning development competitions and powering businesses for three decades. From 2009 to 2014, company revenues grew 265%. The old Magic was pretty good.

Magic xpa 3.0 is a game changer, however. Magic xpa 3.0represents a transformation in the Magic application platform in three significant ways:

  • by being the first in-memory rapid cross-platform application platform.
  • by empowering mobile business transformation more efficiently than ever, and
  • by leveraging the familiar development platform of Visual Studio .NET.


As the converging trends of mobile computing, cloud computing and social media collide, the volume of data managed by business applications is expanding exponentially. Moore’s law was having trouble keeping up with Big Data. With Magic xpa 3.0, every Magic application will be an in-memory application. With in-memory power, applications can handle up to millions of transactions per second while experiencing sub-millisecond latencies, high availability and 100% operational integrity.

Magic xpa 3.0 also delivers unprecedented mobile app development capabilities to Magic developers who can generate apps for iOS, Android, Windows, Linux, and even legacy environments like IBM i.
And with the release of Magic xpa 3.0, Magic developers will be working in Visual Studio .NET for the first time to build the presentation layer of their applications in the Visual Studio form editor.

Yes, a new kind of Magic is coming. May 12, 2015 will be a very good day.

To learn more about Magic xpa Application Platform, you are invited to attend the Magic Users Conference 2015 in Huntington Beach, California May 31, - June 3, 2015. The detailed agenda and registration link can be found here.


Friday, August 23, 2013

Reason # 19: Enterprise Mobility Apps

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

Basically, anyone who would migrate their Magic application to C# would lose out on the built-in capabilities of the Magic application platform for server-side and client-side mobile apps.  The Magic RIA client for iOS™, Android™, BlackBerry® and Windows Mobile® is a native operating system (OS) application for any of these devices, implementing the Magic RIA client protocol. Using the Magic RIA client for the different mobile devices, developers can deploy highly interactive enterprise RIA applications on the various mobile devices. This is another critical reason not to migrate Magic eDeveloper, uniPaaS, or Magic xpato .NET in C# or ASP.
Magic xpa is indeed Mobile-ready and you leverage same development effort for all mobile operating systems (iOS, Android, BlackBerry, Windows Mobile) and devices (smartphones, tablets). All C# can do is act as a piecemeal backend server in an all too complex mobile kluge, whereas Magic xpa provides a comprehensive enterprise mobility solution including real-time back-end integration and mobility management services. Let’s look at the details.

Developing mobile RIA applications using Magic xpa requires the same skill set as developing desktop RIA applications. However, since the devices’ capabilities, user interface and expected user experience are significantly different from a desktop computer, there are obviously important differences that need to be taken into account when designing the application screens and planning the user interaction.

Devices differ in screen size, fonts, expected interaction device features (such as a camera and GPS), security related features and more. Consider, for example:

Screen size and orientation – Mobile devices have various resolutions and screen sizes in both landscape and portrait orientations.
Keyboard devices – Some mobile devices have a full QWERTY keyboard. In addition to a keyboard, some devices have a dedicated Menu key, an Esc key and a trackpad or trackball that are equivalent to the desktop keyboard arrow keys. The trackpad also provides a dedicated Fire action when pressed. Keyboard-only devices have a fixed screen orientation and cannot be rotated.
Touch devices – Some mobile devices have a touch screen or hover screen, some in addition to a full keyboard, and some without a keyboard. Touch devices support screen rotation and provide an on-screen virtual keyboard when a full keyboard is not available.
Windowing model – Mobile devices support a simple stacked window model. Each application can open multiple windows, but each new window is stacked on top of the previous windows and is inherently modal. As there is no mouse pointer, windows cannot be manipulated (moved or resized) by the end user. When an application is run, its main window (and subsequent stacked windows) occupies the entire device screen.
Form navigation using trackpad – Some mobile devices (such as BlackBerry) are optimized for keyboard navigation and input. Typically, the trackpad is used to navigate between fields on the form, while the Fire action is used to select values and perform actions. Unlike a desktop keyboard, there is no TAB key so there is no standard key to move to the Next Field or the Previous Field. All navigation between fields and inside a field (an Edit control), is done using the trackpad directional actions.
Form navigation using touch keyboard – Touch devices use an on-screen virtual keyboard. Some devices rely on tapping on form controls (fields) to navigate between the fields while others have Tab functionality in the virtual keyboard. The navigation inside a field (an Edit control), is done using a long press on the field content.
Context menu – The context menu is an important and central user interaction tool. Since the screen size is relatively small, it is common to perform most tasks using the context menu, instead of “wasting” screen space on buttons and on-screen menus.
Input modes – The Edit control is always in Insert mode. There is no equivalent Overwrite mode on the mobile devices.
Running in the background – The mobile devices’ OS is a multi-tasking OS, meaning that each application can run either in the foreground or in the background. The end user can see the running applications and switch between them. An application running in the background is not suspended and continues to run, but does not have access to the screen.
Offline mode  Magic xpa's new offline mode allows clients to continue working on their app even when the connection has been lost and restores the application states when the connection is restored.

C# has absolutely no capability for dealing with any of these challenges while Magic xpa has built-in support for smartphone and tablet features that allow you to build apps for multiple devices with ease.

For additional information on how an upgrade to Magic xpa is superior to Magic to .NET conversion please convert here.

Thursday, August 22, 2013

Reason # 18: Distributed Application Architecture

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

Magic xpa Application Platform utilizes a Distributed Application Architecture that offers a high level of choice between different computing environments. The interoperable nature of Distributed Application Architecture also means that Magic xpa applications have the ability to operate in multi-database, multi-platform, and multi-network data processing contexts. Using the simple interface common to all Magic xpa applications, every user, from any workstation, can access any type of local or remote database, execute queries, and update the data. As we shall see, Magic xpa Application Platform provides capabilities for distributed architecture, application partitioning, MDI, and secure communications out-of-the-box. When converting Magic eDeveloper, uniPaaS or Magic xpa to C#.NET, these advantages are lost.

In an environment where multiple computers are connected by a Local Area Network (LAN) or Wide Area Network (WAN), Magic xpa’s distributed application architectures automatically utilize a specific form of distributed processing.


Fortunately, when you install Magic xpa, you don't have to know how the distributed application architecture is set up, however you can adjust the settings if desired. The diagram below illustrates what is happening behind the scenes in Magic xpa's distributed application architecture.

The process begins when a client, such as a browser or Rich Client application, makes a request to the enterprise server. It does this via a requester, usually a Web server. Each client has its own requester.

The requester uses the broker to communicate with the Magic xpa enterprise servers. This is a Magic xpa Runtime engine (MgxpaRuntime.exe) functioning as an enterprise server. The broker scans its list of prioritized servers to find a server that is not busy and informs the requester which engine is available. If all the engines are busy, the event is added to the broker's request queue.

Once an engine has finished handling a request, the Runtime engine sends the request results directly to the client and notifies the broker that it is available to process the next client request. A check is made if there are pending requests in the queue which are for the same application as the one loaded in the Magic xpa engine. If there are pending requests, the broker extracts the requests with a higher priority and sends it to the engine.

The term application partitioning is used to describe the process of developing Magic xpa applications that distribute the application logic among two or more computers in a network. In the simplest case, the application can run on a single PC, as a remote service, and send task requests for execution to a server. In more advanced cases, the application logic can be distributed among several servers.
The first step in creating a partitioned application is choosing which components of the application run on the server system or systems. The criteria for making the choice are the components that would most benefit in performance and maintainability, if they were to run on the server. Note that the decision whether a program or task runs in the Requester Client or in the system need not necessarily be made when the application is designed, but the design must take this into consideration as only background-mode tasks are applicants for partitioning.

In Magic xpa, background enterprise servers and Online programs are multi-threaded. This gives you the ability to have parallel task execution in your projects.

Each thread accesses a different Runtime context, and does not interact with other threads. To work with multiple threads in Online programs, Magic xpa provides you with Multiple Document Interface (MDI) and Single Document Interface (SDI) functionality.

Communication between the Magic xpa client and the Web server (requester) is compressed while communication between non-Magic xpa clients (such as Web clients) and the Web server (requester) is not. The Magic xpa developer secures these communications using the https protocol. The https protocol (SSL\TLS) encrypts the communication between the client and the Web server and ensures that the server is a trusted one.

Communication between the requester, broker and engine is encrypted using Asymmetrical and Symmetrical encryption. No hard-coded keys are used and it is possible to define the Symmetric encryption mechanism and the key length.
For additional information on how an upgrade to Magic xpa is superior to Magic to .NET conversion please convert here.

Wednesday, August 21, 2013

Reason #17: Magic xpa has a Built-In Licensing Mechanism

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

One of the deficiencies of C# as it compares to Magic xpa is that it lacks any sort of licensing mechanism. Licensing is important for software publishers who want to use Magic xpa to create and protect commercial software. It also provides an added measure of security and risk prevention to corporate software users. Licensing mechanisms help to prevent unlicensed software usage and therefore reduce the risk that a company can be sued for copyright and other violations. When considering migration of Magic eDeveloper to C#.NET or ASP.NET or Java (or uniPaaS or Magic xpa), it is important to consider your need for licensing mechanisms.

 Magic xpa’s built-in license-metering mechanism uses your local area network (LAN) to communicate between Magic xpa instances running on different machines on the network. As part of our ongoing commitment to comply with the latest and highest industry standards, Magic introduced a new policy for the activation of our software licenses in 2012. The improved process, implements a highly secure, automated method of license protection, enabling you to better monitor the use of your licensed software.

You activate and receive your licenses after validating your Product Key on Magic’s License Activation Portal. The metering mechanism helps organizations avoid any unintentional violation of the license. The license-metering module ensures that no more than the allowed number of connections uses Magic xpa concurrently.

Magic xpa includes a license management scheme. The license management system comprises three main components: a License File, which stores all the license information for a specific site; the Magic xpa Engine, which uses data from the License File to allow or prevent user access to an installed Magic xpa product; a License Server, which provides license information to the Magic xpa engine, and also counts the active users of the installed product.

Magic xpa offers three license modes: no license, demo license and permanent license. The Magic xpa License File, when initially created, contains a default demo license. This demo license has no time limit but is limited in its functionality and cannot be used for the development and deployment of mission-critical applications. Permanent licenses have no time limit. When you load Magic xpa with no license, essentially without specifying a license name, the Single User Edition will run.

The single-user limitation is relevant for both the development of the application, as well as its deployment. Magic xpa Single User Edition provides almost the complete range of features found in the commercial edition of Magic xpa, excluding multi-user related features and capabilities.

Magic xpa also includes convenient mechanisms for counting licenses and running floating licenses. To count licenses, you can run MGSTATIONS.exe from the Magic xpa directory to verify the license count of a specified license on a network.

Magic xpa's default behavior is that you have to define the number of licenses that each server uses during the execution of a project. This number is checked across all the servers in a multi-project environment to ensure that it is within the license limitation. For example, if you have a license with 20 threads, and you have two projects running in a multi-project environment, you have to distribute the threads in advance. Project A might receive 15 threads, while Project B receives 5.

In a multi-project environment, each server runs a different project. This means that the capacity of each server (project) is a key issue, and the ability to share licenses (threads/users) is very important.

Magic xpa's floating license mechanism lets you make optimum use of these licenses in a multi-project environment, by sharing licenses between servers. Therefore, when a particular project is idle, other projects can utilize its licenses.

Because the Magic xpa broker controls the servers and their capacity, it needs to know the total number of licenses that are available for its servers. The broker adds up the total maximum threads and users belonging to each server. The broker uses this figure as the total number of available threads/users. If the broker sees that a particular server is not using its allocated number of threads/users, the floating license mechanism means that they can be used by other servers.

Using C# to manually license software is a fool’s errand. Using C# to bind in a third-party licensing scheme is also very expensive and time consuming. The advantage of the Magic xpa Application Platform is that licensing is built-in to the platform as a protection to both corporate end users and software developers.

For additional information on how an upgrade to Magic xpa is superior to Magic to .NET conversion please convert here.



Tuesday, August 20, 2013

Reason #16: Straightforward Security Management

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

Magic greatly simplifies security issues for developers, giving them the power to create highly secure applications without a lot of hassle. This is another reason why Magic eDeveloper or uniPaaS to .NET migration via C#.NET is a mistake compared to upgrading to .NET with Magic xpa.

User rights management is simplified in Magic because the developer and administrator/supervisor use Magic xpa’s built-in Authorization System, Active Directory or LDAP. The Authorization System enables developers and certain users to control access to Magic xpa projects in Studio modes. This control is achieved through setting access keys to various Magic xpa project elements, and by assigning specific rights to users and user groups.

As a repository based system, Magic xpa is vastly superior to the tedious coding required for rights management in C#. The Magic xpa Rights repository lists the name and keys of all the rights defined for a project. The developer can define a bank of rights and assign them to the project's various repositories and elements. Any project element that has an access right assigned to it will be blocked to users who have not been assigned this right. Project-layer security is always defined during development.

In addition, Magic xpa includes a flexible authorization system to control what each user can and cannot do in Magic xpa. The authorization system lets the application developer or system supervisor limit access to various activities in Magic xpa to those users specifically authorized to have such access.

The authorization system exercises its control through sets of rights and the use of built-in Magic xpa functions. Rights can be thought of as keys to locks. Rights assignments connect users, who are classified by role, with the application’s components, which are classified by accessibility. This means that certain classes of users are allowed to access certain parts of an application.

The person in the role of Supervisor can assign rights that give each user access only to the activities for which that user is authorized. Any activity that is not specifically restricted by the Supervisor or the developer remains accessible to all users and does not require any rights assignment. To access the authorization system repositories, the developer must log on to the system as a user which has the SUPERVISOR GROUP assigned to the user. This group is reserved by Magic xpa, and is automatically included in any Magic xpa system. In addition, a Supervisor user (which has this group assigned to it) is also automatically included in any Magic xpa system.

Typically, when one is implementing a security system in Magic xpa, rights are granted according to the user’s job function, which corresponds to a Magic xpa Group. That is, a user who is a bookkeeper will have a different set of menus and screens than a person who is in Sales. Other rights, however, may only be granted to certain individuals, such as the ability to approve paychecks or adjust time cards.

Managing rights in C# can be like looking for a needle in a haystack. Instead of having to search through potentially millions of lines of code to find everywhere that a role is checked, Magic xpa provides a single, consolidated location known as the Rights Repository. What a nightmare it would be to have to parse an entire code base to learn and document what roles are assigned to what permissions.


For additional information on how an upgrade to Magic xpa is superior to Magic eDeveloper to .NET conversion please convert here.

Monday, August 19, 2013

Reason #15: Magic xpa Surpasses C# in Interoperability for .NET

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

The Magic xpa Application Platform is a particularly strong platform in terms of interoperability of applications. While C# .NET is designed to be proprietary, Magic xpa Application Platform, while .NET based, is designed to deliver greater interoperability. This is one of many reasons why converting a Magic eDeveloper, uniPaaS or Magic xpa application to .NET in C# using a code generator makes no sense. 
Developers looking for fully .NET applications should instead upgrade to Magic xpa.

That’s why Magic xpa provides direct support for technologies like Java, SNMP, MSMQ, JMS, WebSphere MQ, LDAP, Active Directory, Java Script, VB Script, Client Certificates, Dynamic Data Exchange (DDE), IMAP, POP3, etc. All of these internal Magic xpa functions provide direct support for technologies that are otherwise quite difficult or impossible to support with C#.NET. 

The ability of a single programming environment to interface with so many different, unique and tedious environments at a high-level provides tremendous advantages, reduces risk and helps to future-proof your applications. For example, Magic xpa provides direct  Java support including support for Java classes and objects called in a Magic application and Magic applications exposed as Java classes and objects for use by Java programs. 

The idea that C# can handle a converted Magic application is ludicrous. Sometimes developers have no choice but to deal with older technologies like DDE. So even though you might be able to convert your code, without the Magic engine, there is no automatic way for raw C# to handle DDEs.

Let’s look at another simple example like SNMP. Magic xpa supports Simple Network Management Protocol (SNMP) functionality. This lets Magic xpa programs and the Magic xpa engine (the broker and the requester) send SNMP compliant messages to a monitor. It also gives the system administrator control over various Magic xpa modules via an SNMP monitor.

SNMP governs network management and monitors network devices and their functions. Magic xpa is SNMP enabled, so the Network Management Station (NMS), also referred to as an SNMP monitor, can query and manage the Magic xpa broker (including its registered enterprise servers) and the Magic xpa broker can report traps (alarms, failures, or other exceptional events).

Messaging is another great example of Magic’s superior interoperability compared to C#. In distributed applications, two different applications often need to communicate with one another to transfer information. One of the ways to accomplish this is message queuing, which ensures guaranteed delivery.

Message queuing lets applications send messages without waiting for a reply and to continue with other processes. Other applications can receive the messages at their leisure and continue processing according to the data received.

Message queuing is a method by which program instances can exchange data using an interface to a system-managed message queue, which is managed by the operating system. Application programs create message queues, and send and receive messages using an application program interface (API).

There are two main ways to send messages:

Send / Receive – This is used when there are one or more senders who want to send messages to one receiver. Each message is addressed to a specific queue, and the receiver extracts the message from the queue.
Publish / Subscribe – This is used when there are multiple senders (publishers) and many receivers (subscribers). The publisher sends messages to a central location, the topic, which sends the messages to anyone who has subscribed to this specific topic.

Both of these methods provide the user with guaranteed message delivery and are supported out-of-the-box with Magic xpa. Not so with C#.

Every access to the message queue is done using a set of functions, such as open, close, and send. Magic xpa provides a message queuing component with interfaces to three standard messaging queue systems: MSMQ (Microsoft), JMS, and WebSphere MQ (IBM). C# does a passable job only with MSMQ.

For additional information on how an upgrade to Magic xpa is superior to Magic to .NET conversion please convert here.



Tuesday, August 13, 2013

Reason # 13: Maintainability of Applications

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

As we mentioned in our previous discussion of software quality, maintainability of a program or maintainability of code is one of the six key measures of software quality. It is also the area where the Magic xpa Application Platform absolutely shines over alternative means of software development and deployment such as C#, ASP and Java.

Maintainability of C#.NET code is such a common and ongoing problem for developers that Microsoft, although unable to control bad coding practices, created a maintainability index that tells you just how bad your code is. If you are considering migration of Magic eDeveloper, uniPaaS or Magic xpa to C#.NET instead of upgrading to .NET directly with Magic xpa, then you shouldn’t ignore the problems of maintainability in C# versus Magic xpa. Here’s why:

C# software projects are commonly derailed by bad engineering decisions that make the code un-maintainable. These bad decisions often fall into one of two categories: over-engineering or under-engineering. Under-engineering results in spaghetti code. This is particularly common with code conversion projects. The code conversion creates a giant meatball of code. Thick, impenetrable and impossible to understand. Those charged with maintaining that code by manually programming in C# start by adding a string of spaghetti here, a string of spaghetti there. Pretty soon you have a giant wad of overcooked, undercooked and raw spaghetti smothering your poor meatball. There was no plan, no experience and no recipe for code maintenance. The situation gets worse when a renegade hacker is called in to rescue the code. But all they can do is add more spaghetti of their own and the code gets worse and worse. With Magic xpa, the platform itself provides the needed “applistructure” for an easily maintained application. Magic xpa applications are more like a finely layered lasagna, well thought out, uniformly structured and therefore highly maintainable. 

Over-engineering results in bloated code. A great many C# developers, including those who create code-generators, are overly enamored with patterns. Since they have no application platform to work with, they are forced to create application design patterns and it is extremely common to go overboard with these code snippets. Developers who inherit migrated code are also highly likely to overcompensate and be pattern-happy. It is almost impossible to see it in the early stages of code maintenance. The over-engineering of converted code is problematic however, because it causes incremental  amounts of overhead code to be added for each new change or piece of functionality implemented. Over-engineering will crop up when trying to cope with new operating system and database changes as well. Over time, these chunks of overhead snowball and negatively impact maintenance costs, lag schedules and ultimately cause projects to be abandoned and fail. The Magic xpa Application Platform provides the applistructure that allows you to focus on business logic. Maintaining code is never a matter of over or under engineering but instead a focused activity of measurable improvements.

The vulnerabilities of C# are also found in the area of code redundancy. Whereas Magic xpa leverages a platform, C# programmers have to create their own application architecture from scratch. The .NET framework is not an application architecture, that’s why the word framework was carefully selected because it is neither platform nor architecture. While every developer knows the DRY principle: Don’t Repeat Yourself. The problem with a code generator is that it is impossible for the developer to know when they are repeating code that was generated elsewhere. The converted Magic applications become so bloated and complex when deconstructed into C# code that the code to be maintained ends up having massively repetitive aspects. While efforts will be made and assurances given, it is just impossible to avoid code bloating by duplication of nearly-matched patterns.

Since the code generator won’t see the repeatability within complex patterns, it will simply engage in wholesale duplication of code. The code is not DRY conformant and therefore nearly impossible to maintain over time.

Magic xpa’s repository-based development approach enhances project organization. Rather than dealing with mountains of text, you work in well-organized Magic xpa repositories. C# on the other hand allows for wreckless programming. Poorly organized code can lead to the introduction of dumb bugs and will result in slipped schedules or worse.The superior organization of a Magic xpa application means that it is easier to on-board a new Magic xpa programmer from scratch than it is to orient even an experienced C# programmer to code-generated projects.


For additional information on how an upgrade to Magic xpa is superior to Magic to .NETconversion please convert here.

Monday, August 12, 2013

Reason #12: Converting Magic to C# Leads to Loss of Portability

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

While it is tempting to assume that the need for portability is subjective, normalized standards for software quality do look at portability as a key component of software quality. If you convert Magic eDeveloper, uniPaaS or Magic xpa to C#.NET you suffer a significant loss of portability.
ISO 25010:2011 provides a standardized way to evaluate software quality by defining six sets of attributes by which we can evaluate software. These attribute sets are functionality, reliability, usability, efficiency, maintainability, and portability. So what do we mean by portability?

Portability, is the ability to run applications in new environments. This can also be impacted by the developer, and not simply by the tools used. Attributes of portability include 
 

  • Adaptability
  • Installability
  • Co-Existence
  • Replaceability
  • Portability Compliance

The Magic xpa application platform and all previous Magic versions provide you a pathway to portability. Magic xpa currently supports Application Servers in all of these environments:

Microsoft® 32-bit Windows on Intel processors:
·         Windows XP
·         Windows 2003 (Standard Edition)
·         Windows Vista®
·         Windows 2008
·         Windows 7
·         Windows 8
Microsoft® 64-bit Windows on Intel processors:
·         Windows 2003 (Server Edition)
·         Windows 2008 (Server Edition)
UNIX
·         IBM AIX – 5.3 to 6.1 on PowerPC processors
·         Sun Solaris 10 on SPARC processors
·         Linux Red Hat Advanced Server 5.5 on Intel processors
IBM System I (requires PASE)
·         System i V5R4 on IBM servers with PowerPC processors
·         System i V6R1 on IBM servers with PowerPC processors
·         System i V7R1 on IBM servers with PowerPC processors

With Magic xpa, you have a software development environment for application development, testing, and deployment that enhances software quality through portability.

Portability in high-level computer programming is the usability of the same software in different environments. The prerequisite for portability is the generalized abstraction between the application logic and system interfaces, something completely lacking in C#. When software with the same functionality is desired for several computing platforms, portability is the key issue for development cost reduction. So portability has a number of benefits:
  • Long-term viability of the application: There’s no need to completely rewrite your applications to make them usable from one version of an OS to the next or from one OS to another.         
  • Resource allocation: With Magic xpa, developer resources can be focused on new features and products because developers aren’t spending time debugging for the latest OS version or porting applications to other operating systems.         
  • Scalability: Portable software is inherently more scalable and can be designed to accommodate users elastically with either small or massive amounts of data.         
  • Versatility: It’s easier to add features and have the assurance that they will run on all platforms.         
  • Future-proofing your application: An application platform approach that supports multiple servers across different operating systems gives you the flexibility to adjust to changing future requirements including the new operating systems of the future. The new mobile client operating systems and Magic xpa’s ability to support these is a great example of the benefits that a portable application platform provides.


For additional information on how an upgrade to Magic xpa is superior to Magic to .NET conversion please convert here.


Saturday, August 10, 2013

Reason #11: Magic xpa Provides Better .NET Handling than C#.NET, So Why Convert?

20 Reasons to Migrate Magic eDeveloper, uniPaaS and Magic xpa to .NET by Upgrading Rather than Converting

Why bother with Magic eDeveloper, uniPaaS or Magic xpa conversion to .NET when Magic xpa provides better .NET handling than C#.NET? Let’s review how Magic xpa does a better job than C#.NET does with the underlying .NET framework itself:

.NET Integration

With Magic xpa you can embed and integrate any .NET control or assembly without writing line-by-line code to do so. You can control the look and feel of an application by directly placing new .NET controls as part of your user interface. You can also add-to the functionality of your app by integrating any form of .NET assembly. All you need to use the .NET functionality, is to have have .NET framework V2.0 SP1 (or above) installed on your machine.

Defining .NET Variables.

After loading a .NET assembly in Magic xpa, you will be able to more easily work with any of its objects and methods than a C# programmer can. With Magic xpa, .NET assemblies are loaded into the Composite Resource Repository (CRR). You can then define a .NET variable for use in Magic xpa and then add the variable to a form in your RIA or client-server application and set its properties.

Controlling .NET Properties.

When working with .NET objects they have properties such as free-form text, numerics, or objects. Magic greatly simplifies the property types that you need to worry about with .NET. With C#, for example, you might need to write 15 different pieces of code to deal with each of the various .NET types for numerics. Magic allows you to use any of these types and you don’t have to deal with the differences in them. The properties of a .NET object can view and use the properties development scenarios where you need these values, such as calculations, for a display in a Verify operation and so on. You can see the relationship between .NET types and Magic xpa types in the table below.

Corresponding Types

Magic xpa Type
.NET Type
Numeric
SByte, Byte , Int16, Uint16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Char, Decimal, Single, Double, Float
Alpha
Unicode Char, Char[], String, StringBuilder
Date
DateTime
Time
DateTime, TimeSpan
Logical
Boolean
Blob
Byte, Byte[], Char, Char[], String, StringBuilder
Vector
ICollection (only from .NET to Magic xpa), IList and objects that implement Indexers through the usage of 'this' keyword. Only indexers that have integer indexes Magic xpa only converts simple vectors and not multi vectors

Using the DNSet() Function.

Now, instead of having to use C# to leverage the .NET framework, you can manage it using Magic xpa functions and expressions. The Magic xpa DNSet() function is so named because it allows you to set the properties of a .NET (.NET=DN) object. In addition, you can directly access .NET in the expression editor with the expression prefix DotNet.

Use .NET Aliases.

.NET naming conventions are long and obnoxious as many of the assemblies have a very long path. Magic xpa allows you to define aliases in .NET so you can access things more easily. With C#, you’re stuck dealing with the full text version. Magic xpa also includes a type-ahead / auto-complete capability but aliases often work better because too many .NET names have the same beginning. Unfortunately, in C# the use of .NET global namespaces can be even more
problematic as they can become hidden. For example, in C# code, a namespace like Console resolves to TestApp.Console instead of to the Console type in the System namespace. Using System.Console still results in an error because the System namespace is hidden by the class TestApp.System. Ugh.

Using .NET Methods.
Most of the .NET objects perform a variety of actions such as trigger events and run methods. When using .NET within Magic xpa, Magic xpa can respond to the .NET events and can activate .NET methods.

Just like with Magic xpa objects, a .NET object can trigger events during runtime. When using a .NET object within Magic xpa, it is possible to handle the .NET event in a very similar way to handling a Magic xpa event. This means you can handle the various methods in the .NET object.

Using .NET methods in C# can get you in a world of hurt. When using normal C# events, registering an event handler creates a strong reference from the event source to the listening object. If the source object has a longer lifetime than the listener, and the listener doesn't need the events anymore when there are no other references to it, using normal .NET events causes a memory leak: the source object holds listener objects in memory that should be garbage collected. Then there is the question of whether registering and deregistering events is thread-safe. Unfortunately in C#, raising the event in a thread-safe manner is left to the programmer writing the code that raises the event, and this often gets done incorrectly. In fact, according to Microsoft C# experts, the raising code that's probably used the most is not thread-safe. Memory leaks abound in C# and that makes maintaining a converted application a total nightmare for both experienced and inexperienced C# programmers!

Trapping .NET Events.

As a Magic xpa developer, you are already familiar with event driven programming. With many .NET objects, you will find that they expose events that are triggered during runtime. Some common events are available in most .NET controls, such as OnMouseClick, and some others are unique to a specific control. In Magic xpa you can trap for .NET events and handle them in order to interact in specific ways with that .NET object. And of course, events can be propagated so that they can be handled by parent tasks as well. As stated previously, mishandled threads in C# can result in memory leaks. Inexperienced C# programmers will make all sorts of mistakes trying to overcome these limitations. For example, they may try removing the offending code around the .NET event call. But this does not decrease the number of race conditions in the code, and it does increase the number of crashes. Worse, doing so makes the race condition harder to detect by shrinking the window in which the race can occur without eliminating it. Ugh, I’m glad some people like C# because for obvious reasons Magic xpa developers will hate it!

Working with Constructors.

When a .NET variable is not placed on a form, it has not yet been instantiated, which means you should do so in Magic xpa using a “constructor”. A constructor instantiates and initializes an object. Constructors are methods in which the name of the method is the same as the class itself. For example, the StringBuilder object therefore has a constructor named StringBuilder(). The Magic University course “.NET Programming with Magic xpa” will provide the guidance you need to follow in order to place a constructor properly within an application. Unfortunately, in C#.NET you have to declare all variables including those placed on forms so…more work, more code, more headaches.

Defining a .NET Array.

A .NET array is similar to a Magic xpa vector. Therefore you will understand intuitively that an array is a variable that can hold multiple values of the same type. In contrast with Magic xpa vectors however, when working with .NET you need to predefine the number of cells, or elements that make up the array.

In Magic xpa, defining a .NET array is very similar to defining any other .NET object. To define an array in Magic xpa you simply add square brackets [] to the .NET Object Type. The size of the array, however, is declared by the object constructor.

Trapping Exceptions.

Error handling is essential to all forms of programming and using .NET programming in a Magic xpa application is no exception to that (pun intended). Magic xpa provides two internal functions for dealing with .NET exceptions: DNExceptionOccurred() and DNException(). By mastering the use of these functions, you will be able to trap errors and handle them appropriately.

Unfortunately, with C# beginners, exception handling becomes a nightmare. First of all, too many try to handle errors by catching non-specific exceptions, such as System.Exception, System.SystemException, and so on, in framework code. It’s meaningless. Furthermore C# programmers can make lots of mistakes by catching an exception and incorrectly specifying it when re-throwing the exception. This causes the stack trace to point to the re-throw as the error location, instead of pointing to the actual method location. The call stack of a C#.NET application is so complex that it is easy to overuse catch too early in the call stack before the error propagates up to a more meaningful position.

Using .NET Code.

In addition to working with standard .NET objects, methods and properties, there may be times when a Magic xpa developer wants to execute custom .NET code. Magic xpa allows you to write .NET Code from within your application by using the Invoke .NET operation. Magic xpa passes the .NET code to the CLR provided as part of the .NET framework. The compiler returns the compiled code back to Magic xpa and the Magic xpa studio saves the task source code. During deployment, the compiled code is passed back to the client and executed.

Enhanced .NET Capabilities

Magic xpa has many other enhanced .NET capabilities:
      Variable Binding: Enables the binding of a Magic xpa variable to a .NET control.
      Dataview Binding: Directly connects complex data-bound controls such as grid controls to the dataview definition of a Magic xpa program.
      .NET in Table: Enables placing of .NET controls as automatically repeated controls inside a Magic xpa table control.
      Colors and Fonts Assignment: Enables direct assignment of the Magic xpa colors and fonts setting to a .NET control.
      Container Controls: Enable placing of Magic xpa controls inside third-party .NET container controls.

For additional information on how an upgrade is superior to Magic to .NET conversion please convert here.