Tag Archives: WebUI Studio

Introducing the New Team Developer in Intersoft Web

Last year, we successfully redesigned our website and brought account management together in a single, authentic Intersoft experience. Today, I’m pleased to announce that we’ve completed a major milestone in our roadmap to migrate Developer Network to the main Intersoft’s website which features greater usability and latest web standards support such as HTML5 and CSS3.

Introducing the all-new, redesigned Team Developer, you can now easily manage the licenses for your developer team, create new company account for your team, assign and remove subscriptions for your team, and quickly review the summary of your licenses such as the total and occupied licenses. Now, you can also see your account and license information through mobile, so you don’t have to question on its portability. Finally, you can also delegate the Developer Manager role to someone in your team, if you prefer.

Let’s tour the new Team Developer!

Team and Licenses Management Simplified.

The all-new Team Management is now fully integrated to the Intersoft Account portal under the Team tab which can be easily enabled if you’ve purchased multiple licenses. It features an intuitive and easy-to-use interface that conforms to Intersoft’s aesthetic standards, allowing you to conveniently manage your licenses and team developers in a much streamlined interface.

With just a button click, you can easily add your developer into the team, or remove them as they’re no longer in charge. You’ll be presented with a new account dialog – now revamped with only important fields in cleaner interface, such as shown below.

Register New Developer

Once registered, the Team Management smartly detect available licenses that can be assigned to the new member. You can  now simply check the subscriptions or individual licenses, and tap the Assign button to finish. It’s that easy – see the following illustration.

Prompted to Assign license copy

Streamlined Corporate Info Management.

If you have not registered as Developer Manager, you will need to enable your account as Developer Manager and setup corporate information before you can add members to your team. Setting up the corporate information is now easy and painless – thanks to the clean, intuitive form design which now shows only relevant fields. The new corporate information screen can be seen below.

Developer Manager

As seen in the above illustration, you can delegate the developer manager role to the other registered team member if you prefer. However, once you delegated the role, you are no longer able to manage the Team Developer as you are no longer the ‘Developer Manager’.

In the last section of the page, you can now easily review the ‘License Summary’ which shows information the total licenses that you have under your team. The summary will also show the amount of available and occupied licenses. This will help you in distributing the licenses effectively among the members.

As you see above, the new Team Developer features incredibly intuitive user experience with modern look and feel. Everything is thoughtfully designed – from the icons, styles, and layout. You can easily add product or remove it by simply hover on the item in the list.

In this redesign, a lot of unnecessary and tedious steps have been removed. Our goal is to make it easy and simple for you to manage your account and licenses for your development team. I hope you loved the new Team Developer as much as we love building it.

Advertisements

Welcoming 2014 With Exciting Product Roadmap

Happy new year to you from all of us at Intersoft! Thank you for being part of the Intersoft community in 2013. Your success means everything to us. Looking ahead, the new year is ripe with possibility. At Intersoft, we resolute to serve you better with improved products and new product category that will truly save development time and cost, as well as providing you with even better, responsive support.

We’re very excited to welcome 2014 with some great product plans and roadmap that we think you will really love. However, before we get into the new year’s roadmap, let’s take a quick recap on the achievements we’ve made during the past year.

2013 Year In Review

2013 was absolutely an incredible year for us! Considered our busiest and most productive year ever, we managed to ship over 400 high quality components across 7 platforms. And for the first time ever, we expanded our product portfolio to 4 new platforms and deliver them at once in a single release. At a glance, all 2013 product plans were successfully delivered, and exceeded much more than the plans.

Here are the list of our top 8 achievements that I would like to share.

  • Shipped Crosslight — the industry’s first advanced toolset for cross-platform native mobile apps development supporting iOS, Android, Windows Phone and Windows 8
  • Delivered 400+ UI components across 7 platforms, covering desktop, RIA, web, and mobile apps development — all packed with comprehensive documentation and tons of samples
  • All 40+ ASP.NET components revamped to support latest web standards, HTML5 and CSS3
  • Released Reporting lineup for Silverlight, the industry’s first reporting tool offering end-to-end, comprehensive business reporting capabilities.
  • Redesigned websites, streamlined account and license management with single sign-on, yielding more compelling and engaging user experiences
  • Modernized Intersoft experiences leveraging balanced design aspects that takes account minimalism, content exposure, layout, identity and typography.
  • Major product rebranding with the introduction of Premier Studio, the first time in our history as we’re expanding our products portfolio into new market segments such as the cross-platform mobile development industry
  • Joined Visual Studio 2013 Launch Partner, releasing a major service pack that updates all components to support Visual Studio 2013, Internet Explorer 11 and Windows 8.1 in timely fashion

2014 Focus — Enterprise Mobile Development Made Easy

