updating data of a distributed windows application - asp.net

I'm wondering, is there a way to update databases of a windows application that is distributed on several computers all at the same time? is it done by using sql server? because I'm developing an examination system that will be distributed on several computers for students to take exams and I'm just wondering if an admin updates a questions database will the changes be applied to all other computers as well or should it be done manually? sorry if I sound stupid but I can't seem to understand this part of my work, I was thinking about switching to a web app since it seems easier, but again this data updating issue is giving me hard time.
by the way I might link the application to an internal network, will this have anything to do with updating the databases?
please I need some explanation here :|

I think you don't need multiple databases with each client. Your application is going to be a client/server architecture. You will have a server application which will be dealing with the database of the questions. You will also have a separate client application which should request questions from the server. You can use web services or any other form to communicate to the server. Once you get the questions on the client then your client application will record all the answers and submit it back to the server.
On your server side application, any administrator can update the questions and client will get the updated questions

Related

Can Microsoft's Sync Framework work with .Net Membership/Roles, even through a web API?

We've got a .Net MVC/EF web application that is already in place with a client. The app was developed using .Net Membership and Roles for security/login. The app runs on tablet devices placed in the client's locations.
Now the client wants a different company to build a new UI for a portion of the site (not the whole thing), that has to integrate with our DB. This other company has been doing this type of work for a long time, so they've established how they operate, which is using a disconnected, distributed methodology to avoid Internet problems messing up an always-connected setup. Basically, they want each device to pull down only the segment of the DB that is relevant to the device's location and then sync it every two minutes through an API. The device will need to allow user logins.
So basically, we are being asked to adapt our web app/DB structure to accommodate this. And it boils down to 2 questions:
1) Since we are using .Net Membership and Roles, can we use the MS Sync Framework for syncing the DB of users (or at least, the ones relevant to the device's location)? I'm guessing the answer is yes because as long as the other party's UI is coded to utilize .Net Membership as well, the DB should be in the right format to read the data. I just want to confirm this is the case.
2) Can all the synchronization requests (up and down) be run through a web API that we write and expose to the devices? Since the UI is not going to be part of the code base, it needs to connect that way.
Thanks in advance!
1.Yes. from Sync Fx perspective, they're just tables.
2.Sync Fx out of the box doesnt work over http. You will in the documentation how to n-tier setup using WCF though. If you want Web API, you will have to code it as well.

If the browser is left open for an extended period of time, website is getting crashed

