Enterprise Library v3: The Plan


Thanks again to everyone who shared their ideas and priorities for the next release of Enterprise Library in the posts and surveys we ran earlier. We went through all of the responses, and also considered a bunch of additional factors such as technical complexity, maturity of the domain, and alignment with other deliverables and products. We used all of this data to put together a plan for what we believe we can – and should – deliver to make everyone as happy as possible (Microsoft is such a Utopian place 🙂


In p&p, there are a few major milestones that each team needs to pass in every project. The first of this is called the Vision/Scope milestone. This is where we put a stake in the ground about what we plan to deliver and why. We need to impress our management team enough to give us resources (meaning people and dollars) to let us move forward on the project until the next milestone, which is called M0. (Unlike other teams in Microsoft, we generally don’t have other “M” milestones, like M1 or M2. I’ve suggested we call our milestone just “M”, but for some reason nobody jumped at my idea :-). At M0, we need to have a much more detailed plan describing what we will deliver by when, and what it will cost. At this milestone, if all goes well, we are given the resources to complete the project.


The other day we got through the Vision/Scope milestone for Enterprise Library “v3” (note we haven’t worked out exactly what we’ll call it yet). This means we are now able to start development, so you can expect to see a bit more activity (and eventually some early code drops) on the Enterprise Library Community site. Since we are not yet at M0, we can’t promise anything yet – but I’d be happy to tell you what we’re planning as of now.


If you’re familiar with the agile development processes we (try to) follow in p&p, you’ll know that features are prioritized and put into a backlog, which we’ll work through until we run out of time, money or sanity. We don’t know how much we’ll get through now (which is true for any project – and anyone who pretends to know is lying :-), but having a prioritized list and ensuring the product is always in a shippable state allows us to ship as much value as possible within the constraints of our project. We also have a “minimal credible release” line, which is the list of features which we believe we need to ship before anyone will find the new release worthwhile.


As at our Vision/Scope milestone, the minimal credible list line includes the following features:



  • Medium Trust support
  • Manageability extensions for configuration (WMI, Group Policy)
  • Simple Strong-naming
  • Mini-Factory for building your own blocks and providers
  • Validation Application Block
  • Exception Handling: WCF integration (exception shielding / fault mapping)
  • Logging: WCF pipeline integration
  • AuthZ: WCF Pipeline integration

Once we get through this list, we have prioritized a backlog of additional features. Currently this list looks like this (most important at the top):



  • Config Tool: Embedded in the Visual Studio IDE 
  • DAAB: SQL Everywhere support
  • DAAB: Richer transactions support
  • Docs: More code samples
  • Docs: Detailed documentation for ObjectBuilder
  • DAAB: Batch support
  • Config Tool: Edit AppSettings and other .NET settings
  • Config Tool: Environmental Overrides
  • Config Tool: Encryption Support
  • Config Tool: Improved type loading behavior when assemblies can’t be found
  • Logging: Rolling flat file TraceListener
  • Logging: Local or UTC timestamps in formatted log messages
  • Logging: Reflected property tokens
  • Ability to create custom production installs
  • Ability to create custom developer installs
  • Exception Handling: Localization of exception messages
  • DAAB: ODP.NET provider support

There are a few more things to say about this list. First, you may notice that the list isn’t in exactly the same order as the results from the prioritization survey – and that some highly requested features aren’t on the list at all. Most obviously, none of the new application blocks that were requested have made the cut other than a Validation Application Block. This is for a few reasons. We looked very closely at the Workflow and Business Rules areas, and we felt that with Windows Workflow Foundation coming out very soon, it was too early for us to know exactly what additional value we could provide on top of the new platform capabilities. That said, the results from the survey have demonstated how important this scenario is to so many of you, and we have already started researching this space in more detail to consider how and when we can provide additional guidance (which may be in a future release of Enterprise Library, or may be in some other form). Some of the other requested blocks did not have so much technical uncertainty, however the amount of effort required to build new blocks would mean that if we bit off too many of these, we would not be able to implement a critical mass of the other requested features. So for now the plan is to focus on the most important block that we believe we can be successful with now (Validation), and to address as many of the other non-new-block features as possible.


The other very important thing to understand is that the feature list above is not final. Throughout the project we expect to learn a lot more about your priorities and our ability to deliver, and we will reprioritize the list accordingly – and I’ll be sure to keep you informed as we do this. But for now I’m very excited that we have our initial list and can start work, and very confident that you’ll continue to let us know if we’re headed down the right track.

Comments (67)
  1. After getting through the Vision and Scope for the next release of Enterprise Library v3, the Patterns…

  2. Guy Burstein says:

    What is the timeline for Entlib v3? Will it be released before Visual Studio "Orcas". The reason I’m asking is to know if there are any plans for DAAB improvements for LINQ and ADO.Net Entity Framework.

    Keep up the great job!

  3. phoenix says:

    As SQL Server Everywhere is on the list does that mean you will have a Click Once version that doesn’t need admin rights on the desktop?

  4. От patterns & practices подготвят нова версия на Enterprice Library. Няколко интересни…

  5. El Bruno says:

    Good news 😀 Initial plan for Enteprise Library v3 (9/26/2006 9:15:31 PM) You’ve told us what you want,

  6. El Bruno says:

    Good news 😀 Initial plan for Enteprise Library v3 (9/26/2006 9:15:31 PM) You’ve told us what you want,

  7. David Edwards says:

    Simple request – please version the event source names that Enterprise Library uses so we can manage installation / unistallation of EL2 and EL3 cleanly.

  8. olubisi akintunde says:

    beautiful stuff

  9. mwherman2000 says:

    With the exeception of the Validation Application Block, the rest of the release looks like its all "maintenance". It’s too bad.

    It appears like MS is decommitting from the Enterprise Library (or it is being left to fill "cracks and gaps" in the upcoming product line).

  10. Chris says:

    Where, THE HECK, is Key Management??!! How about providing some ENTERPRISE VALUE!!??

    Medium Trust support – Bogus

    Manageability extensions for configuration (WMI, Group Policy) – Questionable

    Simple Strong-naming – ??

    Mini-Factory for building your own blocks and providers – Bogus

    Validation Application Block – TOTALLY BOGUS

    Exception Handling: WCF integration (exception shielding / fault mapping) – OK

    Logging: WCF pipeline integration – OK

    AuthZ: WCF Pipeline integration – OK

  11. Back in June, the Microsoft patterns & practices team began soliciting feedback for what features…

  12. Miles says:

    Chris – How can you call something "Totally Bogus" when what that something is has yet to be clearly defined? Where exactly do you get off judging something before it’s even fully described; much less designed, built or implemented? How long have you been developing on a professional level? I urge you to THINK before you speak. Grow up, then post.

  13. The Patterns and Practices group at MSDN have released their initial plans for Enterprise Library v3.In

  14. theCoach says:

    I could be writing from total ignorance, but I was unable to find a way to do Asyncrounous Database calls in the EntLib?

    Is that true? If so, is that being addressed?

  15. Guy Burstein says:

    Creates an exception handling policy for Enterprise Library that replaces an .net exception with a fault contract exception.

  16. Keith Elder says:

    Tom,

    I have to say that I am somewhat disappointed in what you guys have put together as the "list of features which we believe we need to ship before anyone will find the new release worthwhile".

    I participated in a lot of surveys, posted feedback etc. and I honestly can’t see where anything we’ve been asking for is in this "worthwhile" list.  It is hard to say exactly what value these will provide us since they are just bullet points, but there have been numerous numerous requests to embed the config tool into Visual Studio and that ONE thing is a huge value add.  Yet, it is on the bottom list.  

    Are you guys putting things on the lists in order of what would be fun for the team to engineer and build or are you trying to solve for real world enterprise problems?  The only thing on the top lists that makes sense is the Validation Block, although I am not sure if this is somewhat of a "business rules block" or what.  

    I just don’t feel like you guys are *really* listening and I think that is why Chris above posted what he did, although not in the most polite manner.

    I think we would be better off if p&p simply posted Enterprise Library to CodePlex and let the community build and vote on what goes into the next release than going about building it this way.  I guarantee you that you would already have the Rolling File Logger.  Why?  Because someone already wrote it and now it is an addon instead of getting baked back intp EntLib.  It doesn’t have to be that way.  Put EntLib on CodePlex, and let it evolve.

    My $.02.

    TheElder

  17. SpookDeJur says:

    After working with Enterprise customers (mostly big finincials) here is my list of priorities (from the list above) (High to Low):

    * Config Tool: Edit AppSettings and other .NET settings

    * Config Tool: Environmental Overrides

    * Logging: Rolling flat file TraceListener (Community version is ok)

    * DAAB: ODP.NET provider support (Our team hacked up the existing on to make this work, features that would be handy:

    • Associative arrays

    • Bind arrays

    • Large Objects (LOBs)

    • REF Cursors

    • Oracle XML types

    * Config Tool: Embedded in the Visual Studio IDE

    The rest are pretty nice too. My .02.

  18. zq3 says:

    Enterprise Library Plan

  19. Chris says:

    Wow, you folks are sensitive! I didn’t think that was too agressive. Look, I am steeped in the EL, and I have had to use it in ways that most folks won’t use it (for example: disparate configuration sources for the same application), and I also work for a true enterprise level software company. Medium trust is an issue that comes from the hosted environment – this is NOT an Enterprise concern. A Validation block is NOT a pressing concern for the Enterprise. Mini-Factory – Why? That is what ObjectBuilder is for. Thus my responses . . . anything WCF = good. Key Management is a HUGE Enterprise level concern and getting an Enterprise level solution is a 6 figure proposition.

    Look, comments are for commenting. I didn’t curse, and I didn’t personally assault anyone. I value GREATLY the EL and what it does, but this is a disappointment. Calling a disappointment "bogus" is hardly strong language or disrespectful.

  20. seventhsense says:

    great Job!! Best Wishes…

  21. tomholl says:

    I thought this post might generate some interest! 🙂

    To briefly respond to some of the comments:

    Guy – yes this release will come before Orcas but after .NET 3.0. We don’t have a firm schedule yet but early 2007 seems likely.

    mwherman2000 – This release will be bigger than the June 2005 maintenance release, but smaller than the January 2006 .NET 2.0 rewrite. Don’t equate this with decommiting – but with so many other things going on in p&p this year around software factories, our budget is limited this time around.

    Chris – sorry you aren’t ecstatic about the priorities, but they are generally based on the survey results. The Validation Application Block received a lot of votes, and key management improvements did not. But I have no problem with you sharing this, and I didn’t find this offensive.

    theCoach – No we don’t provide any support for async calls through DAAB, and it isn’t currently on the feature list.

    Keith Elder – acually the priority lists are sorted from most to least important, so the embedded config tool is right at the top of the list (but outside the minimal credible release line). Don’t get too caught up on the short size of the first list – I fully expect us to make some good progress down the second list. As for putting it on CodePlex, that would be a great discussion for another day 🙂

    Tom

  22. Chris Kinsman says:

    Different Chris but I find the mini-factory useful.  Making it easier to plug my own blocks into the configuration subsystem is valuable, even at an enterprise level.  Although I tend to have similar thoughts about validation.  It belongs in the Smart Client Software factory or the Web Client Software factory, not EntLib.

  23. Se ve muy interesante el alcance identificado para la nueva versión de Enterprise Library. Se piensa

  24. Mike Griffin says:

    What happens to EntLib now that the new kid on the block (ADO.Net Entity Framework) is strolling into town?

  25. TSHAK says:

    Chris (not that "different" Kinsman guy), you have to understand that enterprise key management is hard to do right. There is a reason why many solututions today are very expensive. Many are also hardware based. EL plugs into these solutions just fine, so if that level of key management is needed, EL definitely supports it.

  26. Jimmy Zimms says:

    RE: Medium trust is an issue that comes from the hosted environment

    Not always. Haven’t you heard of principal of least privileges before? In many enterprise environments this is a requirement (actually I would expect that in most enterprises it is the norm but i digress) especially when they deal with financial and sensitive data. This is especially true with the large insurance and broker transaction systems I’ve worked on.

  27. Enterprise Library 3.0の拡張プランについての情報です。リリース次期は、わかりませんが楽しみですね。http://blogs.msdn.com/tomholl/archive/2006/09/26/773213.aspx

  28. Wes says:

    The list above sounds like Avanade’s ACA.NET 4.1 (EL plus batch and validation), Avanade’s Visual Studio Integration Pack, and Olaf’s extensions (AppSettings and other .NET settings, environment overrides).  Nice to see that what we have already been using for months is going to become standard in EL.

    Still no mention of a MySQL provider, you got SQL and Oracle, why not MySQL?  Oh wait, Microsoft cannot support open source, my bad.  Not like it is difficult.  Oh well, I have my own.

  29. n8 says:

    Those clamoring for MySql support (above) should realize that EntLib already supports any OleDb compliant data provider.

  30. Lae says:

    Yeah,The Enerprise Library V2 is very good.

  31. jack.zuo says:

    very good!

  32.   別誤會了,只是 Plan 而已,但是也很讓人興奮了 只是 看到 每個人對需求 投票的結果  Medium Trust support  Manageability extensions for…

  33. CausticMango says:

    Please, please, please make sure I can drop in my own logging provider (Trace is useless and the one in the Enterprise library is poorly concieved) — let me plug in log4net even if I have to write an adapter class/factory.

    I second key management — most of the rest of the stuff I don’t care about at all.

    Better yet, how about you forget about half-baked "enterprise" libraries and give us a real app server/container?

  34. Chris says:

    I understand that the EL 3.0 stuff is based on a survey – I took it. But I ALSO understand that the request went out to the masses as a link from this blog. There is not much "Enterprise" screening going on there to ensure you are getting responses from the target audience. I think the proof is in the Medium trust issue – you are addressing a need, that, although conceptually valid, is not a concern of the Enterprise. (I think the Medium trust issue really came to your attention as a result of the CSK project. i.e. Not an Enterprise.) I would hazzard a guess at the same response towards the Validation block.

    TSHAK – You’re DARN RIGHT I understand how hard it is – if we don’t buy it, I’m the guy who gets to write it. I understand all too well how difficult it is going to be, that is why I am clamoring for MS to belly up the bar and provide some real value in the 3.0 release.

  35. Hugo Ribeiro says:

    O primeiro draft da nova versão da Enterprise Library foi anunciado estes dias pelo Tom Hollander.

    Tenho…

  36. Scott S says:

    Keys to what? Heck I’m not even sure what a key management block would do let alone what to use it for.

    But seriously, I like the list as is just fine.

    Seems like some persons have a very narrow view of what "Enterprise" means.  To me an Enterprise is is any business big enough to be past a single domain.

    I work on Enterprise apps almost exclusively in a highly secure environment …

    web browser bad, smart client good 😉

    … so I value the Validation Block and the WCF items the most.  Dealing with exception handling and logging across remoting has been a bear and EntLib has made it better but I’m still looking for more.

  37. Tom Hollander habla en su blog de los resultados obtenidos una vez finalizada la encuesta ¿Qué

  38. Tom Hollander’s blog にて Enterprise Library v3: The Plan という投稿がされています。早くもv3の構想があがってきていたんですね。 ざっとサポートしたい機能一覧を見てみると、

  39. loreaca says:

    Hello,

    Caching application block is the most used block in our app.

    But we need support for SQL Everywhere in order to implement offline functionality. SQL Express has to big footprint and accesing a lot of files is out of the question.

    Is this going to happen?

    Thank you!

  40. tomholl says:

    Hi Loreaca –

    We are currently planning on adding support for SQL Everywhere in the DAAB, and since the Caching Application Block uses the DAAB for the database backing store, your scenario should be supported.

    Tom

  41. Ok. We are all set, after a phase of feedback and polls here it comes the new features of the EntLib.

  42. bill says:

    Basically I don’t think the enterprise library has been got successful. I use its data access app block long ago and found that it only works well with DataSet and DataTable. Most of developers are not aware of the importance of strong type and custom class. Things will become better only after shipping of LINQ. So lots of code can be quickly developed but with is hard to maintain.

  43. dk says:

    Ask a shallow question, do you have guideline for use of enterprise library in a dll? in my case, I want to use it in an office addin. Thanks.

  44. The third session was given by Tom Hollander talking about what’s coming in Enterprise Library…

  45. Robert says:

    Adding fire to the flame:

    I don’t see how removing the Business Rules Block, the most highly recommended new feature, which you dangled in front of the community during the survey and decided to take it away. What makes you think WWF will alleviate the business rules aspect of enterprise apps.  It’s hard enough getting approval to use 3rd party tools, which is why it would be perfect if EntLib decided to manage this block.  It would go hand in hand with the Validation Block, it only makes sense.

    I am dissapointed.

  46. tomholl says:

    Hi Robert –

    We’re not at all sure that WF will solve all of these problems – but at this time, we’re not sure that it won’t either (or more likely, it won’t solve all of the problems but we don’t yet understand the nature of the "gap"). So I’m sorry if this looked like "dangling and taking away" – actually the request for this block came entirely from the community, and I wanted to make sure we gave it the attention and visibility it deserved. As I mentioned, we aren’t ignoring the opportunity – we just don’t think we can be successful with it in the upcoming release of Enterprise Library.

    Tom

  47. FredM says:

    EL3 needs prewritten OracleMembershipProvider, DB2MembershipProvider, MySqlMembershipProvider, GenericMembershipProvider, etc., to give us a real choice beyond SQL Server 2005 Express to hold our ASP.Net users and roles database (aspnetdb).  If I’m forced to keep my application tables in Oracle or DB2, then why can’t EL3 simplify creating and maintaining the necessary aspnetdb database in some other RDBMS other than SQL Server?

  48. Peter Hiemenz says:

    I’d like to see the possibility, to dispatch messages on severity to different listeners.

    Example:

    I’m using 3 listeners for logging:

    1. "Debug output" listener logs all messages from error to verbose so I can follow the flow of the programs.

    2. "Event Log" listener logs all errors and warnings of the local programs.

    3. "Database" listener shall log mainly errors of all programs on all systems belonging to the software system.

    Different programs or services are using different categories – one category per program/service. So it’s easy to restrict logging to particular sources without modifying the categories.

    Maybe similiar like this:

     <categorySources>

       <add

            name="Playout Player Category"

            switchValue="All">

         <listeners>

           <add name="Event Log Destination" switchValue="error+warning"/>

           <add name="Debug Output Destination" switchValue="all"/>

           <add name="Database Destination" switchValue="error"/>

         </listeners>

       </add>

  49. Peter H says:

    EntLib Config tool:

    To keep configuration files readable, I usally keep sections in separate files, e.g connection strings, logging and exception handling configurations and others more.

    Currently, when I use the configuration tool, it can read my configuration fine – but when I save it after modifications have been done, it writes all configuration data in one file instead of keeping the original file structure.

  50. Colin Bowern says:

    I’d also like to see EntLib move off GotDotNet to CodePlex and MSDN Forums.  The forum move alone would be appreciated as the GDN ones are so limited in posting.

  51. kmacdonald says:

    I would love to see a "Data Object" application block.  This would be an instance and collection class that wraps data that would normally be persisted in a table.

    Capabilities:

    1.  Multiple data provider support (database, XML, etc.)

    2.  Ability to save, update, delete (propogate thru to data provider)

    3.  Ability to maintain prior state of properties in memory.  i.e. when Data.Value1 is updated, Data.Value1X maintains the last persisted value

    4.  Upon update ability to save prior state to data provider

    ….

    etc

  52. Thomas says:

    One feature I’d like to have is the ability for the Caching Block to seemlessly work with the ASP.NET cache if it is available or use its own internal store if not. That would greatly increase the value of the Caching block and make code more portable.

  53. 感動吧… Enterprise Library 3.0 CTP 版本 已經推出了. 看起來 進度上 應該會在明天 正式版 釋出 Link to patterns &amp; practices –

  54. Hugo Ribeiro says:

    O primeiro draft da nova versão da Enterprise Library foi anunciado estes dias pelo Tom Hollander. Tenho

Comments are closed.