In 2014, we will be laser-focused on the cross-platform mobile development tools. Our works in 2013 is just the beginning of our holistic mobile roadmap. Building on the foundations laid in the initial Crosslight release, we’re striving to make cross-platform enterprise apps development even easier and simpler with a multitude of new features, components and services that work reliably across multiple platforms such as iOS, Android, Windows Phone 8, and Windows 8.

Our team is currently hard at work creating the next iteration of Crosslight which will make available many functionalities common to line-of-business apps development. Announcing “Crosslight 2”, we will be adding over 200 new features and dozens of new, highly reusable services to the already powerful mobile toolset.

The new Crosslight will be the industry’s first, one of its kind, that lets you create the most demanding business apps that leverage advanced capabilities such as offline data storage, pending changes management, automatic synchronization to cloud, push notifications, user authentication, social network integration and much more. And better yet, all these services can be programmed in a single codebase — not each codebase per platform. So imagine how many months you can shave off from your development time table!

Building fully functional, usable data-driven apps is really time-consuming as there are a lot of things to consider. For examples, your apps need to be “timezone aware” if you have users located in different regions and time zone. Your apps need to handle two-way time zone conversion between the local device’s timezone with the server. Adding to the complexity — data synchronization, offline storage, and data editing — all need to be thoughtfully considered and integrated for them to work in harmony, ultimately producing great apps that are beautiful inside and out. Sounds too much hassles? Fear not — we’ve got it covered!

The new data services in the upcoming release will be built with “timezone aware” enabled by default. Furthermore, it will take account the best practices of building highly scalable enterprise-class apps, and consider every little detail that you might not aware of. All you need is simply consuming the services and customize the settings with a few lines of code, and Crosslight will handle the rest behind the scene.

To summarize the Crosslight roadmap, please take a look at the following diagram which lets you easily overview and compare the existing state of Crosslight with the expanded offering in the upcoming release.

Crosslight v1

Crosslight v2 introduces over 200 new features

As seen in the diagram above, the upcoming release will be strongly focused on enterprise data services and core mobile services such as discussed above which include entity services, authentication, social network integration and push notifications. In the second release later this year, you can expect more data visualization and user interface components optimized for the mobile apps scenarios.

An important announcement with regards to our release cycle, we will be adjusting the first iteration of the release to the beginning of the year while the second one is planned for the mid of the year. We believe this schedule changes are beneficial to us, our partners and our valued customers as the releases will occur in more appropriate timing for project planning, and more ideal time to market.

This blog post only provides a high level overview of the planned mobile tools roadmap. In the near future, we will post the complete details of the mobile features as well as the roadmap for other platforms such as ASP.NET and Silverlight in our public community forum. Stay tuned for the next announcement.

Last but not least, I hope you liked our upcoming product plans and roadmap. Please feel free to drop your comments or feedback related to the roadmap, or if you wish to see something in our next milestone.

All the best,
Jimmy

ClientUI Reporting is Coming in 2013 R1

As announced in our roadmap here, we’re going to introduce new major lineup for Silverlight and WPF in the coming release. A standalone reporting product is something that we’ve been working intensively since the past year.  Designed from the ground-up, ClientUI reporting is a full-fledged XAML reporting engine which includes a powerful C# style scripting support for the most demanding business reports.

Our development team have put so much hard work on the new breed of reporting solution for Silverlight and WPF, so that it has the power and flexibility you need to produce great-looking reports. It will also feature blazing-fast rendering performance, great usability and superior user experiences.

In this blog post, I will share the high level overview of the reporting’s uniqueness and its key features.

XAML-based Report Engine

Creating a business report using Intersoft reporting tools is definitely easy. It will be very familiar for Silverlight/WPF developers and won’t spend too much effort to learn it as it’s completely defined using a XAML-like report metadata. Since the reporting XAML conforms to the Visual Studio specification, you get all the productivity features you loved, such as Intellisense, property value auto completion and more.

The following example illustrates a XAML report document.

<ReportDocument Name="Report1" xmlns="http://intersoft.reporting.com/schemas" ReportUnit="Centimeters">
	<ReportDocument.DataDefinitions>
        ...
	</ReportDocument.DataDefinitions>	
	<ReportDocument.Pages>	
		<ReportPage Name="Page1" PageHeight="29.7" PageWidth="21" Margin="1,1,1,1">
			<ReportPage.Components>				
				<HeaderBand Name="InvoiceHeader" LayoutBox="0,7.4,19,0.8">
					<HeaderBand.Components>
						<TextBlock LayoutBox="0,0,2.2,0.8" Text="Product ID" TextAlignment="Center"/>
					</HeaderBand.Components>
				</HeaderBand>

				<DataBand Name="InvoiceData" LayoutBox="0,9,19,0.8" ObjectDataSourceGuid="ab5ee58b31fd440aa34aaec8735abf29">
				...
				</DataBand>

				<FooterBand Name="InvoiceFooter" LayoutBox="0,10.6,19,0.8">
				...
				</FooterBand>			
			<ReportPage.Components>		
		</ReportPage>
	</ReportDocument.Pages>
	<ReportDocument.Styles>
        ...
	</ReportDocument.Styles>   
