Tom Hollander's blog

patterns, practices and pontification

Enterprise Library for .NET Framework 3.0 - what would you like to see?

Enterprise Library for .NET Framework 3.0 - what would you like to see?

We're getting ready to start the planning process for the next release of Enterprise Library which will target .NET Framework 3.0. In case you missed it, .NET Framework 3.0 is the new name for what used to be known as .NET Framework 2.0 combined with the new WinFX class libraries for WCF, WPF and WF. For more information on the name and version, check out Soma's post.

While we expect that the new WinFX libraries in .NET 3.0 will require us to make certain updates or changes to existing blocks (for example, to allow the Logging Application Block to work within a WCF pipeline), the platform change isn't going to be anywhere near as significant as the move from .NET 1.1 to .NET 2.0. This is hopefully good news for you, as it means we can focus more of our energy on improving the library in other ways.

So where should we focus our efforts? While we have a few ideas up our sleeves, the best ideas are likely to come from people who are using Enterprise Library on real applications (and if you're still reading, that probably includes you!). So don't be shy - tell us what you want!

Instead of just providing a feature list, imagine you have $100 (Australian dollars, of course) to invest in the our new release. If there's only one feature you care about, you can invest all $100 in that feature. If you want 5 new features or changes, you could invest $20 in each of those, or you could split it up differently depending on how important each request is to you (eg $60/$20/$10/$5/$5).

Please use your imagation and come up with whatever crazy suggestions you want for this new release. But to help get you started, here are a few feature areas you may want to consider:

  • New blocks (please specify what these blocks should do)
  • New providers for existing blocks (please specify which blocks and what the providers should do)
  • Integration with new WinFX features (which ones?)
  • Changes to the internal architecture (what and why?)
  • Better support for deployment or operations processes
  • Performance improvements
  • Improvements to the configuration tool (such as?)
  • Improvements to the documentation (such as?)
  • New or improved samples or training materials
  • Software factories or guidance packages to help you build blocks or providers
  • VB version of the block source
  • ...anything else?

Please limit your suggestions and your virtual investment to things that belong in Enterprise Library. The p&p team is continuing to work on a bunch of other projects such as our new Software Factories for scenarios such as web services, smart client and web development - but these are all different projects to Enterprise Library (even though many of these will leverage EntLib blocks). Enterprise Library is - and will remain - a library of general purpose application blocks for common development scenarios.

  • Definitely I would like to see more snippets, and GA Recipes. The EntLib is mature enough to have its own DSL integrated with VS and  EntLib Configuration console. I would also like to see more ASPECT/ObjectBuilder features similar to the CAB. I’m not sure if the LINQ will be available with .NET 3.0, but if it will I would like to see EntLib makes use of it.
    What else? Cache provider for ASP.NET cache.
  • - 80$ for the integration in the Visual Studio IDE
    - 20$ for an easy way to strong-name the assemblies
  • Lets think outside the box: I would like to see an attempt to create .NET on Rails using either VB or C#.
  • Definitely agree with Larry and Stuart.

    I'd like to see more support for Oracle's ODP.NET in the Data Access Application Block.
  • - Default behaviour for configuration-less logging/tracing.  I've had to replace Logger and Tracer with a "default" version which disables logging and tracing when no configuration is present.

    - Best practicse guidance on how ASP.NET Health Monitoring integrates in a multi-tier application.

    - A move away from GotDotNet as far as the message board is concerned.  http://forums.microsoft.com/msdn has a much better setup for discussions.  The Codeplex discussion board features aren't that great either.
  • $50 - generics to make creating your own blocks easier, specifically hooking into the config console (this surely could be made easier).  It seems to be way too much copy/paste code
    $50 - documentation
  • I agree with Mario.  $100 for improve Software Factories.  It still takes entirely too long to develop an app, primarily because it takes forever to write a good business layer.  Strongly Typed Datasets are still no place for business logic.
  • I like to see:

    80%)  In Integration and Automatization into Visual Studio of EntLib and Software Factories (Need for automatization is urgent for developers, we can´t learn to do the same thing in a diferent way every two years for the same promises (integration, performance, etc.), if not never we do engineering).

    20%)  In better documentarion and How to apply All App Block in Enterprise Apps, specially complex AppBlock like CAB.

    This is my opinion
  • $20 for a comprehensive "user settings" application block that can work with both ASP.Net and WinForms and anything in WinFX. It must support a hierarchy, even if that simply means parsing "/" or "\" like the old VB 5/6 could do for user settings, but handle more complex settings via serialization - or the way it [is/can be] done with ASP.NET server controls. System and application settings should be separate from per-user and per-form (or, per-from-per control) settings. It should have a modest learning capability (if something is different x, e.g. 3, times in a row, make it the new default). System settings should be useful to store settings for Windows Service configuration tools.

    Application settings should be useable under ASP.Net and winforms (e.g. centrally managed) and do things from "where are the templates / default files" to "what color scheme to you want". It should handle both local XML files (winforms) and database. If a winform application is using SOA or web services, how about something that will work easliy with one? And forget any stupid ways of storing configuration based on the version of an application for winforms/FX - that is an insult to users who only use the current version. Enough already of that nonsense.

    $5 for an RSS application block, client and server side. Something that just drops into any application and will work - something that does all the heavy lifting and is close to "roll your own" with 100 lines of code. Or less. Something better, far better, than a few all-too-general framework classes. Like the original SQLHelper, give me the 90% and I'll probably stop worrying about the other 10% because I'll spend all the saved time doing UI.

    $5 Notification block, that is more than just error logging. Something that can send usage and performance data, for admin purposes (like systems work like planning for scalability). Something that pushes the notifications out to the right place, and can scan data from muliple sources (I'll provide the queries), looks at a threshold or regex, and sends notifications accordingly. These can be based on a class interface / delegate (I'll provide the object & collection it works with), or an email list or whatever. HINT: It should be more workflow than error log. Unlike the workflow engine, it should be focused on triggering conditions and notifications, at a specific level, and easier to use than a general workflow engine. Multiple sources, multiple targets (ways of notifying). Maybe this could be a distant relative, in nature, to the windows notifications (the service) that was later found to be a security risk and is turned off.

    $5 for an application block, perhaps something that is a half-extension of ASP.NET and Atlas, that makes modal popup windows easier to use, when retrieving values. I have too many custom classes and scripts that are almost, but not quite, duplicates of one another. In short, a complex form needs a selection that is more complex than a single control - in winforms it means a modal popup form, often with a filter because the timesheet charge code is a hierarchy (the possibilities are in the thousands, but only dozens when you drill down). Make a few settings, like the current selection, launch select and retrieve. This needs to be generalized in an application block. It only happens a modest number of times in an application, but it far too much of a pain to do, and never quite qorthwhile enough to be an entire library "roll your own" style.

    $5 How about an application block to more generalize external storage of the USB/1394 variety? This is probably less work-related and more like "I'm tired of writing code for home use, and what is already there doesn't cut it". This should cover those key fobs, cameras, mp3 players, and so on. Something that can make sense out of them in ways beyond what XP and Windows Explorer does. The software that comes with these things knows nothing about anything else, and what's worse, there is nothing that works with .NET at the "programable" level. So we need an application block for this - something that goes beyond files, and does the basics rather than the be-all-end-all of WinFS that won't be a simple-to-use library either.

    $5 An application block for simple image processing - something far below those expensive libraries and an order of magnitude - no 2 - easier to use for developers. The 80-20, no, 90-10, no 95-5 rule. What do people need? How about simple cropping, sharpening, softening, color correction (e.g. fix florescent lights), wrong-f-stop fixing and similar non-esoteric effects. It should be limited to, when used in applications, a few controls and things even my mother can understand. If it's fancy, forget it - that's what the 3rd party stuff is for. I want something easy that can fit into a modest application block. If it can work with still captures from a business video conference, or a scanned document, we're really talking close to what's needed. It should take in common files, almost all of which will be JPG, and spit out something similar. Forget the weird stuff.

    I'll think some more on how to spend the rest of the $100. I need to take a more in-depth look at what's in the newer parts of .NET and still missing, now that you're asking.
  • 1. Built-in Sql Configuration Source (instead of an example) with the ability to have multiple applications/web sites with the same section names

    2. Ability to assign a configuration source to a particular section like the "configSource" attribute allows you to assign to an external file (so you could have multiple configuration sourcecs in use within one app/web config)

    3. Extend the default database trace listener to have the ability to store more business type data through transforms so we don't have to always create a custom database trace listener to do this

    4. Have the timestamp logging configurable to use UTC or Local

  • Easy to use, less configuration, datagrid tied up pareto charts and graph. Put all the data on the datagrid tie it up to another graph control and to have it graph in configurable pareto charts (pie, bar, etc...) without the needs of using/configuring 3rd party reporting tool.

    Easy embedding Macromedia Flash or any movie file format on both web and client application.

    Less configurable control that converts the current screen into adobe, work, powerpoint... and datagrid conversion to excel.
  • Tom Hollander from the Microsoft patterns & practices team just announced that they are in the planning...
  • What is the best way to tell you what we'd like to see? Do people have to reply to the blog?
  • Tom,
    it would be nice if EntLib was faster and so closely integrated with the Operating System. It's a shale to see there so many things that are only accessible from the Win32 API. So, if the goal is to provide every developer and consulting company, like Avanade, a framework we can use and make adopted to large corporation of big business, you have to keep every thing that is fast in Windows and keep what is efficient in term of calling any functionality.
    Exemple: the security APi in Win32 is anightmare. The .NET land is also , a nightmare. Sorry for that. But thats 'the truth.

    I'm sorry to talk, again about that, but the MFC & ATL is the living proff that the best framework are the one, whoi can live and enhance, year after year, by considering the people who is using it, really, with respect.

    Now, the marketing is going to do big mistake...
  • 1. A Forms Authentication block. This includes authentication, ticket manipulation, integration with the Identity and Principal, etc..
    2. Enterprise Architecture block. I'm thinking of the systems that have to link to workflow engines like Biztalk. They need endpoints, aggregators, sequence.
    3. Business components block. Something that helps produce better business services, entities, workflows etc.. Could be demonstrated with a new Global Bank (or is it AIB)
Page 2 of 10 (145 items) 12345»