ASP.NET to Silverlight Migration
The paper can act as a checklist of sorts for various ASP.NET features and how to migrate them to Silverlight. You can download a copy of it from here. Do read it and share any comments you may have on it, here.
« April 2011 | Main | June 2011 »
Now exactly after a year since .NET Framework 4 release, as part of the .NET Framework 4 update 1 that got released last month, Microsoft has brought back the support for "State Machine" workflow types.
This will bring huge relief to customers who wanted to migrate.NET 3.5 state machine workflows to .NET 4
Some of the related important additions are,
• Support for SQL Azure as Workflow Instance store
• Provides max connection retries property to re-attempt a connect to database
• New activities to model compensation behavior for easy to use by new custom workflow host
For developing applications from Visual Studio 2010 SP1, you can download the install here
Note, you must be running on SP1 of VS2010 for this to work.
If you have server applications running with the .NET Framework 4 and want to update then, you need to install it from here. Steve Danileson has provided good pointers to State Machine Workflow Labs and other important changes here.
As Cloud Computing starts becoming pervasive, more and more application patterns are considered or evaluated as fitment for running on Cloud.
Feasibility, and readiness for doing Business Intelligence (BI) on Cloud becomes one of the key asks.This is not simple and needs to be evaluated from multiple perspectives such as business, technology to the least. Business perspective would include aspects such as functionality required, cost-benefit, and elasticity of the environment, to name a few. Technology aspects would include readiness of stack to support functionality on Cloud.
BI brings out insightful information in the form of nice colorful dashboards, reports (read rainbow) that can be sliced/diced/drilled, suggest patterns for user to make informed business decisions. As such BI is a very broad topic and hence it is important to take a scenario specific approach to explore applicability in Cloud and recommend solutions.
As a potential customer willing to explore analytics/BI on Cloud, I could possibly seek solutions around some of the following scenarios, recommended solutions here are based on MS stack (on premise as SQL Server stack + off premise as Windows Azure stack)
1) Leverage Cloud for augmenting to my existing off premise BI capabilities to reduce ETL and cube processing window (Cloud bursts)
In this solution, existing BI investments running on premise is augmented with cloud computing capability by provisioning additional nodes on Windows Azure Cloud.
The pre requisite for this is on premise servers must be running on Windows Server 2008 R2 with HPC pack.
This is a typical Cloud burst type of scenario and can be most useful to reduce latency window for jobs such as ETL running using SQL Server Integration Services. Cube processing/mining in SQL Server Analysis Services is another thing for which computing nodes can be borrowed from cloud and released once done.
This approach can help in reducing the existing ETL or cube processing windows in turn making the vision of real time BI "real". It is also useful to cater to any elastic demands during peak load times such as Christmas sales.
Pros
• Is non-invasive solution and leverages existing investments
• Good for customers who are not willing to move to off premise solutions because of concerns around data security, compliance, vendor lock-in, etc.
Cons
• Tied to investment in on premise and cannot truly exploit other benefits of cloud such as cost advantages, software as a service, etc.
Moving on to next scenario,
2) My business is gathering data for each user as one large file...this could be user specific browsing/navigation history and I want to do analytics on cloud using MS Cloud stack
Such scenarios can be dealt by dumping user specific files in to Windows Azure Table/Blob storage, once done then Worker role can be used to perform certain analytics/intelligence/mining using predefined algorithms on Table Storage, with the intent of extracting and dumping results in to again Table Storage or SQL Azure in the form of areas that we want do reporting on such as max. sites visited/user, number of hits to a specific site, max. time spent on specific site, number. of web sensed site visited, etc. as KPIs and then reporting them using SQL Azure reporting.
Pros
• Complete solution on Cloud leverages inherent Cloud advantages such as no upfront capex., elasticity, scalability, accessibility of application across devices and application boundaries
Cons
• BI features limited by what is available with Microsoft Windows Azure stack which currently is not as rich as on-premise SQL Server stack for BI.
Moving on to next scenario,
3) I have a small to medium size off premise LoB application which I would like to move to Cloud and also have basic reporting/business intelligence capability built around it
Table Storage, SQL Azure, Web role, Worker Role, and SQL Azure Reporting stack can be used to do very basic reporting and Dash boarding using Silverlight/PowerPivot.
In absence of analytical structures like Cubes, the aggregated/predefined summary tables will have to be created in SQL Azure based on identified query patterns and then SQL Azure Reporting needs to be published on top of it. Any trend analysis, pattern matching kind of work can be done using Worker role processing. As of date, there are no OoB data mining /trending algorithms in Windows Azure Cloud offering but 3rd party algorithms can be evaluated to see the integration or possibly this work can be offloaded to on premise engine and results reported back to the Cloud.
Pros and Cons of this approach would be same as mentioned in 3)
4) For large Enterprise wide implementation, moving complete BI on Windows Azure
As of date it is nearly impossible to do a pure play Microsoft Cloud solution for enterprise wide BI implementation using existing Microsoft BI Cloud stack as currently it lacks components such as integration Services, analysis services, data mining, SQL Services rich reporting, etc. In such scenario, it is best to leverage mix of on premise and off premise solutions and provide a Hybrid solution.
In a Hybrid solution, Data integration and analytics can be kept off premise and implemented using existing SQL Server Integration Services, SQL Server Analysis Services. Reporting can be done on cloud by connecting to on-premise SQL Server based Data warehouse/Data mart.
The reporting on Cloud will be as good as SQL Azure reporting, ASP.NET, Silverlight, Power Pivot richness. Performance Point Server is part of SharePoint stack, needs to be evaluated if it can be used to deploy on Web role (IIS). In a nutshell, data integration and processing off-premise and presentation on Cloud is the solution.
As such I don't see a strong fitment for complete advanced Enterprise BI on Cloud with existing MS Cloud stack due to lack of technology readiness at this point of time. However basic reporting/dash boarding/analytics can be done on Cloud.
Pros
• Hybrid pattern provides the option of marrying best of both the worlds (SQL Server and Windows Azure) by providing rich BI capabilities at the same time reaping the benefits of scale, elasticity of cloud.
Cons
• May need to manage both on premise applications and infrastructure and off premise applications
There can possibly be more variations, or permutation combination, however with the currently readiness of Microsoft Windows Azure stack, these patterns seems to be a place to start. Your thoughts/views are welcome!!
The PCI standards aims to provide organizations that process card payments ways and methods to prevent credit card fraud through increased internal controls around data by reducing exposure to compromise and theft. Everyone involved in the payment card industry must comply with these standards if they want to accept credit cards. The PCI requires organizations that store, process or transmit cardholder data to Build and maintain a secure IT network, protect cardholder data, maintain a vulnerability management program, implement strong access control measures, regularly monitor and test networks and maintain an information security policy.
We recently got an opportunity for implementation of PCI Norms for our Global client based in UK who is Level 1 Merchant The organization operates through multiple call centre units across the globe.Various call centers across Europe, US, Australia and Asia use the customized Microsoft Dynamics AX 2009 SP1 Application either using Citrix or Dedicated VPN Network.
The client have Microsoft SQL Server 2005 clustered server environment running Microsoft Dynamics AX 2009 SP1 Global ERP Application on Data center environment The Microsoft Dynamics AX 2009 SP1 environment consists of multiple Application objects servers configured in load balancing mode. Apart from that, the customer had other environments primarily used for testing new developments ( SIT ) , doing release management (UAT) and Training which is used for internal training of call centre employees. Worldwide customers place their order online using their credit cards through various websites which download the orders to the AX database as well place orders offline call directly to the Call centre for placing their orders which is running MS Dynamics AX 2009 SP1 application . The Credit card processing happens in AX and on the basis of authorized credit cards the orders are picked for delivery. Based on the learning's of this implementation, I am publishing a quick checklist which will be helpful in similar implementations . Though this checklist has been made depending upon our clients requirements to implement PCI Compliance for their operations this list is not exhaustive as more points can be added to this list. However, I am sure this checklist which could be useful starting point to all who plans to implement PCI compliance for their clients projects.
Microsoft Dynamics AX 2009 Database Level Specific
• Enable database Logging Changes to the audit trail settings are stored in the SysDatabaseLogTableSetup table of AX Sql server Database.
• In order to protect data Restrict restrict permissions on the SysDatabaseLog table. By default, any user who has database access can query a database log by using Business Connector, X++, or alerts, or by using direct database access.
• Enable Sql Server Trace Log setting to monitor access to the audit log
• The database server should never be on a Web server or in the DMZ with a Web server.
• Prior to settlement Credit Card Information is stored in encrypted Table at Database level which is not AX Application and cannot be viewed
• A reset of the encryption key must be performed annually and whenever a security breach is suspected.
MS Dynamics AX 2009 Application Specific Level Specific
• Call centre Employees will not have administrative access, no access to reports, and no access to card numbers except when they punch in CC numbers when customers are not able to place order online.
• User of Microsoft Dynamics AX, are subject to Active Directory security policies which means that Ax2009 users are subject to the same password policy as domain users.
• When setting up AX user accounts for employees you must use a "least privilege" approach, granting to employees only those privileges required for them to perform their duties.
• Encrypt client communications with the Application Object Server (AOS)
• Encrypt and restrict database communications using IPSec
• All Microsoft Dynamics AX transmissions of cardholder data, whether over a private or public network, are secured by the use of Secure Sockets Layer (SSL).
For MS Dynamics AX 2009 Test Systems
• Remove Credit card holder Information from the test & training systems by wiping the Credit card information after system refresh
• Ensure Sensitive authentication data is never retained, cannot be reproduced from within the program, and is not available in log files or debug files
• Card numbers are truncated so that only the last four digits remain. Card numbers on receipts (both printed and journalized) are always truncated.
• Removal of History Data and Credit card Transactions
• Always Use test Credit card information to check the new developments
In my next post I will be continuing with the more checklist points and will be sharing more information on PCI Keep watching this space till that time Signing off for Now
Cheers
Pankaj
Starting May 17th, Microsoft's CRM 360 Virtual event kicks off. This summit provides the opportunity to learn how Microsoft Dynamics CRM and industry-specific CRM solutions can improve your business by increasing customer retention and ROI, straight from experts in your field.
So, Register today for the complimentary CRM 360 Virtual Summit and guarantee your access to the keynotes, guest speakers, virtual "Expo Floor," networking lounge, and more.
Infosys is an exhibitor and you can meet me and my colleagues at our booth for Distribution And Services, Financial Services and Manufacturing And Resources industries, to know how Infosys' Microsoft Dynamics Practice at Infosys can help you:
Join us on May 17 (If you are in Americas) and May 18th (If you are in APAC or EMEA) to learn how Infosys can help you leverage your Microsoft Dynamics CRM investments effectively.
Can't make it on May 17/18? Join us online to catch an on-demand replay after the summit. Everything will be available online, immediately following the summit. Keynotes, guest speakers, customer testimonials - everything available on demand to help your business success.
And not just that, the CRM 360 Virtual Summit Expo Hall and networking lounge open will also continue to be open after the summit ends. So you can stop by our booth, day or night, seven days a week and know how Infosys can help you with Microsoft Dynamics CRM, delivered straight to your computer on your schedule.
Look forward to networking, once you register for the complimentary CRM 360 Virtual Summit!
Entity Framework can be used to connect to SQL Azure database in the same way as SQL Server database and it is seamless.
If you have developed any existing application with Entity Framework and SQL Server, it can be made to work with database on SQL Azure with little changes as outline here
Change the following highlighted items in the connecting string to connect to SQL Azure database
Connection String for SQL Server
<add name="NewGenBankEntities" connectionString="metadata=res://*/NewGenBankDataModel.csdl|res://*/NewGenBankDataModel.ssdl|res://*/NewGenBankDataModel.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=.\sqlexpress;
Initial Catalog=NewGenBank;
Integrated Security=True;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient"/>
Connection String for SQL Azure
<connectionStrings>
<add name="NewGenBankEntities" connectionString="metadata=res://*/NewGenBankDataModel.csdl|res://*/NewGenBankDataModel.ssdl|res://*/NewGenBankDataModel.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=xxx.database.windows.net;
Initial Catalog=NewGenBank;
Persist Security Info=True;
User ID=sqluser;
Password=xxx;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
Note that for SQL Azure, there is no Integrated Security and one needs to use SQL Server authentication. Database password can be hashed instead of having it naked in config file.
Once this is done, your application should work seamlessly with SQL Azure as a database.
Microsoft's answer to Relational data service on Cloud is SQL Azure, the immediate next question is how easy and seamless is to move my existing investment of on premise SQL Server database to SQL Azure. Of course, there are other questions related to cost, benefits, etc. but we will park them for now and possibly focus on only technical aspects of moving from SQL Server to SQL Azure in this blog.
To help migrate and synchronize data between SQL Server and SQL Azure, Microsoft has provided a nice utility called "SQL Azure Data Synch". It is currently in CTP2. It has lot to offer to simplify the effort of moving from SQL Server to SQL Azure and still lot is desired. It can also be used to synchronize two or multiple instances of SQL Server with SQL Azure databases.You can download the SQL Azure Data Synch from the link here
In the context of moving data from SQL Server to SQL Azure, SQL Azure Data Synch helps you copy/migrate database tables and data from SQL Server to SQL Azure. Primary key and check constraints of table are also copied. However importantly, it do not migrate foreign key constraints between the tables and database logic such as stored procedures, triggers.
If you need foreign keys, stored procedures, views, triggers you have to explicitly create the script for these objects in SQL Server and run in the target SQL Azure database. As such this is not difficult but I wonder why it needs to be done manually, may be Microsoft plans to get this feature by RTM, needs to wait and watch.
You can script the source database (SQL Server) objects by connecting using SQL Server 2008 R2 Management studio and then running the same script in target database (SQL Azure) using SQL Server 2008 R2 Management studio. The scripts in SQL Server can be created by choosing the SQL Server database, right click, select Tasks and then Generate scripts, the wizard pops up and takes you through.
SQL Server 2008 R2 Management studio is a nice tool which gives a side by side view of both on premise (SQL Server) and off premise (SQL Azure) database and helps you to operate.
I took a bit of pain to work with SQL Azure Data Synch CTP and figure out how to migrate from SQL Server to SQL Azure but later on found out it is well documented here with detail steps and if you are looking to do the same, this should help save your lot of time.
Happy Migrating your SQL Server databases to SQL Azure!!!
Often I have seen questions over the need of Entity Framework based Data Access Layer (DAL) against Custom entities based DAL.
Here are my thoughts,
Entity Framework has significant edge over custom DAL (with custom entity) on following dimensions,
1) Entity Framework Provides O-R capability
2) Supports OoB relationship navigations. You can navigate from Customer to Orders and back without any programming overhead.
3) Supports OoB eager/late loading of objects. Can be done for any number of Navigational objects thus providing benefits of fetching data in batch as against multiple database round trips.
4) Supports multiple databases/stores through respective providers
5) Supports object modeling capability through UI designer
6) Supports OoB change tracking for Objects
7) Provides custom patterns for Thick/Smart, thin, Service oriented apps. Patterns are Entity object based, POCO and Self Tracking Entities based.
8) Provides flexibility to replace any other OR modeler with Entity Framework if used with POCO pattern.
9) Has emerged as a uniform framework from Microsoft for designing DAL and interacting with Database.
10) Best suited for Enterprise wide DAL implementation for apps connecting to multiple disparate data stores.
However the custom entities approach would only have strengths in #8, with slightly lighter object model that comes at the cost of manually supporting other aspects.
The event kicked off with an opening keynote jointly presented on April 11, 2011 by Steve Ballmer, CEO, Microsoft and Kirill Tatarinov, Corporate Vice President for Microsoft Business Solutions. They unveiled Microsoft's vision to take Microsoft Dynamics ERP solutions to the cloud and presented the first look of the new Microsoft Dynamics AX 2012 release. Kirill Tatarinov highlighted Microsoft's vision for business solutions and the need to innovate for taking business to a new high. Steve Ballmer shared his insights on what the future holds for cloud and how Microsoft is inventing new and better ways to connect, work and be entertained. As an example, he cited about Microsoft Dynamics CRM - "It doesn't just work with Outlook, it's in Outlook!" and echoed the main benefit of Microsoft Dynamics - easy to use being familiar to Microsoft Office...
With this high note, the event proceeded with multiple business and technical sessions while the expo floor was buzzing with action from over 200 partners. While I walked the expo floor, I noticed that barring ourselves and a few others, most of the partners were boutique shops focusing on Dynamics implementations. This re-affirmed the strong need for a global SI like Infosys to be the partner of choice for Microsoft Dynamics implementations for Global multinational companies! Also, with Microsoft looking to up the ante in the SaaS based application space with its CRM and ERP, we firmly believe that the set of pre configured solutions (ERP-in-a-box) from Infosys will begin to see rapid traction riding on the Microsoft Dynamics platform.
Across the 4 days at Convergence, we had hundreds of visitors at our booth to gather insights into our Microsoft Dynamics capabilities and micro-vertical solutions while they took part in the xBOX raffle by playing the prize wheel and amazed by the gigs of our magician. We also had a host of planned meetings at our booth with our customers and prospects.
We also networked with Microsoft senior executives across industry verticals and business functions, to identify solution co-development and joint business development opportunities.
To sum it up, it was a great experience for the Infosys team at Convergence 2011 with two of our customers nominated as finalists for Customer excellence awards, strategic discussions with Microsoft senior executives and fruitful discussions with our customers and prospects!