Profiling a classic ASP application using AQTime - iis

We have developed a large number of websites using ASP (jscript flavour), talking to the underlying intelligence layer (written in Delphi) through COM. These websites are running on IIS (5 and 6).
Over the years this ASP layer has grown into something quite heavy (no business logic, but lots of controller/scenario/view/ajax/etc handling), and we'd like to do a bit of performance tuning on it. According to the creator, AQTime (we have the latest version) can be used for this purpose (profiling both the serverside script and the underlying com objects in one go), but I simply can't figure out how to get it to work.
The help files explain how to profile COM dll's, ISAPI dll's and even client-side scripting, but not a word on how to profile the server-side script running on the ASP pages. Can't select .asp files as a "profiling module". Google is not helpful either.
Any word of advice on how to accomplish this? Alternative suggestions for profiling classic asp pages is welcome, too.

Well, as it turns out, this isn't possible (according to Official Support). Of the tree layers in our application,
Delphi code running on the server
ASP code (jscript) running on the server
Client-side jscript running on the client (ajax, etc)
AQTime can only profile (1) and (3). Although it can perfectly well profile windows scripting host .js files on the server, it will not profile .asp code. Which I was really hoping it would, seeing how both are executed through the same jscript.dll.

Related

Alternative to Node js for Win CE

My requirement is run an embedded HTML\JS Web applications on a Win CE-ARM device.
We also have a Linux-ARM device for which we used Node js to run any Javascript app that also uses node modules like require,express and such.
Basically, we would like start a node server inside the device that serves HTML/JS pages as in when requested.
Since Win CE -ARM doesn't support node js and porting of node js to Win CE is an humongous task, we are looking for alternatives to node js in Win CE.
I looked up online and found very little on this front.
Basically we want to have a server running inside the device that serves html/js pages as in when requested( Imitate the node behaviour).
Is there any framework available for Win CE?
Any kind of comments or help is appreciated.
Thanks
I am not aware of any frameworks that implement server-side Javascript on Windows CE (you can always serve html/js pages though, if that's what you're after).
Unless you do manage to find a third-party alternative, your options are limited to:
ISAPI extensions
ASP (note: not ASP.NET)
ISAPI extensions are written in C/C++, and are a comparatively primitive environment. This does not necessarily mean a bad environment - whether that's the case really depends on your requirements. We've used ISAPI extensions successfully in a number of products.
The ASP implementation in Windows CE is only a subset of what desktop IIS supports; the linked MSDN pages have all the details about this.
If you don't want to use HTTPD WinCe webserver and to study how primitive and user unfriendly C++ ISAPI environment works, you could implement an extensible web-server in C# for example with RESTFUL webservices.
Refer to this.
You can than use JQuery instead of ASP to create dynamic pages.
If you need also the browser on the device you can use the IESample bundled with WinCE.

How do I create transferable dll's for a specific website functionality?

VS2013 update 5, MVC5 using Areas
I have a stand-alone function programmed for a website. The functionality is a specific user interface to collect survey responses in a particular way. It has several controllers, a model and a group of views. The functionality is completely contained in an Area of the project, except for the Shared _Layout file that provides the main menu for consistency.
'Is it possible for me to' / 'how do I' compile this Area into a single or set of .dll file(s) that I could then add conveniently to other websites? I'm assuming creating something for transfer/download is very standard functionality. For example, I used Elmah.MVC for this site. What I want to do is pretty much create a package that can be downloaded in a similar way to how we integrate Elmah.MVC into a site. (Be certain I'm not talking about creating error logging software, I'm only using Elmah.MVC as an example of software that is easily integrated into other website applications.)
I've never compiled any website functionality into a .dll(s) for use elsewhere and would appreciate either some specific guidance, or perhaps what would be easier is to provide a link with a good step by step tutorial or explanation for how to do this. Most of what I've found on the web describes bits and pieces of doing this, but it's not enough for me to feel confident with it.
It seems to me there are a lot of 'moving parts' to taking a particular piece of an MVC application and turning it into something that is easily added to other projects.
A particular issue I don't quite grasp is the difference in downloaded packages between getting code and getting just the .dll(s). For instance, when I download an MVC5 site, I get controllers, models and views, but when I download Elmah I get a .dll and no code files. Also, I do understand the concept of transforms, but I'm just struggling right now with even getting from my programmed application into a 'package' regardless of the transforms that make it easy to integrate into another website.
These are just some of my questions I have about how to perform this particular process in developing deliverable and/or shareable software.
What you are looking to do is create a portable MVC Area project. A Portable Area is a set of reusable multi page functionality can be dropped into an application to provide rich functionality without having to custom build functionality that is literally the same in every application. An MVC Portable Area is really just a dll that contains the views, controllers, scripts, etc… needed to use in a website that is either a Web Forms website or an MVC website. A developer can use them for a reusable widget or a complete engine. I have actually used them for both. Here is a link with some basic info to get started. http://elegantcode.com/2012/04/06/mvc-portable-areas/

