Showing posts with label Technology. Show all posts
Showing posts with label Technology. Show all posts

Monday, July 13, 2009

Mistakes in msdn for MS-Velocity-SessionStateProvider

Hi,
it is a frustrating and a laborious exercise evaluating and adopting new technologies which has not got proper documentation, i hve seen hell with the blunders, which gives you a wrong direction and upsets your focus often. In CTP3 for SessionStateProvider configuration, there is nothing like
Microsoft.Data.Caching.SessionStoreProvider,
it should have been Microsoft.Data.Caching.DataCacheSessionStoreProvider,
and the help file, what they have provided along with the software downloads is age old...not the latest one. You will be in all directions using the documentation of Velocity. So keep a note that you have to make the above mentioned modification when you copy the information from the below link in msdn
http://msdn.microsoft.com/en-us/library/dd169031.aspx



Wednesday, July 8, 2009

google's operating system

http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html

is this a new begining ? are we really heading towards a day where people would talk more about google chrome OS and less about windows ? You never know ? Keep your fingers crossed.

So what is the microsoft's undercover operation to tackle this competetion ? There must be something.

We are all here to enjoy the benefits ...chilllllll.

Sunday, July 5, 2009

too many opportunities

Yes, dont be shocked at that line...i mean it...too many opportunities now a days...companies are getting big deals (projects) and they are on the lookout for people...market is not doing bad at all in India and to me it looks like on track offlate, mails all over from NESS, IBM, HCL, etc.

Thursday, July 2, 2009

Unified Communications with OCS 2007

As the name suggests, unified communications is not a single product, it’s a solution formed by integrating a set of products. Another core aspect has been conveyed by the name itself, which is “communications”. Before actually going into the details of “unified communications”, we will have to question ourselves that why do we need yet another technology solution to communicate? Here comes the prolonged answer…

Though there are a number of benefits of using unified communications solution, the primary aim of unified communications is to reduce the delay in communication in a corporate environment (The response time, latency, etc)

It is also important to understand that UC is not just about Office Communications Server 2007, it is the cornerstones of Microsoft’s UC solution. UC is the platform for presence, instant messaging, conferencing, and enterprise voice for businesses around the world.
Message sent through one medium can be received on other (i.e you can send a mail, and see to it that it is delivered on to a mobile). It gives you confidence that you can actually communicate with the people anytime (or) most importantly depending on their availability and in many ways.

It also lets you to empower your existing applications, not that these things did not exist earlier, but it comes as a suit with everything at one place and give you a chance to SELECT and unleash on a supersonic platform (servers, api’s etc). (Two users from within a healthcare solution talking using the audio facilities & also being able to see each other. You never know the doctor might be able to diagnose the patient’s condition sitting miles away…are you not delighted ?)
PBX, IP Networks, IP telephony, messaging, video chat (web cam), instant messaging & now we have Unified Communications evolved with the idea of making use of all the facilities (all of them), under one single umbrella, in a more effective way. UC integrates telephony, messaging with business processes and requirements based on presence capabilities.

Software professionals who would love to travel around the globe would not like UC, because UC’s business tag line is to cut travel costs & the list is continues…travel costs, training costs, facility costs, telephony and conferencing service charges, etc.

Business gets benefited by productivity, faster completion, shortened sales cycle times, faster resolution of customer issues, attract and retain employees, etc. MS also claims about reducing power consumption by using UC (i.e by using USB phones over conventional phones). So during these recession times the tag lines like “cost cutting” and “business development” are definitely attractive, isn’t it?

UC presents a consistent unified user interface and experience across multiple devices and media types.

1 Capabilities of UC
Ø Enterprise Voice
Ø Audio/Video/Web Conferencing
Ø Group Chat
Ø Instant Messaging and Presence
Ø Public Instant Messaging Connectivity
Ø Mobility
Ø Operations
Ø Platform Extensibility

