WCF Webservice slow, find bottleneck - web-services

I'm briefly familiar with SvctraceViewer, but I'm not sure that is the right tool for this. Problem is, I'm trying to work with a rather large WCF app, not designed nor developed by me. Also, it is poorly documented.
Some of the views are running slowly, but - I have no idea why.
Is there any program that I can use to find out where the bottleneck is?
How many milliseconds a task takes before completing and so on?

Just use any profiler. There's nothing magical about WCF services which requires a special tool.
I have used both the built-in profiler in Visual Studio and also the dotTrace product from Jetbrains to accomplish this.

+1 to John Saunders - a profiler is the way to go to diagnose your problem. Ants Profiler is also excellent. I think you can get a 15 day free trial - might be long enough to identify your problem

Related

SQLAPI++ Library use

Has anyone have good experience using SQLAPI++ Library? (connecting C++ and SQL)
What do you recommend, I have a local server, SQL server 2008 and Windows XP.
Do you have a funcional example to connect c++ and sql server?, just to do a simple
SELECt * FROM mytable;
in C++?
My first impression is that SQLApi++ is great. Here is a bit of background.
I have been using ADO for a long time, but it's starting to give some COM errors for some users, without any helpful information. Also, msado??.tlb is not backwards-compatible so you have to be careful about all your users being on the same version. I understand this might not apply to you, but I figured I would share this anyway.
I started looking into SQLApi++ a few days ago and have almost only good things to say. The only draw-back I have found so far is that there is no way to know how many rows you get back without going to the result set. Also, it isn't free. On the positive side, the API is intuitive, the documentation is good, and the examples are useful. It is blazingly fast by comparison to ADO. Instead of copy/pasting, take a look at http://www.sqlapi.com/Examples/step4.cpp.
The SQLApi++ is supported since 2000. The last update was few months ago. The site is not updated most probably because it is good enough as it is - couple of useful examples, documentation, history and support. That it is just a plus if they don't update site very often that means their examples and etc. are not changed, which means the api is stable and you don't have to change your code in order to use the latest technologies.
Sounds good, indeed, but the site hasn't been updated for a long time now :(

Multiplatform crash reporting?

