Local database storage for WinRT/Metro applications [closed] - database

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am trying to find an API within WinRT that will allow me to create a local database that can be used to store data for an occasionally connected application. I am looking for something like SQL Compact Edition.
I have seen various messages on various boards indicating that there either
(a) will be no local databases whatsoever
(b) no local "server" databases (i.e. SQL Express type instances)
(c) A local database code named "Jet Blue".
Does anybody have a definitive answer to this? I do not want to start down this road if it is blocked.

SQLite is now officially supported. See Tim Heuer's blog for details. For simpler solution with less data you can use http://winrtdatabase.codeplex.com/

You might want to have a look at SQLite3-WinRT, a wrapper for SQLite that we wrote to use it in a Metro-style application. It contains a version of SQLite that uses only WinRT-compatible API, and a WinRT component to use it in C# and JavaScript apps.

There is no SQL CE available for Metro.
a) will be no local databases whatsoever
This is not true. SQLite should be able to run on WinRT. You can download the code here and include the two main files into your WinRT project. To compile and pass certification you will need to make sure you are using the correct WinRT replacement calls for the Win32 calls that are not supported. The 3rd party solution Bob mentioned is a WinRT wrapper it doesn't include changes to SQLite to pass certification.
(b) no local "server" databases (i.e. SQL Express type instances)
It seems unlikely there will be SQL Express for metro.
(c) A local database code named "Jet Blue".
If you mean Microsoft Jet Database engine, yes that seems to be supported but I would rather use SQLite.
Also remember if you are using HTML/JS you have the option of using IndexedDB

There is no (built in) database according to this
http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-930C

There are 3rd party solutions coming out or are already out. CodePlex has one -- http://sqlwinrt.codeplex.com/
The other option, which requires some work on your part, is to proxy your database access through a web service.

Do you really need a "store data for an occasionally connected application"? This sounds a little overkill to me. Why not serialize the data (various options) to storage yourself?

Related

What is a more modern .NET library to use with Active Directory than System.DirectoryServices.AccountManagement?

We are looking to update our .NET C# codebase with a more modern library to use with Active Directory than System.DirectoryServices.AccountManagement. Anything newer is preferred, but we are specifically looking for a library that works well with data on our servers and in the cloud (as we migrate there).
How much more current do you want? https://www.nuget.org/packages/System.DirectoryServices.AccountManagement/ was last updated 6mo ago. It works in .net6 and core, and I'm currently working on a web app that uses it. I would say that at least from Microsoft this is the latest that there is, outside of System.DirectoryServices, which was also updated 6mo ago.

