Windows Phone 7 Data Persistence - windows-phone-7

I'm would like some advice on the best data persistence solution to use for an application that will run on the desktop (WPF) and on Windows Phone 7, sharing data between both applications. Ideally I would like to use the Entity Framework. I have considered the following technologies:
Sync Framework 4.0 - only CTP at the moment but has the big advantage of offline use. However it is an immature framework that does not allow me to use Entity Framework and seems not to be very mainstream, requiring a fair bit of a learning curve to get working.
WCF Data Service - has the advantage of allowing me to use Entity Framework. However there seems like a bit of a lag when retrieving data and off-line use is a problem.
SQL CE with syncing to centrally hosted database using Sync Framework 2.1 - will work for my WPF application but not sure about the phone.
There are so many technologies available it is difficult to "see the forest for the trees". I'd like to stay fairly mainstream if possible just to make it easier with getting help and finding code samples etc. I'm open to any suggestions or guidance.

Unfortunately, SQL CE is not currenlty supported on the phone so you'll need to use one of the other available databases there.
Although it's only in a CTP format I'd recommend giving Sync Framework a look. It your synchronization requirements are anything but trivial you should really avoid reinventing the wheel by writing the synchronisation service yourself.
Even if you did use the Sync Framework, I don't understand why that would stop you using Entity Framework on the desktop.
AFAIK there are currently no ORMs for the WP7 so you'll have to create your own DAL there.

Related

Can we compare saiku with Pentaho Analyzer?

I'm currently in an internship and i have to create a whole BI application.
I think i'll use pentaho, and I have to use just open source component.
I know that Pentaho Analyzer is not free
My question is: Is saiku an equivalent of analyzer?
If yes, can I use it with pentaho instead of analyzer?
thks
I'm the developer of Pivot4J project and want to share my (subjective) opinion on the subject.
First, as though you righteously assumed Pivot4J to be more of an API than an application, it does not always mean you need to write lot of code to use it.
We also have a Pentaho BI plugin which does not require any coding and has comparable features to Saiku plugin, though it's targeted toward the yet unreleased Pentaho 5.0 platform.
And our sample application provides most of the functionalities that JPivot web application has, even though it lacks a data source configuration feature which will be soon to be fixed.
Compared to Saiku, I think each project has its own advantage in different scenarios.
Saiku has a much lightweight architecture on the client side than our sample application and the plugin, so it can be deployed and embedded virtually anywhere.
While it's not much difficult to create a full REST style analytic application with Pivot4J, our current sample and plugin applications require at least a Servlet container to run and are more difficult to be embeded than Saiku in certain environment.
On the other hand, as Pivot4J is designed to be UI independent API from the start, it could provide more flexibility than Saiku in my opinion to developers when they want to build their own application on top of it, or intend to customize core behaviors of the API.
For example, if you want to use Pivot4J with your own application which is build with ExtJS, DhtmlX, or any other UI toolkits, it'd be much easier to achieve a seamless integration with Pivot4J, as it provides you with convenient abstract extension points to do that.
Finally, if you're familiar with Javascript you might find working with Saiku easier as it delegates most of the UI related works to the client side.
On the other hand, if you're an old school Java developer like me :) you might find our sample application to be easier to understand and work with, as there's virtually no custom script involved and everything is done on the server side with JSF component model.
To conclude, I'd like to say that Pivot4J is not just an API which cannot be used without writing much codes as it already includes quite feature complete Pentaho BI plugin for the upcoming 5.0 release of the platform. And as Pivot4J and Saiku take rather different approach from each other, each has its own strength and advantage which could be leveraged to suit the specific use case.
Yes of course. Both the tools use the same underlying OLAP engine - Mondrian. Saiku is essentially the same as analyzer providing many of the same features - however it has a different architecture which additionally makes it very embeddable and pluggable. Plus Saiku can be used standalone too if you want to.
Check out the demo at dev.analytical-labs.com to see what it can do.
Also for help you wont find many tools with such a great community - hook up with them on Freenode IRC at either ##Pentaho or ##Saiku depending on your questions!
Pentaho is the right choice for OS BI too - Presume you looked at Jaspersoft as well? Worth a look but you'll no doubt realise the features are better in Pentaho.
Have you think about a pure javascript UI to pivot your olap cubes? There is one such component calls WebPivotTable at http://webpivottable.com
Jpivot, saiku and pentaho are all based on olap4j API so that they all need a java server side service. WebPivotTable use AJAX call to xmla service directly so that it can be used to pivot any xmla OLAP server, like mondrian, SSAS, iccube. Since it doesn't tie up with any java back end and also it is pure javascript based, you can easily integrate it into any website or web application.

