Yet Another VS2010 Overview June 18, 2010
Posted by codinglifestyle in ASP.NET, C#, Parallelism, Visual Studio 2010.add a comment
Today I attended a mediocre presentation by Paul Fallen which looked stellar compared to the atrocious overview put on at the Galway VS2010 Launch Event. Paul had the look of a man who had seen these slides many times and glossed over them at speed. In fairness, he was using the same presentation deck I’ve seen since TechEd 2008. I think we had all seen several flavours of this overview by this time, so nobody seemed to mind. Below are the few snippets of information to add to the smorgasbord of other snippets I’ve gleaned from other talks of this nature.
Please click here for more comprehensive posts earlier on VS2010.
Here is the VS2010 Training Kit which was used in the demos.
- Common Language Runtime
- Latest version is CLR 4 (to go with .NET 4).
- Previous version of CLR 2 encompassed .NET 2, 3, 3.5, 3.5SP1
- Implications
- App pool .NET Framework version
- Incompatibilities running CLR frameworks side by side within same process
- Think 3 COM objects accessing Outlook all using CLR1, 2, and 4
- Managed Extensibility Framework (MEF)
- Library in .NET that enables greater reuse of applications and components
- VS2010 & C# 4.0
- IDE
- WPF editor – Ctrl + mouse wheel to zoom. Handy for presentations
- Box select (like command prompt selection)
- Breakpoint labelling, import/export, Intellitrace (covered below)
- Code navigation improvements (Ctrl + , and Ctrl + – for back)
- Call Hierarchy
- Allows you to visualize all calls to and from a selected method, property, or constructor
- Improved Intellisense
- Greatly improved javascript intellisense
- Support for camel case
- Can toggle (Ctrl + Space) between suggestive and consume first mode (handy for TDD)
- Test run record, fast forward
- Better multi-monitor support, docking enhancements
- Tracking requirements and tasks as work items
- WPF editor – Ctrl + mouse wheel to zoom. Handy for presentations
- Better control over ClientID
- Routing moved out from MVP to general ASP.NET
- Optional and named parameters
- Improved website publishing, ClickOnce (see prev. posts)
- IDE
- Parallelism
- Pillars
- Task Parallel Library (TPL)
- He didn’t touch at all on the new task concept
- Parallel LINQ (PLINQ)
- These are the extension methods to LINQ to turn query operators in to parallel operations.
- var matches = from person in people.AsParallel()
- where person.FirstName == “Bob”
- select person;
- These are the extension methods to LINQ to turn query operators in to parallel operations.
- System.Threading significant updates
- Coordination Data Structures (CDS)
- Lightweight and scalable thread-safe data structures and synchronization primitives
- Task Parallel Library (TPL)
- Toolset
- Debugger: record and visualize threads
- Visualizer: View multiple stacks
- IntelliTrace – new capability to record execution, play it backwards and forwards, even email it to another engineer and have them reproduce the problem on their box
- Other
- Eventual depreciation of ThreadPool as higher level abstractions layer atop toolkit?
- Unified cancellation using cancellation token
- Pillars
- Dynamic Language Runtime (DLR)
- New feature in CLR 4
- Major new feature in C# 4 is dynamic type
- What Linq was to C# 3.5
- Adds shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code
- Big boost working with COM: type equivalence, embedded interop, managed marshalling
- Windows Communication Framework (WCF)
- Service discovery
- Easier to discover endpoints
- Imagine an IM chat program or devices that come and go
- REST support via WCF WebHttp Services
- Available in the code gallery templates
- Service discovery
A day with The Gu! MVC 2, VS2010 and ASP.NET v4.0 September 29, 2009
Posted by codinglifestyle in ASP.NET, C#, jQuery, linq, Visual Studio 2010.Tags: ASP.NET v4.0, beta, MVC, VS2010
2 comments
Yesterday I went to Dublin to attend a talk by Scott Guthrie. I knew from reputation Scott was a good speaker so it was great to see him in action. I think most of the Microsoft development world is familiar with Scott’s blog. I’ve exchanged emails with him in the past and he has always done a great job following up. He is a very down to earth guy, very at ease at the podium, and very comfortable the material.
We started the talk with a beginner’s look at MVC 2 and then looked at .NET v4 and VS 2010. Some of this information was a recap of TechEd (see my earlier post), but there was plenty of new information which I’ll recap here.
MVC 2
Scott’s talk was about some of the improvements of the next version of MVC which will be baked in to VS2010. But thankfully, he covered the whole concept in a very demonstration-oriented way. He built upon each concept in a way that left me with a good grasp of the basics.
First, he reiterated that webforms is not going away. MVC is just an alternative presentation layer built upon the same core .NET libraries we know and love. Because there is no designer, no .NET controls, and no code behind (as such) you are much more in control of the generated HTML.
What MVC offers is that control, URL mapping, js integration, and testability. If you’ve ever worked on a messy web app and wished for more structure MVC may be for you. It offers a clean separation of your data layer (model), your html (view), and your business logic (controller).
Right, enough of this verbose carrying-on, time for bullet points!
· MVC 1 was an extra for VS2008 built on ASP.NET v3.5. MVC2 will be baked in to VS2010 and built on ASP.NET v4.0. It will be backwards compatible with MVC1 apps so upgrades should be a snap.
· Controller
o URL Mapping – this is not just a cool feature but fundamental to MVC
§ http://localhost/galway maps to a controller class called galway
· .index is the default action method
§ http://localhost/galway/hooker maps to an action method inside controller Galway
§ http://localhost/galway/hooker/beer maps to the action method hooker and passes the string parameter “beer”. Note this is an alternative to query string parameters.
· These parameters can be strongly typed to string, int, even classes
§ Routing rules go in to gloal.asax.cs
· Operates like an HTTPHandler but is baked in to ASP.NET
· Order routing rules as you see fit. One falls through to another and ultimately to a default
· Can use regular expressions and constraints in your rules
o We can start playing with a controller without a View or Model and directly return some html from controller (think webservice)
o Controller action methods can return an action result type to return a View, redirect, etc.
o To communicate with View we can
§ store information in a ViewData[“key”] dictionary to pass to View
§ store information in a Model and pass this class to View
o Action Filters decorator attributes can be specified on the controller class or an action method to specify which roles / authorization required to use
o Tip: Use a service layer to keep direct data layer queries out of controller
· View
o Offers separation of UI from business logic and just renders the UI
o Remember, no designer or ASP.NET controls. Just you, html, and <%inline code%>.
o HTML. Helper with many built-in templates to generate common controls like checkboxes and textboxes with validation
§ Create your own View templates to have custom scaffolding like a table for a DB list
o Html.EditorFor gives Linq type intellisense to meaning we aren’t binding to a “string” in our model
§ Smart in that Booleans render as checkboxes, etc.
§ EditorTemplates can be used to custom render anything can be shared across entire site or used for just one View
o Html.DisplayFor gives read-only view of data
· Model
o A data entity with logic.
§ Can be LinetoSQL, ADO.NET, your own entity class, whatever
o Can decorate properties with attributes to specify common validators
§ Required, range, etc.
§ Very powerful, dynamic, should greatly ease pain of validating form data
§ Automatically adds a CSS class you can customize to get a red background, whatever
§ Can have server and client side validation
· Client side requires an extra js plug-in but worked seamlessly in demo
· Unit testing is crucial component of MVC and a test project is automatically created for you with every MVC website
o Use AAA method
§ Arrange
· Create a controller
§ Act
· Get the result of (controller.Index(0) as ViewResult)
§ Assert
· Assert if result.IsNotNull
o Dependency injection
§ In the constructor pass DB service layer or fake data. Use an interface for flexibility.
VS2010 & .NET v4.0
· Beta 2 out shortly
· IDE improvements
o Ctrl-, – quick nav via types
o Highlight all references
o Tip: Download CodeRush Xpress for these features in VS2008)
· Better intellisense support
o camel case (i.e. DB matches DataBind)
o Matching (i.e. bind matches DataBind)
o Consume first mode for TDD (test driven development)
§ Ctrl + Alt + Space to toggle
o Much improved javascript support
§ XML documentation (place under function()) for better intellisense for your own libraries
· Debug History and dumping a crash covered again (see previous post)
· .NET 4 is a new CLR unlike 3.0 and 3.5
o In IIS you will see v4.0 as a selectable framework
· Upgrading to VS2010 hopefully just changes solution file (like VS2005 > VS2008) so painless enough to upgrade
· Multi-target support from .NET v2.0 on up
· Lots of project templates including a new online template gallery (web starter kits?)
· Controls to have ClientIDMode property
o Static – is what it is. Call it “bob” and you are guaranteed to get document.getElementByid(“bob”)
o Predictable – new default… no more ctrl001_ prefixing
o Auto – current
o Inherit
· CSS rendering support
o Big upgrades including alternatives to tables for .NET controls
· ViewState – off by default. Force developers to think when we really need it.
· URL routing like MVC for WebForms (connotical)
· SEO (Search Engine Optimization)
o Page.Description and Page.Keywords to generate <meta> tags
§ Idea: Place in master page, tie-in to DB, allow client to change as required
o New SEO plug-in for II7 will crawl site and indentify issues that reduce search relevancy
§ Can increase search traffic 30-40%
· ScriptManager support CDN allowing you to specify URL for AJAX and jQuery direct from http://ajax.microsoft.com. Will actually phantom redirect to very local source but browser histories across many site will use standard Microsoft url meaning high probability of being cached
· New controls
o QueryExtender search control – search a grid
o Chart control
· Validation like MVC for GridView, FormView, ListView
o Auto reflect on class for validation decorator attributes and dynamically render validators with client and server-side validation
· Output/object cache providers (aka customizable I’m sure)
· Pre-start application
o Keep your application up, cached, and ready vs. IIS default behavior which shuts down when not in use
· Performance monitoring
· <%: Html encoded string %>
· Deployment (see previous post)
Well that wraps it up. Please see my earlier post from Tech-Ed and download my PowerPoint presentation which covers a lot of the upcoming features in VS2010.
Visual Studio 2010 and C# v4.0 Technology Preview Presentation April 29, 2009
Posted by codinglifestyle in C#, Visual Studio 2010.Tags: C#, presentation, TechEd, Visual Studio, VS2010
1 comment so far
This is an expansion on my previous post on Tech-Ed 2008 which I attended last November’s in Barcelona. As a condition for attending I gave a talk to my company, Storm Technology. I put a good amount of effort to the attached PowerPoint presentation for my talk. The company has graciously allowed me to distribute it which is great because all the information is relevant and up to date. If you are giving a similar presentation and/or want a template for a good place to start you are welcome to my slides.
https://codinglifestyle.files.wordpress.com/2009/04/storm_teched2008.pptx
Enjoy!
SQL Database Publishing to ISPs June 14, 2007
Posted by codinglifestyle in ASP.NET, C#, Visual Studio 2010.Tags: export, import, isp, publish, sql
add a comment
I’m shocked and appalled I forgot to post this until now. Recently I put my personal website online and had several SQL tables to import. Like most ISPs, mine had a query analyzer sufficient for creating tables. Now, if only I could generate the INSERT statements for my existing data. Enter the SQL Database Publishing Wizard. After some googling I found ScottGu’s blog which detailed exactly what I was looking for.
This nice add-on hooks in to the Server Explorer in Visual Studio and allows you to export your DB, or selected tables, as a .SQL file. You can open this in notepad and cut and paste it in the query analyzer to import both tables and data.
Fantastic? Not quite. My ISP strikes again! It seems the line feeds within varchar columns were lost when importing this way. Maybe you’ll have better luck but I had to persevere. So now I had the SQL file but the ISP’s import functionality was letting me down. I know! Let’s write our own!
I spent so long trying to figure out how to make the ISP do my bidding I almost forgot I was a programmer and it’s fairly trivial to write our own import function. I swiped most of the code from CodePlex who are working hard to make it easier for us to get our SQL data to our ISPs. My only change was to use a proper ASPX page with a codebehind. I used a FileUpload control in conjunction with a Button to import:
protected void _ButtonImport_Click(object sender, EventArgs e)
{
SqlConnection conn = null;
try
{
using (StreamReader sr = new StreamReader(_FileUpload.FileContent))
{
// Create new connection to database
conn = new SqlConnection(CONNECTIONSTRING);
conn.Open();
while (!sr.EndOfStream)
{
StringBuilder sb = new StringBuilder();
SqlCommand cmd = conn.CreateCommand();
while (!sr.EndOfStream)
{
string s = sr.ReadLine();
if (s != null && s.ToUpper().Trim().Equals(“GO”))
{
break;
}
sb.AppendLine(s);
}
// Execute T-SQL against the target database
cmd.CommandText = sb.ToString();
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
//do something
}
finally
{
// Close out the connection
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
}
The code will read your SQL file and build up SqlCommands to execute. Simple! The only caveat is to use forms authentication or some method of protecting access to this page. Deleting it when you’re done also works. So at long last, an import function. Next time, an export function to keep a copy of my data safe and sound in my own DB.