Showing posts with label Performance. Show all posts
Showing posts with label Performance. Show all posts

Monday, January 09, 2017

Top 20 Developer Tools of 2016

Here are the list of top 20 Developer utilities that are must to have for Developer.

  1. GitKraken: The downright luxurious Git GUI client for Windows, Mac, and Linux.
  2. Atom: A hackable text editor for the 21st Century.
  3. VS Code: A free, lightweight tool for editing and debugging web apps.
  4. Git: A free and open source distributed version control system.
  5. GitHub: A web-based Git repository hosting service.
  6. Visual Studio: Developer tools and services for any platform with any language.
  7. Sublime Text: A sophisticated text editor for code, markup, and prose.
  8. Chrome DevTools: A set of web authoring and debugging tools built into Google Chrome.
  9. Docker :An open platform for developers and system administrators to build, ship, and run distributed applications.
  10. GitLab: Git repository management, code reviews, issue tracking, activity feeds, and wikis.
  11. IntelliJ IDEA: A Java IDE.
  12. PhpStorm : A commercial, cross-platform IDE for PHP.
  13. Postman: A powerful GUI platform to make your API development faster & easier.
  14. ReSharper : A Visual Studio extension for .NET developers.
  15. Slack: Real-time messaging, archiving, and search for modern teams.
  16. PyCharm: An IDE used specifically for Python.
  17. Android Studio: The official IDE for Android platform development.
  18. Notepad++: A free source code editor which supports several programming languages running under the MS Windows environment.
  19. Xcode : an IDE for macOS/and iOS development.
  20. Stack Overflow: The largest online community for programmers to learn, share their knowledge, and advance their careers.

Wednesday, May 18, 2011

How to add a ServiceThrottlingBehavior to a WCF Service?

When working with WCF especially when middle-tier client applications uses Windows Communication Foundation, you should always think about performance and take some major design decisions and tuning parameters.

By adding ServiceThrottlingbehavior in web.config we can achieve high performance using WCF. Below is the sample serivceThrottleconfiguration settings in web.config in .NET 4.0 Framework.

 <behaviors>
      <serviceBehaviors>
        <behavior name="CommonService">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceThrottling maxConcurrentCalls="16" 
                             maxConcurrentInstances="116"   
                             maxConcurrentSessions="100"   />
        </behavior>
      </serviceBehaviors>
    </behaviors>

The main purpose for the throttling settings can be classified into the following two aspects:


  1. Controlled resource usage: With the throttling of concurrent execution, the usage of resources such as memory or threads can be limited to a reasonable level so that the system works well without hitting reliability issues.

  2. Balanced performance load: Systems always work in a balanced way when the load is controlled. If there are too much concurrent execution happening, a lot of contention and bookkeeping would happen and thus it would hurt the performance of the system.

In WCF 4, the default values of these settings are revised so that people don’t have to change the defaults in most cases. Here are the main changes:


  • MaxConcurrentSessions: default is 100 * ProcessorCount

  • MaxConcurrentCalls: default is 16 * ProcessorCount

  • MaxConcurrentInstances: default is the total of the above two, which follows the same pattern as before.

“ProcessorCount” is used as multiplier for the settings. So on a 4-proc server, you would get the default of MaxConcurrentCalls as 16 * 4 = 64. Thus the consideration is that, when you write a WCF service and you use the default settings, the service can be deployed to any system from low-end one-proc server to high-end such as 24-way server without having to change the settings. So CPU uses count as the multiplier.

Please note, these changes are for the default settings only. If you explicitly set these settings in either configuration or in code, the system would use the settings that you provided. No “ProcessCount” multiplier would be applied.