</ReportDocument>

The XAML report document introduces numerous great benefits, such as it support property value inheritance, an interesting feature introduced in Silverlight/WPF XAML, which enables child elements in report tree to obtain the value of a particular property from parent elements, inheriting the value as it was set in the nearest parent element. To make the report even more neat and simple, it also support style which can be shared by all of the elements inside the report.

Full Client Rendering. Datasource Agnostic.

Talking about a report solution, many developers are concerned about the datasource support. Does it support SQL Server? How about Oracle? And so on. Unlike many reporting solutions which are server-based reporting, it’s important to understand that our reporting solution fully runs on client-side, from the data source population to the pixel-identical report generation and rendering. This means there are literally no constraints on the datasource, so you can retrieve data from domain service, web service, WCF service, or virtually any kind of objects that can be serialized over the wire.

The independence to the server allows our reporting engine to perform many tasks by its own in the client-side. There are numerous great benefits associated to this design, such as faster and more responsive user experience in the client-side. And more importantly, the authored report document is truly self-contained, which means that a single report document is all you need to deploy for user consumption. And since the report is a XAML file, you can quickly deploy a report by uploading the file to the website – it’s that easy.

C# Style Scripting Engine

One of the key features of Intersoft report engine is the powerful scripting engine. Scripting is essential to any reporting solution, so we want to make sure that we have the best-of-breed scripting engine that is intuitive to developers and require minimal learning curves. The engine has to be dynamic enough to evaluate complex, multi-line syntax – not only a single line expression – to support the most demanding business report authoring.

I’m pleased to introduce our C# style scripting engine, the industry’s first report scripting engine that supports complex C# style statements and syntaxes. Moreover, you have access to full .NET library and classes, you can get or set a property of an object, or even create new objects – all within the report scripting. And the best of all, our script engine performs nearly as fast as the compiled runtime execution – thanks to the full DLR integration and expression binding implemented in our scripting engine.

The following example demonstrates the basic usage of the scripting.

<TextBlock Text="@[Invoice.ShipPostalCode + ' ' + Invoice.ShipCity + ' ' + Invoice.ShipCountry]"/>
<TextBlock Text="@[string.Format('{0:C2}', (Invoice.UnitPrice * Invoice.Quantity * (1-Invoice.Discount)))]"/>

In addition, the report engine also supports scripting in the report events which can be authored directly in the report document. This allows you to accomplish dynamic report authoring without requiring code compilation. The following example shows what you can do in the Printing event of a TextBlock using our C# style scripting engine.

// TextBlock_Printing(object sender, EventArgs e)
var totalAmount = Math.Ceiling([Order.Order_Details.Qty] * [Order.Order_Details.UnitPrice]);
var highestAmount = Math.Max(totalAmount, [AllOrderAmount]);

if (highestAmount > [Customer.CreditLimit])
{
	e.Text = "Over limit";
	sender.Foreground = Colors.Red;
}
else
{
	e.Text = "Good";
	sender.Foreground = Colors.Black;
}

Enterprise-Grade Report Viewer

Of course, the report document is useless without the viewer that can render it. In this release, ClientUI will ships a viewer that can render the report document. What makes it truly set apart is its unique capability in handling large report document without performance bottleneck, thanks to the bare-metal virtualization implementation. It employs the most advanced rendering technique that prevent application from being freezed when rendering a lot of report pages.

In general, report rendering can be done in two ways, which can be set easily through the LoadingMode property. By default, all of pages will be rendered when report is loaded. Then busy indicator will be shown, prevent the report viewer from being accessed, until report is completely rendered. This is the mode that implemented in most reporting solutions in the market.

Rendering whole report document when report is loaded

Freezing the report viewer while the report is being processed may sound just fine for reports with only a handful of pages. The main problem here is you may not have ideas how many pages that your report may eventually generate. It could be dozens of pages, or hundreds of pages, depending on the business data size. In this case, users will notice the significant slowness of the report generation, and worse, thinking that the application has crashed after waiting for minutes.

This is where our innovative background report generation comes to rescue. We invented very sophisticated techniques that allow the report generation to be done in the background, while updating the user interface without sacrificing performance. This makes the user interface truly responsive and thus translates to great user experiences. With this mode, users can view the report as soon as the first page is rendered, and scroll down as more pages are rendered in real-time. See the screenshot below.

Rendering report document on background

Not only displaying report from the supplied data, it’s also possible to display a report based on user input at run-time. Our ReportViewer has provide a mechanism to generate and display the parameter dialog based on the report document. It’s really not an easy task to create the parameter dialog that handle different parameter type for each report you have manually.

Displaying report document based on user input at run-time