1 SIP
Session initiation protocol came into existence in the year 1996, it’s a tcp/ip based application layer protocol. It is independent of the underlying transport layer, means it can run on tcp, udp, or sctp. It is a text based protocol with all the ingredients of http and smtp. Also called as a signalling protocol, accepted as a EGPP ( 3rd Generation Partnership Project (3GPP).
There is something called SIMPLE – “the session initiation protocol for Instant Messaging and Presence Leveraging Extensions, is an instant messaging (IM) and presence protocol suite based on session initiation protocol (SIP). Simple is an open standard.
Similarly we have one more open standard called XMPP – Extensible Messaging and Presence Protocol, XMPP based software is deployed on thousands of servers and millions of users using them. The most popular examples of XMPP based softwares include Gizmo project, Nimbuzz and Google Talk.

1 Unified Communications Vs Unified Messaging

In order to realize the value of adopting technologies like unified communications, it's crucial to first understand the difference between unified messaging and unified communications.
Unified messaging allows users to access e-mail, voice mail and faxes by a common interface via a variety of means including PCs, telephones, wireless devices, PDAs and the internet.
Unified communications is a superset of UM. In addition to the message-management capabilities of UM, UC allows enterprises to maximize the connectivity of their workforce with their customers while enabling the individual worker to choose the best method for them to communicate and access corporate information at any given moment. Location and call control play a key role for the UC solution through two factors:

1. Tools (such as those for filtering and routing) to manage and control communications.
2. Multiple interfaces like speech, telephone and GUI to optimize business processes that use human communications as part of their workflow.
UC connects two resources (pc or human) that have a desire to communicate (or) access information in real time.
For eg:- with a UC solution, an employee who is walking on the road can use voice commands via the telephone to access enterprise solutions for real-time contact.

1 Third party competitors

There are many. To name a few we have Cisco, hp and Microsoft. Cisco is dominating by offering UC and collaboration on mobile devices since ages. MS is more of IP communication and replicating most of the Cisco stuff slowly but surely. Cisco has sold millions of IP phones and desktop software clients; Microsoft has nothing of this sort, it’s new to this area. Microsoft’s focus is on making UC a desktop issue. Cisco delivers it from the network. Microsoft advantages are its developer support and its knowledge of user workflow and desktop experience. Cisco excels in building networks and integrating features, such as voice and UC, for a service based delivery model.

1 UC Softwares

I had no clue on how to start and where to start, even after days of studying hundreds of pages on msdn, and then I stopped studying the business benefits and the deployment details. I wanted to understand the types of software required and what the software is actually meant for? This confusion finally resulted in preparing a productive list, because it is so important to understand WHAT we really do NOT need with respect to our goals of application development, but for that purpose one has to go through the entire list.

1.1 a) Client side code:
For contact lists, presence, IM capability inside a line of business application
Use Communicator Automation APIs - basically here we can control and invoke the Communicator already installed in the system from your application. We dont need to do a lot of coding here, you are done once the Communicator (or relevant IM window for e.g.) is invoked.
UCCA - UCCA stands for Unified Communications Client API. This is what Communicator 2007 is built on. One would use this if you have a need for custom rich features and/or want to embed UC features in your line of business applications. This is the most powerful client side API set.
CWA - An AJAX web based client for communicator. Stands for Communicator Web Access. The name says it all. Use it for browser based client applications.
Communicator Extensions - To create custom tabs that can show up in the Communicator UI itself.

1.1 b) Coding at SIP layer, Server side:
For automated response to certain events/messages in application and to send custom IM/SIP calls as a part of such responses, to access archived messages/sessions, to embed interactive voice response/guide features into the applications.
UCMA - stands for Unified Communications Managed API. It is a low level API providing access to the SIP layer. For e.g. you can create a bot that can auto respond to certain events or messages using this API.
Speech Server Core API - Use this to create applications that have speech recognition, synthesis and IVR kind of functionality. Builds on top off a Speech Server installation.
OCS Server API - Uses MSSPL - Microsoft SIP Processing language. Used for routing, archiving and logging of messages. We can create plug ins to the OCS Server using this API. This is different from UCMA in the sense that this is more of the API allowing changes over the message routing and control (as opposed to UCMA - an API that gives access to the data inside the message).

1 AJAX Roadmap in 2007
In Office Communications Server 2007 R2 Microsoft only supports the UC AJAX API in case you add a CWA Server of OCS 2007. The UC AJAX API will not be updated beyond the 2007 release, and programming directly the UC Managed API will be the recommended way to build applications. Yet if you want to deploy any existing UC AJAX application, you will need to go through some pains.
Till date there were many limitations reported by the developers online on UC AJAX API, such as that it does not support more than 15 concurrent IM end-points per web page. UCMA in any case remains the better choice for solutions.

1 ROADMAP
Microsoft wants to capitalize on UC through desktop applications market, because Microsoft has already established in this sector in many ways. Office communicator, presence and messaging have been proved successfully in great numbers for Microsoft.
So the platform is set for customers to upgrade to UC with little effort (little effort interms of mindset not in terms of cash).

