I'm porting a Windows Phone 7 app to work for Windows 8 (and take advantage of the new form factors available).
There appears to be a handy namespace map for a lot of the namespaces, and there are some that are explicitly called out as not avaialbe, but there appears to be no mention of LINQ-to-SQL - is this an omission in the documentation, or is it not available in metro style applications?
LINQ-to-SQL and LINQ-to-Entities are not available in Metro-style apps. Metro-style apps are meant to be lightweight apps which can retrieve data from web services (generally running in the cloud).
Thus, ADO.NET and the entire System.Data namespace is not supported.
Mention was made in the Windows Phone Summit on Wednesday that SQLLite would be available on WP8 and Win8, but no details as to the programming API's were shared yet. Currently the Metro subset of .Net for WinRT applications does not include a database API set. There are some independant efforts to port some of the no-sql based implementations, including RhynoDB and Sterling, so you may want to keep your ears open to further announcements.
Related
Recently I began working in WinRT for Windows Store Apps (and the upcoming Windows 10 Universal Apps) using C#. After working in .NET for awhile previously, I was excited to work with .NET on mobile devices, only to find that WinRT did not feel like home at all.
Constantly I find myself having to search for alternatives to certain classes that I'm familiar with in .NET since often they're not the same or even implemented in WinRT. I figure that the lack of implementation derives from the fact that WinRT at its core is unmanaged, even though the CLR binds to it from managed code.
My question is: What is stopping Microsoft from allowing developers to import and use all of the familiar .NET classes from managed code, even with WinRT running from behind? I know it's not a limitation of the device because my Surface Pro can run desktop .NET apps just fine and the Mono project has succeeded in porting almost the entire .NET API to devices of every kind.
Thanks for your input!
This is a big topic but there are three basic reasons why you don't get the full .NET API from a Windows Store app.
The APIs don't fit on smaller devices like phones. Since the purpose of the Universal Windows Platform is to have apps that can run everywhere, it can't include APIs that are too resource-intensive (disk, memory, CPU, etc.) to run on smaller devices. (Note that even if the managed API appears to be small, it might have a dependency on a large underlying Win32 API).
The APIs aren't compatible with the Store app model. Many APIs that require permissions not granted to Store apps fall into this category, as do APIs that would enable apps to do "unwanted" things to your machine (the degree of "unwantedness" is subjective).
The APIs are deprecated or there are newer alternatives. This was the case with a lot of APIs in Windows 8, where things like file-system access and network sockets were blocked from Store apps because there were newer WinRT equivalents.
Note that Microsoft is always open to re-evaluating whether a specific API should be included or not. For example, Windows 10 brings back many APIs that were banned from Windows 8.1 (such as System.IO and System.Net.Sockets) and has expanded the capabilities granted to apps. You can file feedback via the Windows Feedback app or on UserVoice if you want additional APIs brought back (adding detailed justification never hurts).
I am a C# windows developer. I recently started to work with WinJS. Working with WinJS, I have noticed some challenges and limitations. Can face some new challenges as the community support for WinJS is very less. Below are the few points mentioned regarding this concern
a. WinJS does not support Visual Studio features like Finding References of Classes and Variables which is very useful to code productively.
b. WinJS is not strongly typed as C#. So we will get to know about the errors at runtime only instead of compile time which is difficult to Debug and time taking process.
c. WinJS does not support feature “What you see is what you get”. Visual Studio designer is not available for WinJS. We can see the application design only after we run the application which is again time taking thing.
There are very less chances of availability of “Ready to Work on WinJS” resources. Because most of the developers in Windows community work on C#, XAML languages.
d. Direct compatibility of third party libraries for WinJS might not be available.
Have anybody experience in WinJS and faced similar issues? Or Are there any solutions exists for this? What is the scope of improvement in Windows 10 version for WinJS??
For an HTML/CSS/JS designer, that's what Blend for Visual Studio is for. Load the project into Blend and you'll get a designer that also works when you're running the app. Documentation for this is on https://msdn.microsoft.com/en-us/library/jj129478.aspx, and there's a great video from //build 2013 that shows the flow, http://channel9.msdn.com/Events/Build/2013/2-311. I also cover using Blend to some extent in my free ebook, Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition.
https://dev.windows.com/en-us/develop/winjs
see this link it give the solution your problem which is given below
a. WinJS does not support Visual Studio features like Finding References of Classes and Variables which is very useful to code productively.
b. WinJS is not strongly typed as C#. So we will get to know about the errors at runtime only instead of compile time which is difficult to Debug and time taking process.
c. WinJS does not support feature “What you see is what you get”. Visual Studio designer is not available for WinJS. We can see the application design only after we run the application which is again time taking thing.
I am embarking on my first windows phone app. I noticed there are two templates one is in Javascript (Blank App (Universal Apps)) and the other in C# (XAML) again Blank App (Universal Apps). Which one should I use, I know it depends a lot on the project context, but basically its just a simple phone app, that reads and displays data, mostly crud operations. Any help is appreciated.
I think there are a lot of resources in the internet regarding this question.
For example:
http://www.itwriting.com/blog/8350-xaml-and-c-or-html-and-winjs-for-windows-store-universal-and-cross-platform-apps.html
http://www.neowin.net/news/microsoft-likes-winjs-for-making-windows-8-apps-but-most-developers-prefer-xaml
https://softwareengineering.stackexchange.com/questions/156361/advantages-and-disadvantages-to-using-xaml-c-or-html5-javascipt-for-metro-apps
If you have a C#/.NET background, choose XAML - if you have a web background, choose WinJS...
I think that XAML is more popular than WinJS (especially for Windows Phone).
Here's my take to add to the list--http://www.kraigbrockschmidt.com/2013/01/17/html-javascript-xaml-directx-language-windows-store-app/ . In my partner-facing role at Microsoft I got this question quite a bit, and it really boils down to personal preference and experience unless you run into a place where the languages don't quite have parity at present. Parity was more of an issue in Windows 8, many areas were resolved for Windows 8.1. (Parity is more a matter between Windows/Windows Phone now rather than between the languages.)
Personally, being the author of Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition (free ebook, Microsoft Press, 2014), I like the JS approach very much because you can leverage standards. On the downside, JS code is the least secure of all the options (see this blog post of mine), which might be a make-or-break consideration.
Is it possible to push windows 8 app directly to some not development-devices (without direct access to device)? For example, if one wants to install demo version of our app during the exhibition on devices of someone who intersted on our product.
First of all, the application deployment bypassing the Windows Store is called sideloading.
One basically has two options to perform sideloading:
Windows 8 Pro and Windows Server 8, if they are joined to a domain, are directly ready for side-loading.
Windows 8 and Windows 8 RT, as well as the above-mentioned systems without domain, require the activation of a special Sideloading key, which can be purchased by enterprises only and usually available in 100 packs (priced at $3000 per pack, $30 per licence).
The installation of the app can be done either by using the application image and DISM or in runtime by add-appxpackage PowerShell CmdLet.
Here is a good explanation of the whole process (in German).
No, it would not be practical at an exhibition to provide direct loading of your application, bypassing the Windows Store. The Windows Store is there to provide a safe environment in which to download certified applications.
It would be a far better experience if users could download from the Windows Store a trial version directly -- maybe you could provide free a wifi/network connection, and a bit.ly link or QR code of some sort to quickly get to the download for your application. :)
While it is possible to do side-loading (walkthrough) in some circumstances, it was not intended to be used in this case. It's intended for Enterprise deployment and the walkthrough article has lots of details about the specific options and the costs associated if the destination machines/Windows isn't running Windows 8+ Enterprise edition.
One other option is that you can also deploy an application for testing purposes to another developer machine (which requires a Windows 8 developer license). It would be unusual for anyone but a Windows 8 application developer to have this activated (as you know, they expire after 30 days). This may be a violation of the licensing agreement though as it is expected that this is for development purposes only. It also involves powershell, so it would be a potentially awkward installation experience at an exhibition.
It is possible dude...
Just developer unlock ur phone and deploy apps directly from PC.
We are looking at building a GUI application having the following attributes -
* approx 100 screens
* approx 200 users
* interfaces with 8 different legacy applications (protocols tbd but we are assuming web services will be exposed)
* has a separate data store for storing authentication and authorisation info along with few other information.
We are trying to avoid spending any money on procurement of physical servers, application servers etc.So we thought instead of building a web application , we could develop a standalone GUI based application that could be deployed on users' desktops considering that the users are less and the access to this application is confined to our organisation.
We were thinking of Java Swing as one of the options to consider. Is it a good choice? Please advice on the other options that we need to think about. We thought MS products would involving licensing costs to buy the product hence we are looking at developing the application using some free software tools.
Thanks a lot!
Regards,
V
I really like Swing and have written many applications with it, but I'm not sure the argument that you will get a cheaper solution because you have to procure less physical servers is a good reason for it.
There are other ways to use computational capacity on the client side. For example you could use SmartGWT. With a browser based solution you get easy deployment and have no problems with client-server communications (i.e. no proxy hell). It's possible to get all of this solved with a standalone GUI, but it requires experience and time (== money).
I think a standalone GUI is a good idea if you need a "rich" user experience and tight integration with the native environment. Web apps are generally less snappy and not so well integrated. If it's just about editing data on a server, the standalone GUI does not really have any advantages.
I won't rehash what we talked about in the comments. It seems you are focused on java gui solutions. With that said there are alternatives for developing gui applications with free tools. Just to name a couple, you could develop your client with Adobe Flex or Adobe Air, use python, php or ruby and GTK, or develop a windows GUI app using c# if your target os is windows. Similar to Air, Microsoft Silverlight is an option. Java is not the only solution.
Many Java gui apps are written using swing. The major competitor to Swing has long been SWT which is used for eclipse and by IBM. Javafx is a newer/alternative platform Sun/Oracle is behind, you should also look at. To be complete, you should also take a look at qt jambi that lets you develop in java against the Qt framework.