Web Design Management programs/resources?

I originally got into programming by learning some javascript while trying to set up a website. I took to programming better than html and CSS and have since been learning more of it. Part of the problem was that I just wanted to do everything myself, all the javascript, CSS, HTML, everything. No external libraries or help. I wanted to understand and do all of it. The general hostility towards WYSIWYG programs from the development community didn't help either.
The amount of work required to do everything completely on my own is what deterred me, though I didn't want to have everything handed to me. A bit down the line from learning programming I decided I wanted to make some simple programs like I kept seeing everyone else make in Visual Studio. With programs, I knew it wouldn't only be difficult, but near impossible for me to do anything but use Visual Studio. As amateur as it feels dragging and dropping buttons and controls and having all the code generated, it's allowed me to work on the more personal aspects of the program and not the nitty gritty and has been a lot more fun.
I've decided that I want to give web development another shot, but this time with a little less ego. Is there any way I can have something like Visual C# for websites?
edit: As of yet, I can't fund my website experiments, so I'm using freehosting. The x10 hosting I use doesn't support asp.net, so I can't use VS for it :(.
You won't be using Visual C# for website design, but you'll use Visual Web Developer. You can download VWD here.
Edit: As per your edit, I would be a bit more concerned with using a technology that you find passion in and feel comfortable with (or at least the foresight to know it's something you want to pursue and dedicate yourself to learning and mastering). Just because you can't host a website application on the internet doesn't mean you should throw the towel in on ASP.NET. Some of the most fun applications are intranet applications. Just get IIS Express up and running and you'll have a blast.
You'd also be surprised at how cheap a webhosting "rental" can be that supports ASP.NET.

Lotus Notes Application, Web Based Converting

Does anyone have tips or an ebook that can give me a good foundation on how to create applications in lotus notes using web browsers instead of clients. Links or tips are much appreciated.
Thanks!
Books are a good starter. But you'll find there is alot more to it than you see in books. So, here is a quick list of places to look.
Books
You've got these options for books (all downloadable as eBooks to)
Classic Web development prior to Notes 8.5 -- Reviews here and here
Latest Web stuff with Xpages if you have Notes 8.5+ (kindle/paper)
There are IBM wiki's (html). But have found the IBM wiki experience underwhelming. (The adjectives "half-ar$ed" and "piece-meal" comes to mind alot when reading these.)
IBM's redbook site (pdf/html) has better produced content than the wiki's.
Sites
One of the best web development tip/technique sites for the trickier problems is codestore.net and nsftools.com
OpenNtf a well used site for free code and solutions written by alot of smart people.
Quite a few good bloggers have "coagulated" on planetLotus
Try Searching for XPages in Google. Or start here
If you enable http on the server, you should be able to see your domino applications from the web. You then need to modify them to make them a bit more web friendly. The basic technique for this is to have 2 design elements with the same alias, hide one from notes and the other from the web. This will make it a bit easier to make it functional from both the client and the web browser.
Other functionality which makes this a bit easier would be 'Pass through HTML', the Domino CGI Variables and the 'WebQueryOpen' and 'WebQuerySave' events. As Jasper points out, XPages is the new sparkling way to do this, but it might not be an option for existing systems (It requires the latest version of Domino server). Good Luck!
What version of Domino are you running? If it's an 8.5 variant, I would suggest you use XPages to bring your old client apps to the web (XPages are not an option in releases prior to 8.5).
As to how you go about this, that's well beyond the scope of an answer on Stack Overflow: it's a book in and of itself! To learn about web development with XPages, I suggest visiting some of the well-known sites out there, and perhaps picking up a course or two. Here are some links:
http://xpages101.net
http://www.qtzar.com/blogs/qtzar.nsf/htdocs/LearningXPages.htm
http://notesin9.com/
(Also, IBM publish a book on XPages development, although I've not read it).
With regards "classic" Domino development, your best bet is to view your existing Notes app in a web browser and then start hacking on the default HTML generated (which is nasty). The best single resource out there for classic Domino web development tips and hacks is Jake Howlett's Codestore
Start small, build yourself a small database with a subset of data and explore what you can do. I've been a notes client developer for 10+ years and doing domino web work for last three or four years and still on steep learning curve. Its a very powerful platform but you also need to know html as on many occasions the html that you see in the browser helped me pin down the faults in my application code.

Which development platform should I use for desktop Windows application?

After doing web development for quite a while, I am faced with a new client who wants a simple database application to run outside the interweb.
He is quite adamant about using Microsoft products. "We don't want no steenking open sources" was his stance.
It's been quite a while since I actually did desktop development, and most of my tools are rusty, out of licence, or just plain lost. I have been concentrating lately on L.A.M.P. applications, but that doesn't quite transfer back to the desktop environment.
Some options:
database: MySql (my fav), Access, MSSql
language: C++, VB, PHP, Java, C#
I have been gravitating towards Access/VisualBasic, not because I like it very much, but because it is simple to set up and deploy. A database server (MySql, MsSql) would probably be too hard to deploy/maintain for the novice computer user. Even though from a purist point of view, C++ is the better language, it would take too much effort to bootstrap an application (IMHO). Java is too cumbersome (again IMHO).
The other consideration is cost. Although I can convince him to acquire proper software runtime licences, I probably won't be able to get him to purchase necessary development tools, and certainly the project isn't paying enough to justify substantial purchases which will probably not be used again.
I would appreciate your input on platform selection, development tools and application frameworks, thanx muchly.
Edit 23-May-09
Thank you everyone for your excellent advice.
I have settled on C# Express. So far, I've avoided learning C#, but what's another language?; and I have a whole week to get up to speed.
I am waffling on whether to go with Access or MSSql (Express) database. With Access, I can deploy the database as a stand-alone file, but MSSql requires that the database server be installed. (AFAIK)
The client requires that the application be installed in multiple locations, some of which are mobile and not connected to the interweb. The dicey part is reconciling all the copies of the database, and determining which is the connonical version.
I'd go with the Express editions of C# and MSSQL. Free and easy to use/set up/deploy. Here's a deeper link to some general material specifically about using VS Express editions for Windows applications.
I suggest: Just use Access. It works for small, simple, single user databases. It's not "just a database" it's also a "database application" and "database application development environment" in it's own right. That is: It's ridiculously quick and easy to throw together a db, CRUD forms, and simple reports; and the built-in VBA is handles most business logic, and you can allways call-out to C# dll's if you need to do anything "interesting".
Just tell the customer they need to loan you the production box for the duration of development (fair enough), and that Access (no need to mention which version) is about $200.00.
Customers who don't pay get they get what they ask for, not what they need.
C# + MSAccess/MSSql(express) = Profit.
I don't know exactly your requirements, but I would suggest the following:
If you had the budget:
Visual Studio Professional
MS SQL or Access
DevExpress Components for forms and
database persistence.
If you don't have the budget
Visual Studio Express
MySql
NHibernate or Linq2Entities
WPF or Windows Forms
I don't know why you think another database engine would be easier to administer than MS SQL. There's a free-as-in-beer edition of MS SQL called 'Express' that might suit. It supports all the same DDL and SQL features as the full database engine: in case you need them; it's just limited in size and number of CPUs.
Likewise there are free/express edition of the developer tools, which aren't missing much functionality (most notably perhaps the ability to write an installation program, but there are other free ways to do that). I don't know PHP or Java but if I were given a choice between C++ and C# (I'm familiar with both), I'd say that C# is virtually as capable for most applications except perhaps soft-real-time, and is quite a bit easier and more pleasant.
My preference would be C# with MSSQL Express. You can use the visual studio express edition for your development environment.
Have you considered Delphi or C++Builder there are free versions available.
Microsoft Visual Studio has express editions which are either cheap or free. That said, the choice is obvious: Winforms with C# or Visual Basic .Net (it's just a syntax question) talking to a MySql backend (for cost issues).
Microsoft Winforms is awesome but limited to Windows (Mono notwithstanding). Enjoy the project. It's way more fun than LAMP in my opinion, but not nearly as universal.
Edit: If you have the extra time and patience (of course you would have to eat the hours and not bill the learning time), though C# is brilliant and very mature (even in .Net 1.1 it was :), you may want to write the app in one of the Python variants for .Net. That's what I would do... Python has a huge following and will probably come up sometime in your non-Microsoft future. C# on the other hand... well, if you Mono it could come up, but otherwise, it's like learning Italian: good in Italy, but useless otherwise. (I should know, I'm writing this from my place in Venice...)
C# or VB.Net with SQLite.Net for the database. Pretty much cross platform across the board.
If you need a database local, one file (.dat) or the suggested from one's IDE (berkeleydb) or Sphinxsearch() Relevance sort order with pivot tables are often what users want and no database required only i/o according to document or graphics type.
If you are developing application on desktop. I would say
Scripting Language:ASP.NET(C#)
Database: MS SQL 2005
Server: Windows Server 2003 with IIS 6

Resources