WP7 and Exceptions Management, Logging and Validation

Thank you in advance for your assistance.
Our team has been spoiled by MS P&P Enterprise Library/Unity as we have made great use of the DI, Exceptions Management, Validation and Logging Capabilities. Traditionally, our front ends have been forms based (Windows Forms, ASP.NET, etc).
As we approach WP7 development, and understanding it is a new platform with much less resources, we are looking to leverage existing frameworks, open source, etc that may exist that deals with these issues on the WP7 client (excepting copy left licensed code).
We are definitely going to implement Prism on WP7, and have started our initial research into the Prism framework capabilities in these areas. It's a great framework, and our initial assessment is that is for legitimate reasons it is more focused on the composite architecture, and we need to use Prism as the architecture to do a little bit more implementation on our own of cross cutting exceptions management, etc capabilities building on the baseline that Prism provides.
Just wanted to confirm, as we have not been able to identify any, that there are no open source or other frameworks out there for WP7 with the Enterprise Library coverage on exceptions management, validation and logging?
Thanks again.
WP7Contrib has lots of support for logging, DI and (much) more.
well you could use Caliburn Micro
Global handling exception in WPF app with Caliburn.Micro
not sure if this goes down with the PRISM well though
22 sept 2011
there is siverlight integration on the enterprise library http://msdn.microsoft.com/en-us/practices

Where does Oracle ADF 11g stands among Java EE Frameworks?

