WAP vs XHTML-MP - asp.net

Last year we develop intranet web site using WAP and ASP.NET for server side, the site was already on production and was considered successful. We use low end handset which had built in Openwave version 6.
Now we update the application using XHTML-MP, because we think this will be the future mobile application technology that will be supported. But the performance was very worse. We tested both application on same time and same module, the new application is 10 seconds (average) longer than the old one. We eliminate several possibility such as redirect and we already compress the page (both application pare are 2 kb size). During the test, we encountered the XHTML-MP application often get network error, such "Cannot resolve host name" and "Request Time Out", but not on the WAP application using the same device and browser. The application use the same proxy. We tested both using the direct access and using proxy (WAP Gateway).
We put logger in our application that track how long application was executed in server time, and it was less than a seconds.
We already invest so much time and money on this, but we can't figure out what is the cause of problem.
Does this mean that rendering XHTML-MP was longer than rendering WAP on Openwave browser? And why I haven't see any documents on Internet that mention about this? Is developing new web mobile using XHTML-MP are suggested?
Any help and suggestion are very appreciate.
ucin

May I ask how much css formatting are you doing? It's recommended that you don't use css extensively to format the page since many handsets don't have enough power to process that (at least a few years ago, that was the case).

This is obviously very device (or device range) specific, could you tell us which devices struggle to format xhtml?
If so, is it not possible to show WML to these old troublesome devices? You could look at their agent string for example to detect what markup to output them.

Related

.NET applications load extremely slowly in IIS-8 Windows Server 2012

After perusing stack exchange & numerous MSDN articles for months, I'm coming to the community looking for help. I'm the IIS Admin for my organization & I've been seeing an issue wherein when a change is made to a .NET application, the page takes a very long time to load when a request is first submitted to the page. When I say a long time, I'm saying anywhere from five minutes to a half hour at times. I've tried a number of items to fix the issue. But it's my belief that there's a configuration setting buried somewhere that is causing the issue. Once the page loads once, it's load time is normal going forward. It seems to happen regardless of the application, although some take longer than others. It's also not consistent. Sometimes it'll take seven minutes to load after a change. That same application may take seventeen minutes to load the next time a change is made... The changes are usually very minor, a new image box is moved in, or a new link added. Nothing major.
If an app takes twenty seconds to a minute to load the first time, we're not concerned. But the ten, fifteen minute, sometimes half hour load time is what is not acceptable.
The issue happens regardless of whether or not it's a static content application, or if it's reaching out to a data source. Any connections to a data source are configured at the app level. We only utilize that on a handful of apps & I verified the connection information is valid in the web.config for those apps that do reach out to a data source. We're using Windows Authentication on every app.
We run a three tiered environment, all running Windows Server 2012 R2 Standard with 16gb of ram & a multicore CPU setup. We're running IIS 8.5 on .NET 4.0.30319. The app pool is utilizing the integrated pipeline with support for 32-bit apps (which the apps are). These are VMware Hosts. The server is rebooted once a week.
The issue does not occur on our test or dev servers. Only our production server. It doesn't matter what time of day the change is made.
In December of 2016, I ported over all of our .NET applications from an older Windows 2003 system running IIS 6.0 to the new Windows 2012 system. While we worked with the developer to alter any hardcoded hostnames in the apps, we ultimately had to install a CNAME host record to re-direct the old hostname to the new one. The issue seems to have started around this time.
One issue I noticed was that the developer was compiling all apps in debug mode. We changed this setting to false, but it only marginally helped in some cases.
I tried the following as well:
Segregated a given app & set the app pool to always run. Also tried changing the application pool identity to run as a network service, or as a service account user.
Adding the application initialization role & configuring in IIS to always run the app pool & enabled preload at the app level. - I backed this out when I saw it made no change.
I married up all the roles between our test/dev servers where the issue doesn't happen with that of production.
Disabled idle timeout at the app pool level.
Compared settings between test & production regarding compilation settings, time-outs, etc
None of these changes made any difference. I can't find anything differentiating the test/dev boxes where there is no issue & the production problematic server. Please let me know what additional information you may need & I appreciate the help in advance!!
Thanks,
Mike
We found the problem. Our AV software was the culprit. Specifically Trend Micro Deep Security.
When a request was made & the program was going to compile in the temp area (C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files) - I noticed it seemed to be taking a very long time for the files to build out. Pre-compiling saw the same behavior. I asked our LAN admin to add an exception for this particular folder. Once that was done, it's only taking 5-10 seconds on first load, which is acceptable. Thanks again for your input.
You want to precompile your pages so they don't get compiled on first run. IIRC it's just a simple web.config addition.
https://msdn.microsoft.com/en-us/library/bb398860.aspx
Though to be honest, compile times of 5 minutes per pages seems like there's a bigger problem going on. I've never seen a new aspx compile take longer than a few seconds.
Neil N's answer makes sense, but I'd definitely check and see if that setting is the same across all of your servers.
If that isn't the culprit, my next stop would definitely be looking at the 'Application' section of Event Viewer. It could be throwing some meaningful warnings to help you get closer to the root of the issue.