What would be the best way to implement crash reporting in a cross-platform app in c++ (windows, mac, linux)? Looked into google breakpad, but spent a few weeks trying to make socorro (UI) work to no avail.
edit: #Nim to clear up, I want to send a stack-trace to my server when some exception occurs.
When we went crossplatform (from being previously Windows-only), we spent a lot of time researching the possible tools for exactly this. Google Breakpad really is the best crossplatform solution out there.
Your problem is Socorro, which is huge, obfuscated, and confusing. I can suggest two routes:
Drop the current version of Socorro, which is way too much in love with newfangled OSS toys like Hadoop, and roll back to Socorro 1.x. You'll need to do a bit more work to set up your processors, and your dumps will go into a Postgres table, but you'll have way fewer moving parts and crazy infrastructure to deal with.
Forget about Socorro altogether and write your own processors for the Breakpad dumps and a UI to view them with. Breakpad has already done the really hard work -- parsing the symbols and catching the exceptions -- so all you need to write is a collector that the dumps can get uploaded to, a farm to run the Breakpad processors on them, someplace to store the processed results, and something to view them.
Knowing what we do now, we would have probably gone with the second option rather than trying to integrate Socorro — the amount of time it's taken us to find a version of Socorro that works for us and adapt it to our workflow has already exceeded what it would have taken for us to just write a system that does exactly what we want.
I doubt there is a reliable one except google-breakpad as win/mac/linux all-in-one solution. Your best bet would be to use a cross-platform logging library and handle SEH exceptions and use windbg if you need minidumps (here is some good resources on that: http://www.debuginfo.com/articles.html)

Where is a good place for a code review?

A few colleagues and I created a simple packet capturing application based on libpcap, GTK+ and sqlite as a project for a Networks Engineering course at our university. While it (mostly) works, I am trying to improve my programming skills and would appreciate it if members of the community could look at what we've put together.
Is this a good place to ask for such a review? If not, what are good sites I can throw this question up on? The source code is hosted by Google Code (http://code.google.com/p/nbfm-sniffer) and an executable is available for download (Windows only, though it does compile on Linux and should compile on OS X Leopard as well provided one has gtk+ SDK installed).
Thanks, everyone!
-Carlos Nunez
UPDATE: Thanks for the great feedback, everyone. The code is completely open-source and modifiable (licensed under Apache License 2.0). I was hoping to get more holistic feedback, considering that my postings would still be very lengthy.
As sheepsimulator mentioned, GitHub is good. I would also recommend posting your project on SourceForge.net and/or FreshMeat.net. Both are active developer communities where people often peruse projects like yours. The best thing for your code would be if someone found it useful and decided to extend it. Then, you'd probably end up with plenty of bug fixes and constructive criticism.
You might get some mileage by posting the code out in the public space (through github or some other open-posting forum), putting a link here on SO, and seeing what happens.
You could also make it an open-source project, and see if people find it and use it.
Probably your best bet is to talk to your prof/classmates, find some professional programmers willing to devote their time, and have them review the code. Like American Idol-esque judging, but for your software...
As #Noah states, this is not the site for code review. You may present problems and what you did to overcome those problems, asking if a given solution would be the best.
I found a neat little website that might be what you are looking for: Cplusplus.com

Some Developer Advice

I am currently working on a program that I really think is a good idea (at least I sure hope it is). For the program I am building I am using (after some very long consideration) ColdFusion - Flex - Adobe Air. However, I have to learn ColdFusion to do this.
I am an independent developer that for the most part uses PHP to build my client's websites. Since I plan on learning ColdFusion to build this program, do you guys have any advice on how I can use ColdFusion elsewhere. It is not very exciting to think that I am learning this language for just one thing.
I don't plan on bulding Coca-Cola's lastest greatest website anytime soon, but I (for some odd reason) enjoy coding and was just wondering if you guys had any advice on any smaller-time avenues that one could persue??
Any advice would be greatly appreciated! :)
Cliff notes: I'm an independent PHP developer learning ColdFusion for a client. Its not exciting to learn a language which I will never use again. Where can I apply ColdFusion in the future?
You can use ColdFusion to build any webapp you could build with PHP. I've seen a few articles lately with comments from PHP developers switching to ColdFusion. This one was posted today, and lists some pros and cons of switching to ColdFusion.
http://blog.rubicon.je/2009/09/coldfusion-half-a-year-away/
I wouldn't consider it an either/or proposition though. If you want to learn CF for your AIR app, it will absolutely come in handy for something else down the road, even if you don't plan for that. Knowing more than one (or three) languages is always beneficial, as it gives you additional insight into other ways to solve problems.
Dan
ColdFusion or CFML the language is a tool, like any other you might add to your toolkit. As developers I personally feel we choose choose the best tool for the job. That said having another tool available will invariably come in handy down the road rather you write another CFML application or not. General solid programming advice is to try and learn at least one new language a year.
CFML is easy to learn, yet also provides for advanced development, which is why many choose to go with it. I came from a PHP/Perl background and picked it up in a couple weeks. If you are comfortable programming once you get the syntax down you can use to it do anything you can do with PHP. I wrote at length on the comparison in this answer.
Further lengthy Question/Answers to the viability/use of ColdFusion:
Is ColdFusion a good choice for web development?
What is the status of ColdFusion today?
I know you didn't ask about comparisons, you have made your decision. For building Flex/AIR apps with a data back-end imho ColdFusion or BlazeDs is the way to go. ColdFusion allows you to hook up the power of java to serve data with the easy of a scripting language. With that starting point you have your foot in the Java platform which is tremendously powerful and extensive. You can invoke interact with the Java layer and harness that power. Many will make the leap to Java or a more "friendly" JVM language like Groovy or JRuby.
do you guys have any advice on how I can use ColdFusion elsewhere.
slidesix is a recent example of an interesting use of ColdFusion. NASDAQ built Flex/AIR market replay application. Also you can check Ben Forta's site for more sites running ColdFusion to get some ideas.
But I think you already hit the nail on the head with Flex/AIR apps if you plan on making more, much of what Adobe does is work to make integration with their technologies as seamless as possible. Honestly that alone has been what has excited me most about using CFML and the recent addition of open source alternatives in Railo/BlazeDs I have been building Flex apps powered by Railo/BlazeDs without paying a dime to Adobe.
I guess the bottom line is that the Java platform (via CFML) and the Flash Platform (via Flex Framework ) are both not going anywhere any time soon, and for that matter neither is PHP so I think you will have a solid set of skill from which to build on either way you go.
ColdFusion is huge in Government, both at the Federal and State level. I moved to the D.C. area in large part because of the number CF jobs available around here.
So, you could always use it for gainful employment.
Update: Some links as requested
Ben Forta's list of sites using ColdFusion, Government category
Who uses ColdFusion - a list of ColdFusion development shops
GotCFM?com - a list of sites using ColdFusion; lots of government sites there (look under "N"; the "Government" category isn't fleshed out)
Adobe.com - abridged list of customers, some with links to case studies
Monster.com search "coldfusion" in Washington, DC
Dice.com search "coldfusion" in Washington, DC
You can get a basic reading of what people are paying for via (shudder) RentACoder: http://www.google.com/search?q=coldfusion+site%3Arentacoder.com
You can use coldfusion everywhere and as much as you like in PHP. There's enough free engines (Railo, Smith, OpenBlueDragon) that you can load into Tomcat instances, or use something like stax to put a coldfusion app into the cloud.
How far you do or don't go is up to you. I find that I write about 1/2 the code in coldfusion that I do in PHP. Maybe it's syntax that I feel less, I don't know.
But build your first project, I think the dots to connect will become apparent on their own

What would you do if you coded a C++/OO cross-platform framework and realize its laying on your disk for too much due to no time?

This project started as a development platform because i wanted to be able to write games for mobile devices, but also being able to run and debug the code on my desktop machine too (ie, the EPOC device emulator was so bad): the platforms it currently supports are:
Window-desktop
WinCE
Symbian
iPhone
The architecture it's quite complete with 16bit 565 video framebuffer, blitters, basic raster ops, software pixel shaders, audio mixer with shaders (dsp fx), basic input, a simple virtual file system... although this thing is at it's first write and so there are places where some refactoring would be needed.
Everything has been abstracted away and the guiding principle are:
mostly clean code, as if it was a book to just be read
object-orientation, without sacrifying performances
mobile centric
The idea was to open source it, but without being able to manage it, i doubt the software itself would benefit from this move.. Nevertheless, i myself have learned a lot from unmaintained projects.
So, thanking you in advance for reading all this... really, what would you do?
Throw it up on an open source website and attach a bunch of good keywords to help search engines find it. If someone's looking for it, they'll find it and be able to use it.
I would say that you should open source it.
If you do have the time, it may be helpful for other programmers who are interested in the project to know the status of the project, and what is next to do on the project. Writing a to do list may be helpful, or writing comments in the code may also help.
If you do not have the time to write up a to do list maybe somebody is willing to take the initiative on the project, find out what needs to be done.
Look at it a different way. The worst that can happen is that your work will go unnoticed, and your efforts will be lost. The best that can happen is that you will be recognized for having the foresight to start such a great project, and open sourcing it.
http://sourceforge.net
This allows you to set up as admin and manage the project.
Of course if somebody does not agree with you they can fork the project and start their own version but that's open source for you.
If you've put time and effort into it, don't let it die a quiet death. Instead share it under the license of your choice on a collaborative site. At the worst, you get nothing in return. At the best, other people like the idea and provide constructive feedback or code. Even better is if you get some time in the future to pick it back up.
Couple of good sites to post it on
codeplex
sorceforge
Definitely, you should open source it, just make the same considerations you made on this question on a place that anybody can see...
Maybe someone will pick it up, or just learn from it
Put it up on github so we can all check it out.