As you can see in the figure above, the report viewer also implement the sophisticated viewing features already invented in ClientUI’s document viewer, such as printing, precise text selection, copy to clipboard, zooming, and searching. On the left panel, users can easily preview pages in a thumbnail form and navigate throughout the report pages. Actually the thumbnail will be rendered exactly same with the real page’s appearance. See the screenshot below.

Preview report pages in a thumbnail form

To navigate through the section in a report, you can browse it using bookmark feature in ReportViewer.

Navigate through the section in a report using bookmark

In addition, our ReportViewer also provides a mechanism to display a report list which can be retrieved through many ways, such as directories lookup, from XML file, and etc. It also can be easily customized to overcome some specific scenario.

Displaying the list of available report document

Modular and Extensible Architecture

ClientUI will ship the report engine with various built-in report controls, which generally used in most of line-of-business scenarios. Unlike other reporting solutions, Intersoft reporting engine is designed with highly modular pattern, instead of being bundled in a huge code base. You only need to include what you need, so you can maintain the solutions to be lightweight. Built with extensible capability, it’s also possible for you to add a custom report control to overcome your business specific scenarios.

That’s all for now. Hopefully this blog post gives you a high level overview of our upcoming reporting. On the next post, I will share more interesting features, the report designer parts, and much more. Thanks for reading, and stay tuned!

Regards,
Jack

New in 2013 R1: WebScheduler 4

In my previous post, I shared about numoerus powerful and rich UI components that will show up in our next 2013 release for ASP.NET. In this post, I will continue to share about the next product lineup that will get major improvements in the upcoming release. Many of you have demanded new features and improvements in our flagship WebScheduler control such as better support for daylight saving in all view types, faster rendering performance, HTML5 and support for latest browsers such as IE 10 and Firefox 20.

We’re pleased to announce that the next release will include WebScheduler 4 which is strongly focused on core scheduling features and latest browsers support. It’s noteworthy that it will also sport the new modern UI with a host of enhancements and new features inside.

Better Daylight Saving Time (DST) Support

One of most anticipated feature requests that we received is to make better support for DST in WebScheduler. Our team has been hard at work and focusing to make DST support a reality in the next WebScheduler release which takes account a vast array of scenarios. By default, WebScheduler will automatically detect the DateTime settings in the server and apply it as necessary. This means that all you need to do is upgrading your project with the new WebScheduler assemblies – and you’re all set. There’s no additional settings that need to be configured.

New Modern UI Theme

In this release, you’ll be also seeing the new Modern UI visual theme. Beyond just simple CSS styling, many of the WebScheduler UI elements were completely revamped to match the Modern user experience, such as the addition of the accent-colored element, redesigned layout, and all-new icon set that conform to the Modern user interface standards. Please see the following screenshots in below.

The New Modern Default Style

As you can see, WebScheduler now have much cleaner look – from the tabs, calendar, to every grid lines and event. You might also notice that the event doesn’t depend on the background color anymore. The resources and event are now associated with each accent color that makes the content outstanding and beautiful. Of course, the Modern design is so much more than just styling, it also requires fundamental changes to the element structure and rendering.

In the next few screenshots, you can see that all views and elements are consistently redesigned to match the Modern visual theme.

The simple, clean and elegant UI Callout

The simple, clean and elegant UI for Callout when you select an event.

Month View

The year view gives stronger focus on content – thanks to the accent color usage in the Modern visual theme.

Year View

Only DayView, WeekView and SplitView apply the accent color at the top border side. For the rest of views event, the accent color will be applied at the left border side.

Timeline View

Agenda View

Split View

The TimeLine, Agenda and SplitView are beautifully designed in the Modern theme. Notice that all elements are rendered pixel-identically for the most elegant user experiences.

Modern EdittingForm UI

Last but not least, the built-in editing form will also receive the new Modern visual theme which will surely bring the entire scheduling experience to the next level.

With this new WebScheduler among many other major product upgrades lining up in the upcoming release, we will continue to deliver the best-of-breed ASP.NET components that boost your application development time and add great values to your apps with stunning user interface and powerful functionalities.

I hope you loved what we have to offer so far, and let me know if you have any feedback or questions.

Cheers,
Handy

Coming soon in 2013 R1: New Features for ASP.NET Lineup, All-new Modern UI Themes, and more

As outlined in our 2013 product roadmap, we’re going to have very exciting new products coming up soon. There will be entirely new kind of lineups that we’ll introduce such as reporting and cross-platform native mobile development tools. On top of that, we will also be making available several major product upgrades to the ASP.NET lineup which include WebScheduler, WebTextEditor, WebEssentials, WebInput and the rest of the ASP.NET components.

All of the upgraded components will feature full HTML5 and CSS3 support. This means that – for the first time ever – our entire ASP.NET lineup have fully support HTML5. This allows you to use any combination of the components in your HTML5-powered web apps. Furthermore, we’re implementing nearly 90% of user-driven feature requests and reported issues.