Microsoft’s UC for mobile is also catching up fast, so the roadmap for mobile applications is as follows:
Ø Flexible for all UC contacts, simple to use, consistent with the desktop user experience, and interoperable with desktop communications.
Ø UC supports its Exchange Server 2007 unified messaging, outlook and calendaring applications with speech recognition and text to speech user interfaces for mobility.
Ø To facilitate enterprise application mobilization and making wireless mobility more corporate liable for localized voice over wi-fi campus environments.
Ø Speech interfaces are needed for mobilized applications and hence Microsoft Office Communications Server 2007 will have built in IVR capabilities that will support traditional and future interface needs.

Also check the GUIDANCE column for a roadmap kind of feel.

1 GUIDANCE
UC implementation for any corporate is not a get-set-go operation, to actually achieve it one has to undergo a long process, and in that process we have to sort out
1. Business process priorities
2. Key individual /group needs associated with those business processes, wherever they may be located.
3. Current Communication capabilities and operational costs
4. Budgetary considerations
5. IT support capabilities

1.1 I . Migration

Before migrating on to UC the organization has to identify the
a) critical business processes
b) the key people involved with those processes
c) and the communication inefficiencies that contribute the most “human communication latency”
d) identify key end user communication needs associated with priority business processes.
Presence, call and video conferencing would bring revolutionary changes to any health care application, because the faster the communication, that much better care one can provide by reducing the time gap.
Critical functionality needs to be identified in LORENZO (LRC or Clinicals) and these facilities need to be integrated with UC.
For instance for any application, if there is tremendous human interaction and the need is critical (like healthcare) then the integration of non-real time communications (such as messaging) & real time communications (such as voice or telephone) with business processes and requirements, based on presence capabilities would yield remarkable benefits.
Defining the business process and the need of the users is of high priority as mentioned earlier, because only then these facilities would see light and bring higher perks to the business by reducing cost and in a much faster timeframe.

1 System Requirements:
OCS 2007 R2 Hardware and OS requirements: UC setup is a whole new environment altogether, so it comes at a cost.

1.1 Platform
64 – bit only, 32 – bit versions of ocs 2007 will no longer be supported in production. This lines up with exchange and other products moving this direction.

1.1 Software
The 64-bit edition of windows server 2008 standard or the 64-bit edition of windows server 2008 enterprise. (or)
The 64-bit edition of Windows Server 2003 R2 Standard with Service Pack 2 (SP2), or the 64-bit edition of Windows Server 2003 R2 Enterprise with SP2 (or)
The 64-bit edition of Windows Server 2003 Standard with SP2, or the 64-bit edition of Windows Server 2003 Enterprise with SP2

1.1 SQL
· Microsoft SQL Server 2008 (32-bit or 64-bit edition)
· Microsoft SQL Server 2005 with SP2 (32-bit or 64-bit edition)
For an ideal enterprise environment setup you need a group of servers, like
a) Front-end server
b) Back-end Server
c) Edge Server
d) Mediation Server
e) Communicator Web Access Server
The servers are of high configuration; more or less the minimum requirement for any server would be something like this CPU : Dual processor, quad-core 2.0 gigahertz (GHz)+, 4-way processor, dual-core 2.0 GHz+, Ram : 8 gigabyte (GB), Disk : 2x 72 GB+, 15K or 10K RPM, Network : 2 x 1 Gbps network adapter.

1 UCMA 2.0

I’m not giving code based examples here, because I myself didn’t get a chance to implement them, but I would give a try to generate some interest in readers on what UCMA coding is all about. Looking at the features and capabilities, it is very easy to envision that UCMA holds the future of Microsoft’s way of UC.

The events mechanism is somewhat like “Subscribe-Notify” concept. In UCMA the idea is to send a SUBSCRIBE message to an endpoint specifying that you are interested in a particular event and the endpoint sends you NOTIFY messages whenever that event occurs. Though UCMA API is much more complicated than this definition, but precisely this is what happens.
Irrespective how big UCMA is, but there are five main classes in UCMA 2.0 called conversation, conference services, localownerpresence, remotepresence & contactgroupservices FOR features like conversation, conference scheduling and management, presence publishing, presence subscription, contacts and groups.

Various SDKs in UCMA for different purposes, each SDK of ucma has a lot of depth in itself, hence a quick glance of what each of it does is here.

1.1 Unified Communications Managed API 2.0 Core SDK

The Microsoft Unified Communications Managed API 2.0 Core SDK is a managed-code platform that provides access to and control over instant messaging, telephony, audio/video conferencing, and presence. It is intended to support the development of middle-tier applications targeting Microsoft Office Communicator and Microsoft Office Communications Server 2007 R2.
UCMA 2.0 Core SDK abstracts away most of the Office Communications Server protocols by offering an API that exposes almost all of the features of the protocol.