Local storage of structured data in Win8 Metro-style apps [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
In a desktop .NET application, the standard option for implementing a local relational database is to use SQL Server Compact Edition, and then of course there is the possibility to use SQLite and other third-party engines.
What are the options available to a .NET Metro-style application? SQL CE seems to be unavailable - any replacement? In fact, the entire System.Data namespace seems to be gone - so no LINQ to SQL or Entity Framework, either?
What about HTML5 IndexedDB that seems to be available to Metro HTML/JS apps - can that be used from .NET somehow?
Apparently, the Extensible Storage Engine Win32 API (aka "JET Blue") is still available in Metro apps. C++ ones can use it directly via #include <esent.h>. .NET apps would have to use P/Invoke. This does not give SQL or any other sort of high-level relational querying constructs, but it does provide for key lookup, transactions, multiple indices per table, and multi-field indices.
Let's be clear: SQL CE exists in Windows 8. It exists not only in Program Files but in Windows\System32 to seem even more embedded than before. Windows7 doesn't have sqlcecompact40.dll in system32 so this is definitely new. System.Data and System.Data.Linq both live in C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.
You can add references to those dlls manually but getting the app to compile is hit or miss. It seems that if you first open your project and do nothing, you can add a reference to those dlls anywhere and compile the app. If you remove the dlls and try to add them back you're hit with a "A reference to '<4.5 framework directory>' could not be added. If by some chance you can't add them via Visual Studio you can easily just add the HintPath manually.
My app now compiles but I also ran into an issue where linking the AppX wasn't working correctly and it gave a cryptic "Payload cannot contain 2 of the same dll" type messages. Like it was trying to include both 32 bit (the one I linked) and 64bit at the last minute. It included DLLs I wasn't touching manually like System.Data.OracleClient or System.Transactions so it was definitely some artifact from the build process I've yet to see again.
The main issue I'm dealing with right now is how to generate a proper connection string since it won't initialize properly without one. SQL CE is likely still looking for hardcoded C:\ references so the ApplicationData samples may not work as desired. I may try to make SQL CE 4 databases in Win7, transfer to Win8 and simply reference them locally but I'm kind of in the same boat there too. This | | close!
Please feel free to comment regarding any issues you run into and I'm definitely down for some offline collaboration if anyone would like to pool resources. This is definitely a thick forest of beasts and going it alone is proving a lot more challenging.

Alternative for Access+SQL Server for enterprise projects

We're a small software company, developing projects for manufacturing facilities about analysis, traceability, reporting etc. We're using Access for front end, SQL Server for back end. We've quite big customers too and our company is growing. So far it is working fine but I wonder should we move to more influential technologies, such as web based solutions. What do you think about the future of Access?
Well, keep in mind that Access now has a web option. This option works with SharePoint and the new upcoming office 365. Here is a video of an Access application and note how at the half way point I switch to running the application 100% in a web browser. No ActiveX or Silverlight is required. I even tested and run the application on my iPad.
Video here:
http://www.youtube.com/watch?v=AU4mH0jPntI
And Access 2010 also has baked in support for the Azure (cloud) edition of SQL server.
So, we have web based options, cloud based options, and there been significant investments into Access for 2010.
You could have a look at these questions:
MS Access as Enterprise Software?
and
What are the appropriate uses for MS Access?
Here we have a central SQL Server database, with both an MS-Access and a Web client interface. MS-Access is history (we started it 5 years ago) and Web is trendy (less than one year old). I must admit that MS Access is still very very efficient and cheap, once you have resolved some MS access specific problems, to which you might find answers here:
Working with multiple programmers on MS Access
How do you use version control with Access development?
Best way to test a MS Access application?
MS-Access, VBA and error handling
You can always use VB.NET Express. It's free, and Microsoft's licensing should still allow you to sell apps created with it (they did with Express 2005).
UPDATE: Access 2013 has better support for web apps than previous versions, and the apps use SQL Server or SQL Azure under the hood by default. So be sure to thoroughly evaluate the latest version of Access before concluding that you need something else.
A very good alternative to Access with similar features is Lightswitch. Here's a quote from MSDN:
Visual Studio LightSwitch is a development environment designed to simplify and shorten the development of businesses applications and data services. LightSwitch makes it easy to create data-centric business applications that can consume a variety of data sources and create clients that can run on a variety of devices.
While Access now has a web option as #AlbertDKallal mentioned (and which is still worth considering as one option), creating an HTML 5 app is the whole focus of Lightswitch. (Note: the original version of Lightswitch required Silverlight, but the newer versions create HTML5 apps that don't require any plugins.) The app will also be more extensible, since it's a .NET app, and for things that require custom programming you can program in C# or Visual Basic rather than VBA.
I should mention at this point that I haven't actually tried Lightswitch yet (!) - I'm currently evaluating it and these are the features that look attractive to me compared to Access. If anyone reading this in the future is curious about what my experience with it was like, feel free to write a comment to remind me.
For some introductory info, see these links:
Showcase Video
Is Visual Studio LightSwitch the New Access?
(Note that this article is about a the original version of LightSwitch, not the latest version.)
And...for a completely different cloud-based option, check out:
https://www.parasql.com/

Deployment: GWT vs. Silverlight [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I'm in the early planning phase for a project and determining whether to use Silverlight or the Google Web Toolkit (GWT). There are obviously a lot of things to consider, but this question is specifically concerning deployment.
This application is intended for intranets; i.e. it is not a hosted website and is intended to be deployed at a customer's site. The target company size is small, so most would likely prefer to run on their pre-existing servers. The intent is not to sell the code base along with the application, so code security is a concern.
Given that:
Which is easiest to deploy?
Which is better for code security?
Which is better suited for deployment to the majority of small servers?
Both will work.
Both can be secured.
Neither place a heavy load on servers.
Use what makes more sense to the user. If I were using in Intranet application, I would probably want something that doesn't require me to download anything and runs smoothly in the browser. That makes me lean towards using the Google Web Toolkit (as long as you're comfortable with coding in Java).
If you think your users will be able to and ok with downloading Silverlight and you're a MS developer, go for it. The only downside is that your users have to download and install a runtime AND you might be using more internal bandwidth.
It mainly depends on what technologies you are familiar with. If you are a .Net shop, it just makes so much sense. Silverlight is compiled to XAP and is deployed on windows servers. Make sure you register the file extension of XAP in IIS. A XAP file is a Silverlight package that contains everything you need to deploy your Silverlight application, including the application manifest, the project assembly, and any other assemblies that your application uses
A major side effect of the Silverlight compilation model is the IL code can be easily decompiled or reverse engineered, Hence it is not an an appropriate place to store encryption keys, algorithms that are proprietary etc. If there is such needs, then design a web service that is on the server side. you can also try using obfuscation.
I would agree with what you are familiar with. Ask yourself, "What IDE am I best at?";
"What language do I know best, VB, C++, J#, C#, Java, ASP, JSP?".
What I know about either library would not give you much help but I have used them both.(just playing with samples).
I do know that GWT will take java classes and create a nocache.js file that your web page uses. I have not tried GWT with Silverlight although I did see this on the way here:
http://www.ongwt.com/post/2007/12/08/GWT-will-support-Silverlight
Is caching an issue? What classes does you system already support?
Both technologies are of an AJAX base. MS does it for Windows servers. Others use Open Source servers. What do use?

Are there any PDA or Outlook Synch Frameworks out there? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
We have a web application that deals with some common sales entities (Contacts, Appointments, Addresses, Notes etc..). We need to keep our app, outlook, and potentially any devices that they might have synchronized.
Are there any frameworks that we can use that help us integrate with PDAs? Any thoughts or reccomendations are appreciated. Thanks.
I think that the SyncML article on Wikipedia would be a good start.
Funambol has clients for multiple platforms and the core project is free and open source.
Plaxo.com has customized a funambol Windows Mobile clients for their customers.
I would look at Microsoft Sync Framework. Whitch has many "providers" both some included, some open source, some 3rd part. A provider is a like a standardized "connection" to a datasource, like outlook mail, outlook contacts, file system, database or whatever you can imagine. Or as Microsoft says:
Microsoft Sync Framework is a
comprehensive synchronization platform
that enables collaboration and offline
access for applications, services and
devices. It features technologies and
tools that enable roaming, sharing,
and taking data offline. Using
Microsoft Sync Framework, developers
can build sync ecosystems that
integrate any application, with any
data from any store using any protocol
over any network.
A key aspect of the Microsoft Sync
Framework is the ability to create
custom synchronization providers. A
provider is a software component that
represents a replica for
synchronization. A replica is a
particular repository of information
to be synchronized, such as a file
system on a handheld device. When
representing a data source, a provider
enumerates changes from its replica.
When representing a destination, a
provider applies changes to its
replica. If the data at the source and
destination differ in type or schema,
each provider performs any necessary
mapping or transformation.
Microsoft Sync Framework home page:
http://msdn.microsoft.com/en-us/sync/default.aspx
Introduction:
http://msdn.microsoft.com/en-us/sync/bb821992.aspx
Contact Synchronization Sample - Outlook Sync
This sample shows how custom providers can be created to synchronize content between disparate data sources. In this sample we will synchronize Contacts between Microsoft Outlook, Vista Contacts and VCard files. A key aspect of this demo is the data mapping capabilities which enables disparate data sources and data types to be mapped appropriately through the Sync Framework:
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=613
Microsoft Sync Framework v1.0 CTP1 - Devices
Managed (.NET Compact Framework) and unmanaged/native (ARM)
Supported platforms are Windows Mobile 5 and 6 (ARM processors only in CTP1)
http://www.microsoft.com/downloads/details.aspx?FamilyID=a7c01a89-9af8-4eee-ab04-6a3ad098a03f&DisplayLang=en
I've done this with the Microsoft .NET Compact Framework and had excellent results. SQLCE can provide local storage on the PDA. Syncing can be performed either with custom code over web services or using something like SQL Server Replication.
Another strategy would be to design a second web portal with a UI that is specifically targeting mobile devices with small screens. Smart phone-based users could access the mobile portal with any web browser. This might be the most cost effecive solution.

Resources