In this post, I’ll share some details about the improvements and new features made available to the WebTextEditor and WebEssentials.

Improved Spell Checker and Redesigned WebTextEditor

The WebTextEditor suite is one of the products that will receive major updates in the upcoming release.  The WebTextEditor suite includes three components: text editor, spell checker and file uploader. All of them

One of the most frequently requested feature is the tighter integration between spell checker and text editor component. When integrated to text editor, the spell checker component has now supported spell checking in multiple sections. This allows users to simply press the spell checker button, and it will go through all the sections available in the text editor. See screenshot below.

Spell check for multiple sections

More importantly, all the three components in WebTextEditor now fully support HTML5. This is a significant upgrade due to the various different editing behaviors across multiple browsers – even when they run on same HTML5 doctype.

Furthermore, the next generation WebTextEditor will sport the new Modern UI design consistently throughout the entire user interface elements – from the look and feel, colors, icons, panels to the status bar and tool bars. It’s important to note that, unlike competing products, our Modern theme is not just a simple visual styling, many various elements and layout are also revamped to look best with the Modern theme. Take a closer look at the screenshot below.

All Modern UI experience for integrated controls

And here’s another shot showing the Modern theme with the enhanced Gallery task pane, context menu, dropdown button, and the rest of the input controls.

Modern UI theme across all visual elements in WebTextEditor

The same goes to the spell checker component. When used in standalone mode, the dialog box now sports Modern UI theme as well.

New DialogBox UI

All-new Modern UI Themes

In the upcoming release, WebEssentials will also receive major version upgrade. It will  join the flagship product family to fully support HTML5 that renders identically in all modern browsers today.

As Microsoft-based software shop, you may have feel the pressure from your customers to align your products’ user interface to match the latest design from Microsoft. You’re in luck – all 15+ user interface components in the WebEssentials umbrella will sport Windows 8 style (“Modern”) user experiences. Get a closer look at the WebEssentials components with the Modern theme design applied. I hope you liked them!

WebAccordion

Accordion styling based on accented color

WebRating

WebRating styling based on accented color

WebCalendar

WebCalendar Green

WebCalendar Orange

WebProgressBar

ProgressBar Green

ProgressBar Orange

WebSlider

Silder Green

Slider Orange

WebListBox

WebListBox with Modern theme

In addition to the new theme, WebListBox will include a much anticipated feature: Horizontal orientation. You will now be able to use the listbox as scrolling toolbar or navigation menu with intuitive user experiences.

Horizontal WebListBox

WebSlidingMenu

SlidingMenu Blue SlidingMenu Conversation Blue

SlidingMenu Orange SlidingMenu Conversation Orange

WebRibbon

WebRibbon with Modern theme

WebRibbon with Modern theme

Summary

In this blog post, I’ve shared some high-level details toward the upcoming release for the ASP.NET lineup. This will be a very exciting release as we’re renewing all our ASP.NET components to support the latest technology. None left behind! This means that you’ll be able to use any combination of our tools in your HTML5-based project without worrying the compatibility issues across major browsers, including recent ones such as Firefox 20 and Internet Explorer 10.

And with the all-new Modern UI design theme made available to the entire user interface components, you can align your application’s look and feel with the latest Microsoft’s user interface design, and further take your application to the next level.

In the next post, I will share the rest of our ASP.NET product family that will join the HTML5 and Modern UI revolution, including WebScheduler, WebInput, and WebTreeView. Thanks for reading, and stay tuned for the next post!

Warm Regards,
Handy

Announcing Intersoft 2013 Product Roadmap

We’ve recently completed the product planning and strategy for the rest of the 2013 fiscal year. There are a lot of new exciting direction in our product lineup which is exactly what I want to share in this blog post. Many of our roadmap will be based on your feedback – thanks for participating with our 2013 product survey. If you haven’t aware with the survey, please click here to participate and let your voice be heard.

Flashing back at a glance, 2012 was such an amazing year as we delivered hundreds of new controls to various .NET development platforms. We delivered major line-of-business controls which include a high-performance tree list, a multitude of data-aware controls such as pageable combobox, multiple selection combobox, innovative query builder; Windows 8 style navigation controls as well as the industry’s first charting suite with full MVVM and data binding support. In addition, all flagship ASP.NET components have been updated to support latest browsers, and several have been redesigned to support HTML5.  As you can see, it was really one of our most aggressive releases in our release history.

As you may have aware, all our product lineup so far (until 2012 R2) are mainly based on Microsoft’s .NET technology and strongly focused on line-of-business application development for the Web and Desktop platforms which include ASP.NET, Silverlight and WPF. To the date, we’re proud to empowering hundreds of thousands developers worldwide with an indispensible toolset that enables them to build .NET based business applications easily, quickly, and rapidly.