1.1 Unified Communications Managed API 2.0 Speech SDK

The Microsoft Unified Communications Managed API 2.0 Speech SDK enables developers to build Office Communications Server applications that utilize speech recognition and text-to-speech features.

1.1 Unified Communications Managed API 2.0 Windows Workflow Activities

UCMA 2.0 Windows Workflow Activities can be used to quickly build workflow-enabled speech and instant message applications on OCS. UCMA 2.0 Windows Workflow Activities can be used to provide solutions for simple scenarios such as call routing, or for complex scenarios encountered by large enterprises, such as audio collaboration and business process workflow integration.

1.1 Unified Communications Client 1.0 SDK

A developer can use Unified Communications Client API to create an application that enables integrated multimodal real-time communications within or across network boundaries. The resulting application can help to make the computer the center for business communications in real time. Audio and video calls as well as instant messaging (IM) and collaboration are all integrated into one user session on the computer. In addition to computer-to-computer communications sessions, the user can also create computer-to-phone calls, phone-to-phone calls, or text-only IM sessions.

1 Useful Links

There are thousands out there, on MSDN UC is like an epic, but I really liked this one, please try to find out why!!!.

http://www.ucstrategies.com/unified-communications-research/uc-analysis.aspx

1 Conclusion

Throughout my life I have been observing a common scenario in the world of software, that whatever Microsoft does, has already been there (some other existing technology) in some form and in some proportions since long time in the market. But when Microsoft picks it up, a greater part of the world would be well aware of it, talking about it and finally doing it. Professionals mostly talk about the technicality behind MS products, but the open secret here is that the Microsoft’s way of marketing things is amazing. It’s like dog-feeding things, creating a dependency and rest is assured, because afterwards there is no other way for you, except to follow. At the most what you can do is, restart your machine, update the latest patch (sp1, sp2…sp100), upgrade your hardware and keep learning the software and by the time you start liking it, yet another latest version is ready in the market which would require 100GB RAM, 1lakh GB hdd, 100gHZ processor. In a way, creating business for others, like IBM and Intel. Same scenario continues with UC as well. MS has been selling UC smartly, by packing it in a fancy and colourful wrapper and already too many developers tasted & infected.
It is huge, vast and gigantic, it is not something like velocity ( a light weight component), UC can be called as the backbone of enterprise architecture (depending on your needs and business processes). For a developer it gives real pleasure to code on MS’s UC platform, because it is communications and presence, but yes it doesn’t come cheap, the infrastructure cost is high for UC. There is so much more but I want to end this document somehow, I have not discussed things like custom presence, web access server, ajax and how to configure and consume each and everything, etc. Happy coding and hopefully I will release something better on UC in the coming days, because it has not been included in our healthcare solutions so far, so there is a lot of scope.

Friday, June 26, 2009

Microsoft's Velocity - Distributed Caching

Introduction

The rate of change of position, in physics, is termed as VELOCITY, has very little coincidence with the concept of “Distributed Caching”, but MS-Velocity is definitely catching up slowly but surely more on its conceptual merits and on the need of the hour of the “software applications world”. The terms scalability and availability are becoming a default necessity in today’s software applications, hence ‘ms-velocity’ is here.

Scope of this Article

Thorough understanding of, “The Microsoft’s way of Distributed Caching”

Who is making this noise

A project team/code named “VELOCITY” within Microsoft. It is at beta stage (Beta is nothing but just one step to go live, though beta version might also have several sub-versions in it). Microsoft has a much fancier name for beta; called CTP, “community technology preview” in full and the versions are called CTP1, CTP2 & CTP3. Currently velocity is at CTP3. Frankly speaking, to me, it looks like an alpha version and gives you a feeling of integrating bits and pieces. For eg:- For most of the time CTP3 bits were ready but the CTP3 samples were missing, ofcourse they are ready now, now the help file to understand the sample code is missing.

Caching Story

A cache is a type of dynamic and high speed memory that is used to supplement the function of the central processing unit and the physical disk storage. As the microprocessor processes data, it looks first in the cache memory and if it finds the data there it does not have to do the more time-consuming reading of data from larger memory. The cache acts as a buffer when the cpu tries to access data from the disk so the data travelling from the cpu and physical disks can have synchronized speed. Disk reading and writing process is generally slower than cpu function.

Caching in Web Applications