How to detect a timeout in a .net application that is not resulting in an error, just an 8 second delay?

I've got a Windows 2008 Enterprise R2 Server running Ektron 8.02 SP3 that is causing me some trouble that I can't diagnose.
So my question isn't for a solution but simply how to better profile a .net application / windows server. Whenever you try to POST a form built by the software, it takes 8 seconds and change to return the page (on this specific server, it doesn't do it on other machines with the same codebase). It appears that it's trying to make a connection to something for 8 seconds, fails, then returns the page without error. Some more facts:
This is a beefy VM that is not being over utilized
The database is running on the same machine, so there is no lag there.
The 8 second delay even happens when submitting from the server itself
The event viewer for the server doesn't report any errors that seem related
Profile MSSQL doesn't report any issues either
Microsoft Network Monitor doesn't report any glaring networking issues, though its hard to say as the tool doesn't report long connection attempts clearly (from what I've seen of it)
I feel sufficiently confident that there is some process during the form POST on the server that is trying to make a connection somewhere, failing, and continue through the rest of the process. It doesn't report any errors and the forms all submit fine.
So, all that being said, is there anything else I can do to debug this? I feel like I'm shooting in the dark. Thanks for any help you can offer.
It sounds like this isn't an application you wrote. If so, the potential solutions are different.
A first level step would be to use Windows' Performance Monitor. Select the options (process and/or performance attribute to watch), then run the process through its paces.
If Performance Monitor can't help, you'll need to get into the real guts of the app. Most likely this will be more difficult than you want unless you're writing the app. You can debug a .NET app that is not your own using Reflector (paid) or ILSpy (free). HOWEVER, this can violate the license agreement (and likely does if the app has been purchased).
Apart from that, you're going to need to contact the product developer if you want to both stay sane and find this problem quickly.

SignalR: Server doesn't receive any requests if more than X connections established in one browser

Good day.
Background: ASP.NET MVC 3 / SignalR.
I'm developing typical chat component which will be used in a big portal. I wrote small emulator which opens new window with chat component and new SignalR connection in it.
The problem:
Everything works fine, but: Suddenly i noticed that if i open more than X windows/tabs with same component in one browser - server stops to receive any responses from any clients connected with it.
The X is:
5 for IE and Chrome
14 for FF.
I suppose it's a browser issue, because the value differs from one to another. Additionally i noticed that requests can stay pending for minutes! And there is no timeout..
Maybe someone faced with something like this, or know what can cause this strange behavior?
Thanx in advance, Jan.
I'm going to assume you're using IIS 7/7.5 on windows 7. If you are indeed using Windows7 then you need to use IIS Express since it only supports 10 concurrent connections (Client OS limit). Alternatively you can use Windows Server to get the full benefits of IIS.
This is the first post in three days of googling that came close to my experience. I am using the .NET client and have tried isolating the issue by creating an app with just the problem areas. The difference in our situation is this: I don't seem to have some connection limit on the client. In fact, I have no issues until I deploy my .Net hub to the windows server 2008 hyper vps. IIS express runs everything as smooth as butter. I've checked to make sure the asynchronous services and features are running and I've followed the performance tuning articles that david mentions in the documentation, adjusting the setting for thread queue maximums and the like. Note that the minute-two minute delays you describe are identical to mine. I updated to the latest version of SignalR (.4) from nuget and it broke my solution for some reason.
Can you tell me what version you're on? I suspect it could have something to do with security on the physical host where my vps is running. I am going to try it on a different virtualization platform to rule out hyper v issues.
Please, see my answer here: Is there a way to get number of connections in Signalr hub group?
The idea is to overwrite connectionid.

Advice for Web Site Development (WinCE)

I need to set up a web server on WinCE (7.0) and the following are some of the features that I need to implement through this web site:
be able to update the device software (run an exe) and display output
start/end process
display the run-time of device
Should I use ASP or ISAPI on my web server on WinCE 7(WEC 7) platform? If you include some reasons for your response, it would be great.
I was planning on using ASP because of its simplicity compared to ISAPI; however, when I tested a simple Hello World(hello.asp) page on the device, it took around 30 seconds to load the page. For testing purposes, I am using Windows Virtual PC. So I am not sure what is causing it to be so slow. If you could please enlighten me on this topic too, it would be great.
I looked up ASP .NET Compact framework but I am concerned about performance again.
I am beginner on WinCE development and web development so any answers would be greatly appreciated.
If you need any other information to better answer the question, please let me know and I will provide it.
Classic ASP on CE is really, really limited. You're not going to be able to hit your targets without a custom COM control, which is not very fun to write or debug and it will have to be installed on the service device. Out of the two you've proposed, ISAPI is the only one that will reasonably do what you want.
It's a side note, but from experience I'd not use either due to the absolute pain of debugging either one. I'd use a separate commercial ASP.NET web server for Windows CE. Of course I created it, so I'm biased, but really, even creating your own port 80 server is going to be less painful than the piss-poor out-of-box offerings in CE.
I found out the problem with the slow loading ASP. It is an error with the WinCE 7 web server. Microsoft has released an update that fixes that problem.
Windows Embedded Compact 7 Monthly Update July 2011
So I think I will go ahead and use ASP. I'll see if I can add the features that I need to implement.

What kinds of production issues should I anticipate when deploying a Flex app?

My company has been working on a Flex dashboard that displays realtime financial information. It will be deployed over a corporate WAN to perhaps a few dozen users.
This is our first Flex project, and while development has been very pleasant, we're a little concerned about what production issues might come up (users not having the right Flash player installed, long download times,BlazeDS performance, etc).
Our stack is RDBMS/Spring/BlazeDS (remoting and messaging)/Flex.
Does anyone with experience deploying a commercial Flex app have any words of advice?
Your biggest problems are likely to be:
your users not having the correct version of the flash player
your users having locked-down desktops and either not being able to download the right version of the player or not being allowed to use the player at all
download speeds of the swf if you have a big app
intermittent loss of connection to your back-end due to either bugs in your code or unavailable network connection
restrictive browser policies
None of these are insurmountable, but you are likely to encounter all of them in the first few months.
I am presuming that you have tested your app for performance under reasonable load and will have fixed those scalability issues already :-)
HTH
If you're talking about a few dozen users I don't think you'll have a lot of performance issues. In my opinion the first tree bullets of Simon will be the most likely problems.
We have a flex business solution with a .NET/WebORB backend and a MS SQL2005 server.
The swf of the frontend application is about 1.2 Mb big. If you have a broadband internet connection, then download time is not an issue (as it is corporately deployed in WAN, I guess this is no issue). If not, then the first time the user loads the swf it will take some time, but then it should be cached. (caching is another issue if you often have new builds. Best is to have a contextmenu in your swf where you can see the buildversion. If a user has problems with the application, one of the first things I check is whether they have laoded the last version.).
At times the frontend player is simultaneously used by 500 candidates. Each player loads and saves data regularely to the server. We have had no problems so far and I know that using cache on the server side performance can be increased a lot. Stresstests are important here as a lot depends on your architecture, hardware, concurrent users, ...
We also use messaging for pessimistic concurrency control and that's a whole other story. We have done a lot of testing here to get things up and running well.
Security doesn't seem a great issue in your project as it is deployed corporately. But be aware that remote calls available to the swf are not secured without security.
Lieven Cardoen aka Johlero
our logs showed that flex apps would randomly drop connections to our servers. We ended up adding automatic retry logic to all of our REST calls.

Resources