While the web and desktop platforms will still be around in the foreseeable future, we learnt that the software development landscape and paradigm has shifted aggressively to target mobile devices. Of course, that’s not a new story as the mobile development ecosystem has existed since the advent of iPhone and Android devices. Back at those times, most apps were targeting consumers – and there are very little needs or demands in the business or enterprise spaces for mobile apps. However, based on our extensive research and development since the past year, and based on the demands from our enterprise customers, we’ve seen the light shed on the mobile world. Read on.

Enter the Mobile World

At Intersoft, our ultimate mission is to create incredibly powerful and easy-to-use tools that enable rapid business application development. From ASP.NET, Silverlight to WPF – we’ve accomplished our mission very well. This year, we will continue our development journey to the other side of the world – the mobile development world. I’m very excited to announce that the mobile tools development will now become our priority and we’re committed to deliver successful mobile tools – just as we’ve successfully delivered hundreds of ASP.NET, Silverlight and WPF tools.

Why entering the mobile development world, you might ask. There are a number of reasons why we finally decided to jump into the mobile bandwagon, but I’ll try to keep my answer simple: because it’s the future of computing. Sure, people will continue to use their PC at home (as in Gates vision “One PC at every home’s desk”), but today people no longer spent most of their time on the PC – thanks (or blame) to the powerful ARM-based mobile devices that allows you to do many productivity tasks on the go.

The same paradigm has now entered the small and medium business as well as larger enterprises. Ask yourself this question, why would you need a PC on your office desk if you can login to your corporate network and check your sales reports, signing documents, review executive dashboards and many more – all with the small mobile device in your hand? Furthermore, with low-cost and affordable mobile devices today, businesses have started to reveal the benefits and advantages of mobile over PC such as reduced TCO and maximized employees productivity. As businesses increase their interest and demands on mobile, that will mean one thing in the end: increased demands on business mobile application development

Ultimately, that will simply mean one thing to you: get yourself ready for mobile development. And to us: get ready to deliver mobile tools for rapid business apps development.

Mobile Development Challenges

As a third party .NET vendor, it makes sense to choose the easiest and closest route to enter the mobile development, and that would be definitely the Windows Phone or WinRT since both are still based on .NET platform. The main problem, however, is the relatively slow adoption rate which makes it less appealing on the business side. This is understandable because enterprises cannot control what mobile devices their employees and consumers use. Most requirements that we heard from our enterprise clients will be to support at least two of the most owned mobile devices. Needless to say, that will definitely fall to iOS and Android based devices. As we see it, one of the biggest challenges here is multiple mobile platforms support, just like multiple browsers support in the Web development.

Obviously, we all loved .NET and C# which has been our mother language for decades. And also to the Silverlight and the great MVVM pattern that allow us to layer our applications in a way that enables truly scalable and extensible architecture. As you discover the mobile development, you will find horrible platform divergences and unfortunately none of your favorite skills are applicable in these mobile native platforms, for examples, iOS uses Objective-C while Android uses Java. Alternatively, you may want to resort to HTML5 – only if your users afford mediocre and compromised user experiences.

If you’re Silverlight or WPF developers, you may feel – at a glance – reaching the bottom of your career. You might be unfamiliar with Objective-C or Java, yet you hated JavaScript. It’s a rather difficult choice – go learn Objective-C, Java and WinRT; or anxiously waiting for new clients wanting to build Silverlight apps. None of these choices sound appealing.

But wait a second, what if it’s possible to write native iOS and Android apps leveraging exactly the same .NET skillset that you already accustomed to? And takes it even further, what if you can build iOS and Android apps using your favorite Silverlight-style data binding and MVVM pattern? That would be too good to be true, you might think. If such “possibility” exists, that will not only save your careers and make your development life a lot easier, but more importantly, it opens up a whole new opportunities to explore and a lot of potential business apps that you can contribute for the world.

Frankly speaking, we’ve been extensively researching to look for that “possibility” in the past years. We were silent and seemingly have no progress whatsoever when it comes to mobile. That’s because we want to ensure everything before we gave you that shed of light, the news of the existence of that “possibility”. We’re almost there, read on.

Introducing Crosslight

So here we are. I’m honored to be the first to announce our mobile tool project codename “Crosslight”. Yup, Crosslight. As if it’s the reborn of Silverlight, Crosslight enables you to use the same Silverlight and MVVM skillset to create cross-platform mobile applications. And so that’s how the name was coined. I tend to think the philosophy this way “The light to the cross-platform mobile development”.

If you’ve developed MVVM-based Silverlight apps using our ClientUI library, you’ll find pretty much the same thing in Crosslight. You’ll find delegate command, event aggregator, IoC container, and everything you loved about MVVM such as ViewModel, and converter. So far, we’ve managed to revive many of the data binding capabilities found in Silverlight such as two-way data binding, converter, nested property path binding, collection binding, item templating and more – and we have recreated all those capabilities to both iOS and Android platforms.