We cannot imagine the MSN portal or the Amazon web site, or the corporate SAP financial application being down when we need it. Same is the case with any online banking website in the world. Fundamentally, applications need to be available all the time to support access at any time, and from anywhere.

Another major expectation, especially from application developers and from datacenters is that of scalable and available applications at a low cost.

One of the most important factors in building high-performance, scalable web applications is the ability to store items, whether data objects, pages, or parts of a page, in memory the initial time they are requested. You can store these items on the Web Server or other software in the request stream, such as the proxy server or browser. This allows you to avoid recreating information that satisfied a previous request, particularly information that demands significant processor time or other resources. Known as caching, it allows you to use a number of techniques to store page output or application data across HTTP requests and reuse it. Thus, the server does not have to recreate information, saving time and resources.

Distributed Caching is not entirely a Brand New invention.

Distributed caches are not new – during the last couple of years several caching products (memcached, ncache & sharedcache) have emerged to address the performance and scalability needs of applications. Most of these support key-based access. Other than memcached (by Danga Interactive), which is an open source technology, most others target enterprises and enterprise workloads and scale. I think the web workloads require considerably large scale, with 1000s of cache nodes in a cluster. The web scale distributed caches not only require mechanisms that can scale and provide availability in very large clusters, they must be easy to manage or self-managed.

ASP.NET Caching & How Velocity is different

Velocity is all about caching & only caching (exclusively); prior discussing Velocity, I would like to brief the basics of ASP.NET caching. In ASP.NET caching we have two types of caching a) page output cache & b) application cache. Page output caching saves the output of page processing and re-uses the output instead of re-processing the page when a user requests the page again, where as application caching allows you to cache data you generate, could be any object like for eg:- dataset or any business object.

ASP.net cache object runs in the same process as your web application, it could be an advantage depending on your need and at the same time it could be a disadvantage. Whatever, it makes it clear that it is not a distributed cache, which means the ASP.NET cache cannot be shared among multiple servers. If you want to share the same ASP.NET cache among multiple servers, you must duplicate the cache for each server.

The greatest advantage of ASP.NET is that it works great for web applications running on a single server, but when you have a web-farm scenario consisting of multiple web servers then there is no straight forward implementation. Similarly whenever a server fails the natural thing we would do is to reload the data programmatically in to our objects. These two issues can be considered as limitations because situations like this doesn’t help sites which has millions/billions of users. Scalability is an issue with ASP.NET caching, unless the programmer does a brilliant work around.

Velocity addresses the above limitations of ASP.NET caching.

In the near future, “Velocity” envisions being an integral part of the .NET application stack targeting both enterprise and web workloads (and scale).

As applications start using the caches for data access, it’s easy to believe, they will demand richer data services like query, transactions, analytics, synchronization etc. We never know that the requirement of LINQ queries on distributed cache on most of the .NET applications could be one of the most programming requirements in the coming days, just like they query the backend SQL Server database. Microsoft envisions “Velocity” to become a comprehensive distributed caching platform. The performance, scale, and availability functionality of “Velocity” along with its rich data services will allow for rich web and enterprise applications development and deployment.

Distributed Caching fits here

In general, distributed caches are especially ideal for applications with the following characteristics…

Ø There is a considerable number of data requests that are mostly read (e.g. product catalogs)

Ø Large concurrent access to such data can be provided by replicating the catalog data on multiple cache nodes. Since updates are infrequent to such data, maintaining consistency (synchronously or asynchronously) is not very expensive.

Ø Applications that can tolerate some staleness of data
Such applications can provide better performance and scale by not requiring immediate updates over refreshing of caches

Ø Applications that can work with highly partitioned data (e.g. session data, shopping cart)

Ø High scale and performance can be supported by partitioning and distributing data across multiple cache nodes, and thereby distributing data processing across the cache nodes

Ø Applications that can work well with eventual consistency.

1.2 System Requirements & Prerequisites

Supported Operating Systems:
Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Vista Service Pack 1; Windows XP Service Pack 3

How to attack Velocity in notime

Download the CTP3 samples, do the setup for shared folder kind of caching on a single machine (your pc or laptop). Do not get confused by powershell tool and all that help on that, forget it. Simply open the velocity administration tool and try to start the cluster by typing Start-CacheCluster (remember this works happily only if you are using CTP3 dlls and the CTP3 samples, also remember you have to copy the installation dlls to your sample application folder and add references). That's it you are all set.

You will get to see more on velocity day by day here, im delighted at its ease and especially with the shiftover from the existing session code to the distributed cache plug-in just by few changes in the configuration file. Cool.

Followers