This is a two part question:
I would like to know where does Oracle ADF 11g stand as a framework to develop / deploy Web / Java EE Applications as compared to other frameworks.
How much is Oracle ADF being used as a framework to Develop Web Applications.
I am asking from a perspective that whether or not there are good job opportunities as an Oracle ADF Developer and what the future looks like for those holding Oracle ADF skills.
Also as Oracle plans to use ADF as core technology for Fusion Applications, Is it good time to build Oracle ADF skills as a siebel developer? As the future Oracle CRM Applications like ERP, SCM will be based on ADF should developers start building ADF skills. Around when will customers start implementing those applications based on ADF. Will these be available On Premise or mostly On Demand in SaaS way.
We have chosen Oracle ADF in our company for one of our projects. Sadly, this proved to be a big mistake. I personally have used Oracle products, in particular their DB, but as far as fusion middleware is concerned, I would advise you to stay away from it. ADF was by far the worst framework I have ever used as an architect. Some of its features I noticed are: very complex, Oracle just "invents" or forces some development approaches that have been proven as a bad practice by the Java community years ago. ADF is very slow compared to other frameworks. With being slow I mean ADF pages run slow. The reason for this is extremely complex generated html and javascript. You can check this by opening up Firebug and inspecting the generated html...it looks like something from the 90s...Terrible. Not to be overly pedantic, but ADF pages have huge amounts of validation errors causing problems in making them run on all browsers. The architecture of ADF is, in my view, messy. Struts2 for example is a much cleaner framework which makes it very easy to integrate it with 3rd party libraries such jQuery, etc. Oracle advocates ADF as an MVC framework but frankly I failed to see the actual MVC architecture there.
ADF uses its own javascript libraries, which are huge, practically impossible to modify, unoptimized and slow in comparison to others such as jQuery or Prototype. The emerging trends in J2EE are lightweight pluggable frameworks that are easily integrated with other tools such a Spring for managing dependencies, jQuery for scripting, CC for continuous integration. ADF is a heavy-weight tightly-integrated framework with other ORacle tools, which makes it very difficult to use it any other way than Oracle devised.
Not to mention the development tools that you are forced to used when developing ADF - the JDeveloper which is very buggy and crashes regularly. Developing in Eclipse is problematic, because ADF has numerous "specific" files which JDeveloper generates automatically.
All in all...ADF was a huge disappointment for us. We spent months messing with it, when finally our client decided the application was too slow and difficult for them to support it and the cancelled it altogether.
Based on my experience i can only say stay away from it. Choose one of the more supported and architecturally clean solutions such as Struts2 or Spring.
I have used JDeveloper 10 and 11, both with ADF, on two enterprise ADF projects for a prominent defense contractor. I agree that ADF is complex, but disagree that JDev crashes frequently, or that the pages are slow to render.
Now... why ADF? Read Oracle's synopsis below, stating that JDeveloper and ADF make Java EE development more accessible to "business" programmers. While this does not guarantee elegant programs, it does almost certainly guarantee that, when these developers get into trouble with ADF, they will probably be utterly lost and will have little idea how to open the hood and reach inside. Conversely, they would be lost even sooner trying to integrate the current J2EE open-source cornucopia.
THE SERMON
Source: ADF Developer's guide (paraphrased)
"Since the early Java days in the late 1990's , the Jave enterprise platform has grown massively and today is used by a large community of developers. However, the developer community is not homogenous and includes developers who are not expert Java programmers, but are business developers who have core competencies in their industries. As the Java EE platform and community grows, the average programmer skill level is declining.
It's hard to imagine that there is a single developer who understands all aspects of the Java EE platform in depth. The problem to address in Java EE is to provide a technology that empowers developers to build cutting edge web and SOA app's without limiting their agility.
Existing Java frameworks such as Struts, Spring, JSF, EJB, GWT, etc are blankets pulled over areas of complexity that expose simpler controls to work with. Using frameworks, developers no longer work with the java core API's but instead interact with interfaces and services exposed by the framework.
Blah, blah, blah...
What seems a small problem for experienced java developers is another hurdle for business developers who are new to java and EE development. This type of developer may turn to a a single dev environment promising integration of all aspects of app development in a single technology chouice. Developers from a 4GL desktop dev background might be attracted by PLSQL, .NET, Adobe Flash.
An experienced Java developer might see this a a big mistake, but how would those developers know, unless Java too provides a single solution for them? The solution is an end-to-end framework which pulls another blanket over the technologies, one that combines different framewokrs and technologies into a single product that exposes visual and declarative development gestures as it's predominant programming methodology... ADF."
I have been working with ADF since last 6 months, and i realise that ADF is made particularly large application with strong database integration. I haven't seen any other Framework which can provide you with so fast and easy development of database rich applications.
Yes i agree that it have some bugs, but still it works well if you know how to work with it.
My perception of and experience with ADF is that it is a very solid and robust framework (unfortunately, the development tools are not.) I'm not sure there's much competition to it, at least, not from a single framework. ADF itself is really several different frameworks combined over the years into a mostly cohesive product. Now that Oracle owns Java, i really expect (hope) parts/much of ADF finds its way into Java EE-proper so we can maybe see alternative implementations and better development tools. If that were to happen, it'd pretty well solidify ADF's future (as long as Oracle doesn't screw the Java community in the meantime and push them to alternative VM platforms).
If you are already familiar with or want to work with Oracle(-related) products, ADF is what you want. Given the market penetration of Oracle, it's probably a reasonable bet that they'll remain dominant and your skills will remain marketable for years to come. Oracle is spending lots of money and acquiring lots of companies to try to own and retain the enterprise.
The SaaS question, to me, is a little harder to answer. While it does seem to be moving in that direction, it's not clear to me if it's mostly marketing's attempt to give it that push or if business-need is driving it. And there are lots of questions i don't really track such as business trust of the cloud for critical data and reliability.
Short answer:
You developing Enterpise solution, your product vendor is Oracle - ADF is a best choice
You indie developer, your solution is not for enterprise, you not going to use other products in the Oracle stack - ADF is not for you, look for another framework.
Long answer:
If you going to Enterprise, if your general product's stack vendor is Oracle. Your best choise is to go along with ADF. ADF becomes better with each major release. I've started using ADF since 11.1.1.2, had a look at 10.x and now using 12.1.3, while still supporting large enterprise applications on 11.1.1.6.
I see a huge improvement and its really hard to find another product that provide better integration and support for whole Oracle stack.
However, if you quite familiar with other framework or/and not going to use other Oracle products and/or your customers can't afford to pay quite a lot for ADF/Weblogic/DB/ECM etc.. - your best choise is to avoid ADF. Its good for large enterprise solutions.
Yes, in fact actually you can develop using free and limited version of ADF - Essentials, use other app server as tomcat or glassfish, but you'll be better off with the other framework. ADF Essentials is only kickstart to large enterprise world, not a solution for small lightweight application.
Development in ADF is a pain in the heart. For a newcomer, the learning curve is too steep. I wish it could be more like learning dot NET.
From my perspective, learning and constructing a functionality in dot NET takes a quarter of the time to do the same in ADF. Of course, it imbalance reduces as a person learns along, but that's pretty much the scenario for beginners. It's frustrating.
I have been working with ADF since last 3 months, and i can tell you that ADF is a really suitable for situations which is essential to provide fast development process for large enterprise applications with strong database integration.
Compairing to other JavaEE framworks like Spring,
It is extremely complex when fixing bugs becasue of the architechtur of the ADF and lack of dev community relative to Spring. Spring has large development community
around the framework.
It is hard to impliment MVC architecture with the ADF inter component integrations.
Spring Developers have much more reputation and demand compared to ADF developers.
ADF is very slow, heavy-weight, tightly-coupled compared to Spring and integrated framework with Oracle tools.
Hope this will help you to solve your problem and gain your knowledge. Happy coding!!!

Which MS technologies would be suited for a data intensive application?

I'm a junior VB.net developer with little application design knowledge. I've been reading a lot of material online regarding different design patterns, frameworks, and methodologies. It's become a bit confusing for me.
Right now I'm trying to decide on what language would be best suited to convert an existing VB6 application (with SQL server backend.) I need to update the UI and add more user functionality and reporting capabilities. Initially I was thinking of using WPF and attempting the MVVM model for this big project. Reports would be generated from SSRS.
A peer suggested using ASP.net and I don't have enough experience to determine what would be better. The senior programmers here are stuck on using VB6 and don't have any input on what to use. They are encouraging me to use the latest technologies.
This application would be for ~20 users in a central location. Ideally I would stick to a Microsoft .net language. Current interface is similar to a datagrid table where the user would click in to see the detail of each record. They would need to have multiple records open at any given time.
I look forward to all the advice I can get.
EDIT 2010/04/22 2:47 PM EST
What is your audience? Internal clients within an intranet
How complex are the interactions you expect to implement? not very... displaying data from SQL server to UI. Allow user updates to said data. Typically just one user modifying a record.
Do you require near real-time data updates? no
How often do you expect to update the application after the first release? twice/year
Do you expect a well-defined set of client platforms? Yes, windows xp environment, potentially upgrading to Win7. Currently in IE.6 moving to IE7 or 8 within a couple of months.
Do users need access from anywhere? No, just from their PC.
What would be wrong about building a simple ASP.Net application in VB.Net using Gridviews for allowing the data access and manipulation? Seems like a simple ADO.Net trial application if you aren't familiar with it in the beginning you will be by the end. CRUD applications are pretty common so it shouldn't be too hard to build it and then refine it as more requirements become apparent.
Sounds like you need to use a web-based solution--this eliminates alot of your potential distribution woes with multiple users. You could use silverlight, but if you are locked into SSRS, this might not be the way to go.

WinForms, WPF, Silverlight, Asp .NET, MVC, ... What to choose?

I've been programming for over 15 years and started with .NET 5 years ago. We built our framework for windows data-oriented apps and it is a quite stable.
At this point, we are considering to make a new platform. But, I am a little bit confused with all these new technologies. We considered CAB and SmartClient technologies but there are also WPF, WinForms and Silverlight options in there.
It sounds like you just need a quick overview of the technologies you have outlined there.
WPF: Windows Presentation Foundation - a new graphical rendering system for building interfaces based on the XAML markup language.
WinForms: Windows Forms Applications - Visual Studio's classical drag-drop GUI.
Silverlight: a Web Application framework - usually used with WPF, very similar features
ASP.NET & MVC: ASP.NET is the web application framework used in conjunction with C# and VB.NET used and MVC stands for Model-View-Controller - a design pattern that has actually been around for ~30 years
Without knowing the true intricacies of your framework, what you need it to do, what limitations you have - I can't say X would be better than Y - especially seeing as WinForms and WPF is used for desktop applications, and Silverlight, ASP is used for web applications - unless you're thinking of linking these in with each other? You haven't given enough information in your question.
However, the best for investing in the following 5 years? The most recent and still in development technologies are WPF, Silverlight and the ASP.NET MVC - but nobody has a crystal ball to say whether these will still be alive, kicking, and technologically advanced in 5 years time.
We built our framework for windows data-oriented apps and it is a quite stable. At this point, we are considering to make a new platform.
For your specs, all choices might be very good :)
I know that, but what you think is the best for investing in the following, let's say, 5+ years?
If you have a choice ( meaning if you are just displaying data without all the fanciful animation, movie and game like stuff), use ASP.NET MVC.
I always advocate web applications over desktop ones, because web apps are hosted in a single place, and so they won't produce upgrade nightmare.
In terms of which one has the brightest future, well, none of us have crystal ball and we don't know what Microsoft will throw at us in a few years time. But you should orient your apps around your business, not around fashion. If you really ask me out of the so many, which one will still remain standing 5 years later, I would say ASP.NET MVC, because ASP.NET is a mature technology, and MVC is a tried-and-true design pattern that has been used by open source and non-MIcrosoft companies. The fact that it is widely accepted makes it less likely to fade out of fashion.
If you want to continue with creating desktop applications, then your two major choices are WinForms or WPF. WPF is the "hot" technology right now, but there are a few things to consider before choosing it.
WPF requires .Net 3.5 (maybe it's 3.0, but whatever). This is significant because many corporate customers are still using .Net 2.0, and may not authorize upgrading to 3.5 for some time (my former company still has some clients that haven't authorized moving from .Net 1.1 to 2.0 yet). Also, the installer for .Net 2.0 is 23 MB while the installer for .Net 3.5 is close to 200 MB, and the 3.5 installer appears to be buggy, failing occasionally with a helpful "SETUP Error" message.
Developing with WPF requires Visual Studio 2008. If you're currently using an older version, you'll have to upgrade.
This isn't completely true, but for the most part what WPF brings to the table is a much snazzier user interface. In my experience, corporate customers who are paying big bucks for custom software do not care in the slightest how the application looks - they only care that it functions well and that it ultimately saves them money.
Finally, if you already have experience developing desktop applications for Windows, then you will feel right at home going the WinForms route. Also, because of the Mono project, a WinForms app can (theoretically) work on other platforms like Mac, Linux and the iPhone, whereas this is not yet possible for WPF (I might be wrong about this, and I will happily correct myself if someone points it out).
I'm actually sort of torn about this advice, because I think WPF is very cool and powerful, and it may take off and become the only viable way of developing for Windows very soon. It is a risk, however.
Thank you all for answers !
We tested all platforms and we have at least one project finished using MVC, WPF, Silverlight, WinForms...
The main problem with WPF and Silverligth is missing of native ReportVIewer controls since we have a lot of reports (RDL) created.
Personally, I think also that MVC is best structured framework.
I really have positive thinking of MONO. But, I would rather decrease the price of the project so the clients can buy WINDOWS but to handle bugs in Mono-Linux option.
We decided to follow the Microsoft way.
I'm thinking of some kind hibrid framework (Webservice - SQL SERVER- ADO .NET Entity Framework) to be on hosted on server and hibrid CAB-SMARTCLIENT to be usen on clients.
I really miss the times where only one tool and technology was available like Levi's 501 :)

Resources