At the end, you’ll be able to create business apps that are not only targeting iOS and Android, but also targeting Windows Phone 8 and WinRT. I hope you’ve got it clear at this point, Crosslight is all about modern mobile development, from iOS, Android, to Windows Phone 8 and WinRT. Along the way, we will be also introducing our new technology partner who provides non Microsoft implementation of .NET that makes Crosslight a reality. Stay tuned for the upcoming announcement.

We believe that the best and the right direction for the mobile development is to build mobile apps using the native SDK of each platform – instead of hybrid HTML5 apps. Now that you can build amazing mobile apps with C# and MVVM, there are no reasons for not building one with native SDK which offers the best, uncompromised user experiences.

Soon – hopefully before the end of March – you’ll be able to beta testing Crosslight and start building your first cross-platform, MVVM-based mobile business apps.

Silverlight, WPF, ASP.NET and HTML5

Now that we’re going to have Crosslight, what’s going to happen to Silverlight and the rest of .NET platforms? Needless to worry, we’re highly committed to the existing platforms who make the most of our customer base. We will continue to make new best-of-breed components for Silverlight and WPF – particularly the new Reporting lineup which has been in development since last year. This reporting lineup is huge and noteworthy – because we’ll bring in new technologies that weren’t possible previously. That’s mainly because most reporting players in the market didn’t build their Silverlight/WPF reporting product from the scratch, but simply porting from .NET 2.x based which used old and outdated techniques.

On the ASP.NET lineup, this year we will have major upgrades to all our ASP.NET components. And when we say “all”, we really mean it. This simply means that all ASP.NET components will be redesigned to support HTML5 and CSS3, including WebEssentials, WebInput, and WebTreeView. Also expect new version of WebScheduler with improved day light saving and time zone support, as well as new version of WebTextEditor with IE10 support and much more.

Wrapping up

At this point, you can see for yourself that 2013 is going to be a very exciting year for all of us. The new Crosslight, and new tools across Silverlight, WPF and ASP.NET will keep us busy enough throughout the year. In the upcoming 2013 R1 release, we will be the first vendor to offer toolset with the broadest platforms support– ASP.NET, Silverlight, WPF, iOS, Android, Windows Phone and WinRT.

This is probably the longest product roadmap blog that I’ve ever wrote so far. But I hope you enjoy reading and learning our roadmap, and hopefully it gives you insights about our direction, where we will spend our time and effort the most, and what you will receive as part of your on-going annual subscriptions. So the next thing that you should do is checking your account and make sure your Premier subscriptions are up-to-date for the rest of the year.

To find out more details about our 2013 roadmap, please logon to Intersoft Developer Network using your Intersoft ID to read the complete details about the upcoming products as well as the release schedules. After logged on, bring up the Home window, then click on the link in the Announcement section to open the product roadmap window.

For prospect customers who are interested in our 2013 roadmap, please send your email to sales@intersoftpt.com to request a copy. We’ll send you a copy of NDA to be signed in order to receive the roadmap details.

Best,
Jimmy

WebFileUploader: Store Uploaded Files in Database

Last year I posted an article which showed how to store the files which are uploaded using UXFileUpload (ClientUI control for Silverlight and WPF) in database. In this article, I will show a similar scenario which can be done using WebFileUploader, a member of Intersoft Solutions ASP.NET controls.

WebFileUploader is an easy to use; high performance and advanced file upload component which allows you to upload multiple files without page refresh. WebFileUploader uses 100% HTML technology for all its features, and fully supports all modern browsers including Firefox, Safari, Chrome and Opera. Using 100% HTML technology means that WebFileUploader doesn’t require Flash plug-in to support multiple files uploading and many other features.

This scenario, to store the uploaded files in database, can be divided to two parts. The first part is to configure WebFileUploader for IIS application; and the other part, using server-side code to process uploaded files and store them into database.

To configure WebFileUploader for IIS application