We have developed a website. This will be deployed in IIS in server machine of a network. n number of people will access our website from their allocated pc's. What happens now is, if the browser is left open for an extended period of time, it is getting crashed, then i will have to reload the page to get access to my site. What should i do to overcome this problem?
Please advise on this.
Thanks
Venkat
You havent provided much information here so cant really comment anything specific (for e.g. runtime env, database servers, any specific tech. in use such as TCP/IP, web sockets.
There can be number of things that you could look into.
For the start you could look into resources that are not being disposed properly. For e.g. Database connection, large in memory .NET objects for e.g. file streams. Now this could be something as simple as using statements or exception handling(if .NET).
You could use profiler applications such as MiniProfiler (do google), Again if its Microsoft then you could use Microsoft Load Testing to see where the problem is.
Try using fiddler to see if it shows anything.
If you are using TCP/IP communication for e.g. push notifications from server side using websockets or node.js then you need to investigate if there are any threads/connections not properly closed/disposed.
list is sort of endless.. good luck

web application development and database replication

Good Afternoon at GMT +8
I have to deploy a project using ASP.net to create a online payslip viewer. the problem is, our network would not host the web app, it would be from a different network, which would be a web host.
My problem is the database, to view your payslip, you should have access to your database, and my answer is replication.
However, my constraint to this approach is we use SQL server 2000 as our DBMS. as i have read in this article
http://msdn.microsoft.com/en-us/library/ms151763%28v=sql.105%29.aspx
the instance was tagged under SQL server 2008, could there be a way to replicate using SQL SERVER 2000? or are there any more ways that i could view data from our database online? without any direct link to our network?
I would also like to know if there would be another approch in regards to creating a simple payslip viewer online.
thanks!
There are several options here:
If you can move your database to that other server that would be an ideal solution.
Can you connect to your database server from external network? How about some kind of VPN? If speed is the problem then this might not work.
Other solutions could be creating another database in your host environment where application would be deployed and use one of many database comparison tools to synchronize the data between two databases but this is far from ideal especially if your application writes/update a lot of data.
One more thing you can consider is creating some kind of web service that you can use to communicate to your database. In that case you wouldn’t need secondary DB.

Communicating between ASP.NET applications on the same machine

I have a situation where information about a user is stored in the web application cache and when that information is updated in one application - I want to notify the other applications (running on the same machine) that the data should be removed from it's cache so it can be refreshed. Basically I need to keep cached data in sync across multiple asp.net applications.
I have started down the path of using a central web service to help coordinate the notifcations but it is turning out to be more complex than I think it needs to be.
Is there a way that one asp.net application can easily reach across to another on the same box to clear an item from the cache?
Is there a better way to achieve shared cached information than using the application cache?
I really want to create a way for apps to communicate in a loosely coupled way - I looked at nservice bus but the dependency on MSMQ scared me away - my client has had bad experiences with MSMQ and does not want to support an app that requires it.
Suggestions?
Michael
I agree with Hogan. Best is to use a shared database. I want to add to that that, when using SQL Server, you can use SQL Cache Dependency. This SQL Server mechanism allows notifications to applications in such a way that used caches can be invalided directly after a change is made to the data.
A shared database is probably going to cause you the least pain.
Edit
Note: ASP.NET allows you to make "cache clearing" triggers on SQL server changes. Should be a quick search in the cache examples on MSDN to find some examples. Thus when the user info stored in the cache changes in the DB the local cache copy will clear and be re-loaded from the DB.
There are commercial distributed caches available for .net other than Microsoft Velocity - NCache, Coherence, etc.
How about Velocity? It's a distributed cache that works between servers as well as between applications. It has PowerShell management and all sorts of documentation to get you going faster and be far more maintainable in the long-term.
What about COM/DCOM, using namespace System.Runtime.Remoting

Migrate Access to ASP.NET

The current application is a kind of CRM application built upon MS Access. The application is for internal use. My job is to migrate it to ASP.NET web-based application. Now boss requires to keep Access as database and develop ASP.NET code against it.
My question is, is there any disadvantages of using Access as database in ASP.NET application? (e.g. optimistic concurrency issue?) Should I persuade boss to upgrade Access to MS-SQL?
Many thanks!
We've used Access as a backend for web sites with good success. It's cheap, can be used effectively by moderately skilled programmers, and you can store the MDB on a document server so it gets backed up.
Most IT people dislike Access, but from a business perspective, Access can be very valuable.
MS Access is notoriously unstable in multiuser environments. A WEB app is by definition heavily multi-user.
So IMHO leaving MS Access as underlying DB is a call for trouble. At least use SQL Express (it is free)
The problem you are going to face in upgrading from Access to MS-SQL is that there is a major cost investment for the application. If your company already has the infrastructure in place(licensing, hardware...) then you won't have such a hard fight to pursuade your boss.
As for a technical answer:
I'd say you need to let you boss know that access databases aren't ideal for concurrent usage which a web application suggests is the intended goal of the application. My view is that Access is for database information that a SMALL set of users will be simply using for small data entry and querying. NEVER use Access to build an enterprise-level solution.
If you are planning to upgrade a Microsoft Access database to SQL Server 2008, use the SQL Server Migration Assistant (SSMA) rather than the upsizing wizard built into MS
10+ tips for upsizing an Access database to SQL ServerAccess.
Your boss probably likes to do ad-hoc stuff with access / excel. If you move the DB to SQL Server Express you can use Access and it's linked table feature to let your boss keep doing his ad-hoc needs through Access while keeping the data in SQL Server Express. If you keep the linked tables named the same as the old physical ones all his reports and queries will should keep working.
I'm an Access promoter, but not for use on websites because Jet/ACE is not threadsafe (though Michael Kaplan once said that is is threadsafe if you access it via ADO/OLEDB; I don't quite understand how a database abstraction layer can wash away a characteristic of the underlying database engine it's calling, but if MichKa said, it's 99% likely to be true).
Now, the exceptions would be if you're using it for prototyping something that will use a different database, or if it's read-only, or is read-write but will only ever have a very small number of users.
Michael Kaplan's website, trigeminal.com, used to use a Jet database as the back end (it may still -- I don't know that MichKa ever changed it), and when that was his main website he reported getting 100K hits a day. But it's a read-only site, so fits my restrictions.
There are so many different alternatives and they are mostly easy to use that I just don't see the point of trying to use Jet/ACE as back end for a website. I'd never do it myself (all the websites I'm responsible for use MySQL).
Simply put, go with MSSQL. Express edition is free, and will give you everything you need to migrate away from Access. These articles are talking about Access applications specifically, but the same issues will plague you.
http://resources.zdnet.co.uk/articles/features/0,1000002000,39285074,00.htm
https://web.archive.org/web/1/http://techrepublic%2ecom%2ecom/5208-6230-0.html?forumID=102&threadID=205509&messageID=2136367

Resources