Some configuration is needed in the web.config to run WebFileUploader in IIS. The list below shows how to configure WebFileUploader for IIS 7 application.

  1. By default, ASP.NET application restricts maximum request length to 4 MB. To enable our application to accept larger files, please configure the maxRequestLength in web.config to higher value. The maxRequestLength value is measured in kilobytes. Here is a snippet to increase your file size to 100MB.
    <configuration>
      <system.web>
        <httpRuntime maxRequestLength="102400" />
      </system.web>
    </configuration>
  2. Add WebFileUploader handler to <handlers> section under <system.webServer>. Here is the snippet.
    <add name="WebFileUploaderHttpHandler" verb="GET"
      path="WebFileUploaderHttpHandler.axd"
      type="ISNet.WebUI.WebTextEditor.WebFileUploaderHttpHandler, ISNet.WebUI.WebTextEditor"
      preCondition="integratedMode" />
  3. Add WebFileUploader module to <modules> section under <system.webServer> in our project web.config. Here is the snippet.
    <add name="WebFileUploaderHttpModule" preCondition="managedHandler"
      type="ISNet.WebUI.WebTextEditor.WebFileUploaderHttpModule, ISNet.WebUI.WebTextEditor" />
  4. Set maxAllowedContentLength to a higher value, which is measured in bytes, to 100MB in web.config. This attribute specifies the maximum length of content in a request. The default value is 30000000, which is approximately 28.6 MB.
    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="104857600" />
        </requestFiltering>
      </security>
    </system.webServer>
  5. Unlock the mode override in applicationHost.config. Open IIS 7 application configuration file, the default location is in C:\windows\system32\inetsrv\config, and change the overrideModeDefault to Allow.
    <section name="requestFiltering" overrideModeDefault="Allow" />

Save the changes and then try to upload a file. If WebFileUploader has been successfully uploaded the file to the designated folder, it means that we are on half way to achieve the goal and ready to proceed to the next step.

Using server-side code to process uploaded files and store them into database

A database, called Files.mdf, is added into the App_Data folder of the web project. This database has Files table which consists of following fields.

Column Name Data Type Allow Nulls
Id uniqueidentifier False
FileData varbinary(MAX) True
OriginalName nvarchar(50) False
DateCreated datetime False

A Stored Procedure, sprocFilesInsertSingleItem, will be used to insert a single item of file into Files.mdf database.

INSERT INTO Files
(
	Id,
	FileUrl,
	FileData,
	OriginalName
)
VALUES
(
	@id,
	@FileUrl,
	@FileData,
	@originalName
)

Next, we are going to use the OnAfterUpload server-side event of WebFileUploader. It is the server-side event which fired when a file upload is succeeded. Generally, there are three processes to be performed on this event.

  • Read and manipulate the uploaded file using FileStream class.
  • Invoke and execute sprocFilesInsertSingleItem stored procedure to store the uploaded file on Files.mdf database.
  • Delete the specified file from the UploadPath folder.
protected void WebFileUploader1_AfterUpload(object sender, ISNet.WebUI.WebTextEditor.WebFileUploaderFileEventArgs e)
{
    byte[] fileData = ReadFile(e.WebFileUploadInfo.Path + "\\" + e.WebFileUploadInfo.FileName);
    string originalName = e.WebFileUploadInfo.FileName;

    using (SqlConnection mySqlConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Files.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"))
    {
        // Set up the Command object
        SqlCommand myCommand = new SqlCommand("sprocFilesInsertSingleItem", mySqlConnection);
        myCommand.CommandType = CommandType.StoredProcedure;

        // Set up the ID parameter
        SqlParameter prmId = new SqlParameter("@id", SqlDbType.UniqueIdentifier);

        Guid id = Guid.NewGuid();
        prmId.Value = id;
        myCommand.Parameters.Add(prmId);

        // Set up the FileUrl parameter
        SqlParameter prmFileUrl = new SqlParameter("@fileUrl", SqlDbType.NVarChar, 255);

        prmFileUrl.Value = DBNull.Value;
        myCommand.Parameters.Add(prmFileUrl);

        // Set up the FileData parameter
        SqlParameter prmFileData = new SqlParameter("@fileData ", SqlDbType.VarBinary);

        prmFileData.Value = fileData;
        prmFileData.Size = fileData.Length;
        myCommand.Parameters.Add(prmFileData);

        // Set up the OriginalName parameter
        SqlParameter prmOriginalName = new SqlParameter("@originalName", SqlDbType.NVarChar, 50);
        prmOriginalName.Value = e.WebFileUploadInfo.FileName;
        myCommand.Parameters.Add(prmOriginalName);

        // Execute the command, and clean up.
        mySqlConnection.Open();
        bool result = myCommand.ExecuteNonQuery() > 0;
        mySqlConnection.Close();
    }

    File.Delete(e.WebFileUploadInfo.Path + "\\" + e.WebFileUploadInfo.FileName);
}

private static byte[] ReadFile(string filePath)
{
    byte[] buffer;
    FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

    try
    {
        int length = (int)fileStream.Length; // get file length
        buffer = new byte[length];           // create buffer
        int count;                           // actual number of bytes read
        int sum = 0;                         // total number of bytes read

        // read until Read method returns 0 (end of the stream has been reached)
        while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
        {
            sum += count; // sum is a buffer offset for next reading
        }
    }
    finally
    {
        fileStream.Close();
    }

    return buffer;
}

That’s it! Now the files uploaded by WebFileUploader control will be stored in database. It’s pretty easy and straightforward, don’t you think so?

WebFileUploader

Click here to download the sample and feel free to drop me a line in the comment box if you find this post useful.