Enterprise Library vNext – what would you like to see?

So now that Enterprise Library has been out for 2 weeks, I'm assuming that you're all experts now :-). So what better time than now to start thinking about what you'd like to see in vNext. The next version will target .NET Framework 2.0 and Visual Studio 2005 ("Whidbey"), and this alone means we need to rework all the blocks to make sure that they use any relevant new features and adhere to the best practices for the new platform. However we're also interested in your thoughts on what else we could do to improve the next version of Enterprise Library. Some of the main categories for feedback are:

  1. Asset specification or Library-wide changes (what could be improved across all blocks?)
  2. Whidbey-releated changes (which specific Whidbey features do you want to make sure we leverage, and how?)
  3. Changes or improvements to existing features (are there any features we currently support that could be done better?)
  4. Brand new features in existing blocks (what new features would make the blocks more useful for your scenarios?)

BTW we are also thinking about adding some new blocks to the next version of the library, but our current priority is in working out how to move the existing blocks forward. There will be some opportunities to talk about potential new blocks later on, but for now it would be great to focus on the four points listed above. Please don't ask for new blocks in this forum now! 🙂

This posting is provided "AS IS" with no warranties, and confers no rights.

Comments (92)
  1. J says:

    <i>Asset specification or Library-wide changes (what could be improved across all blocks?)</i>

    Easy way to manage multiple instances of config files. Same app, different values per environment. (One set for Dev, another for QA, a third set for Prod, etc.)

  2. Jack Shum says:


    I’m working on PPC projects and would like to see enterprise blocks that is .NET CF friendly. If its not too much to ask.

  3. Daniel Chait says:

    RollingFileAppender equivalent – logging to a single file is not really viable for actual software

  4. I think it has to be realized that people are just starting to do Smart Clients using 2003 and most places won’t adopt VS.NET 2005 until 2006 or later. So supporting app blocks for smart clients would be nice. In just looking at the updater app block, what a mess. It’s not even close to ready for primetime. And there are other architectures for production environments that might be more successful. Such as using a controller program that reads a manifest, and builds a client "on the fly" (menus, controls for screens, etc). Another thing might be to allow developers to upload aseemblies via a controlled web interface that a production team could then manage testing and deployment. Building a non-packaged deployment solution is the ultimate goal of Click-Once, but what do we do until then? It’s really hard to sell smart clients where central IT departments lock down everything. Anything from MS that can show how this is a safe, saecure, and enterprise architecture would be helpful.

  5. Tom says:

    EntLib-compliant Smart Client blocks are in the works. But as I said, this blog posting is asking about improvements to the existing EntLib blocks.

  6. Serge Matsevilo says:

    It would be nice if you can publish the proposed features and changes on GotDotNet’s Enterprise Library Workspace. This way we all can plan for the feature.

  7. Pavel Bondarchuk says:

    Would be nice to have a visual tool which will collect the information and generate code for such classes as custom configuration settings, configuration nodes and design managers. It will simplify integration of the custom settings with the Enterprise Library Configuration Tool.

    I can see the interface similar to Enterprise Library Configuration Tool, but the output will be a set of C# (or VB.NET) files.

  8. Tom says:

    Serge – absolutely. Once we have an idea of what we plan to include we will publish the feature list on the community site. We also plan on public beta releases, to get more feedback and to help customers plan for the future.

  9. I assume you are going to use the new .Net 2.0 way of creating configuration sections to the configuration file. If not, I would like to se a PreSerailized and PostDeserialized method that you are going to call before the config section is sterilized and after it’s deserialized. By doing that, we could create our validation of the section to see if it has the correct data.

  10. Kent Tegels says:

    EntLib: The Book, teaching how to use it for those of use who learn best from dead trees followed closely by EntLib: The blockbuster movie; featuring Tom Cruise as Mat Joe and Mel Gibson as Tom Hollander. Maybe a cameo by Tom Greene to give it a bit of an "edge."

  11. DavidG says:

    How about a licensing block? Now that SmartClient is hitting the mainstream, users are going to need to build in various types of licensing (per seat, per user, expiring installations, etc). A block to do this would be handy!

  12. Erik Sargent says:

    1> A second vote for managing configuration in different environments.

    2> It may not be possible given the extensive redesign – maybe only for "simple" actions, but I would like to see the static methods for the Data Block come back. It was easier to just call SqlHelper.ExecuteReader() from anywhere in the code vs. Creating an object just to make the same call. Now that we can configure a default database, it would be even easier.

    Maybe these could just be wrappers around Data.DatabaseFactory.CreateDatabase().ExecuteReader() – would that still work? I haven’t used the new code enough to be able to tell if that would create issues.

    I understand that WinForms apps are going to use the block differently and probably get a lot of advantage from creating the database object. But most web apps don’t. You do a quick read of the data and display it. You generally do updates against individual records not complete datasets — and after the update you generally just fall back to the original read routines to re-display the data, so reuse of the object doesn’t go as far and static methods make a lot of sense.

  13. Peter Hardy says:

    I second the vote for documentation. Books great, uml models essential. Not everyone has visio and some aspects of the library can seem a bit tough without them. Also – gosh, we’re demanding aren’t we <blush> – how about a reference implementation of a windows application and a seperate one for web application? Quickstarts give you a feel for how things can be done as opposed to how things should be done.

    And the block I really pine for is the UIP. I know its still there but the EntLib treatment would really boost its appeal.

    Cheers pete

  14. dru says:

    +1 for licensing

    how about a way to see if logging permissions are set up?

    How about not requiring devenv to be installed to run the install services.

  15. Tom says:

    Dru: thanks for the ideas. Regarding the install services script, we only require devenv because we need to find the location of installutil, which we do by running vsvars32. If you don’t have devenv you can modify the InstallServices.bat file with a path to installutil, or just call installutil directly over each assembly.

  16. Joseph Syers says:

    Seeing that Fredrik Normén posted before I, I will go with something simple. A favorite button. I love the configuration tool but man I hate having to search out .config files I was at yesterday ~:-)

  17. Adwait Ullal says:

    Any plans for remoting infrastucture library ? One that will allow for "application objects (business, data, etc)" to distributed.

  18. Dominique Kuster says:

    I would welcome the UIPAB in the next release, at least I would realy like to know if it planned or just forgotten because of its lack of popularity.

  19. Inge says:

    Typed datasets have some great advantages, but they can also be a real pain where datetime and numeric fields are concerned. Such fields can be nullable in a database, but they still present a lot of problems when using typed datasets. I am not sure if Microsoft has already come up with a solution using the Nullable type in version 2.0 of the Framework. If not, it would be great if the Data Access Appliction Block could address this.

  20. Piers Lawson says:

    Another vote for the UIP. I don’t think it was quite there yet, so updating it and adding it to the Enterprise Library would be appreciated.

  21. Pete Mounce says:

    +1 for the configuration code generator.

    Also the mechanism for rotating log files.

  22. Ron Krauter says:

    >Regarding the install services script, we >only require devenv because we need to find >the location of installutil

    InstallUtil is also located in C:WINDOWSMicrosoft.NETFrameworkv1.1.4322

    Isn’t it possible to find out this location automatically?

  23. Henry Kravchenko says:

    A way to deploy using smart clients is essential. Without that support, I have no use for EL until next VS release. Thanks. P.S. Or is there a way to deploy the config files currently?

  24. Alex Fedyukov says:

    Cannot help but vote for the following blocks:

    Smart Client Offline;


    User Interface Process.

  25. Philip says:

    After doing some work with Tracing and logging the events to a Database sink, it would be nice to have a columns in the Log table for the following tracer fields: ActivityID, UserName, and MethodName, SecondsElapsed. This would give maximum flexibility for debugging and performance testing. I realise that I can modify the code myself for these features, but it’s something that I think would be usefull out of the box.

  26. Dave Veith says:

    Simplify management of multiple configurations for a single application as it passes from dev, various test environments, and prod, etc.

  27. M.J. Easton says:

    I’d really like to Entlib embracing teh cross-platform CLI implmentations, or at least a version that was a tad more cross-platform friendly.

    Yeah, I know it doesn’t have *that many* PInvokes, but it’d be great if those people without Windows could stop drooling at Entlib and join in the fun!


  28. Andy Miller says:

    All of my software has at least a component that is added to a customer’s existing ASP.NET web site. Almost all of my customers run on shared servers. Almost all of the hosts will NOT setup special permissions (outside of file permissions to the site files), or new event logs, or new performance counters, etc.

    So my request for vNext is to make sure each block can be used in this kind of shared environment.

  29. Rei Shapira says:

    Something that I’d really like to see in the next version of the security block are security providers that can write to the stores they’re connecting to.

    How about an AzMan authorization provider that could update the authorization store?

    I’m currently trying out AzMan for use as an authorization store, but I’ll have to write a brand new GUI on top of it, in light of the fact that it’s own GUI is pretty simplistic.

    So I’ll end up having a bunch of classes that I’ve written to manage AzMan, AND the security block for readonly access..

    That’s not just the case for AzMan, virtually every user / authentication / authorization store you can think of, will require the developer to write code that changes and updates it.

    Why not offer a unified way of accessing these stores?

    Just to finish on a positive note, I’d like to say that the enterprise library really rocks, and it amazes me everytime of how much thought has been put into it 🙂

  30. Pete Mounce says:

    Oh; forgot. Support for multiple configurations for different environments. For example, development, staging/testing, production. Preferably a configuration section would have a number of different subsections, one for each environment. Possible already with a typed dataset? An example would be handy.

  31. Piers Lawson says:

    As mentioned above, having the next version able to run in a reduced permissions environment is a must. For example, the fallback for the Logging block is for it to log exceptions etc to the Windows Event Log. Deep in the bowels of the Distributor, this uses EventLog.CreateEventSource which will generally throw an exception on a shared host. Could the default sink be made configurable?

  32. Johann Hough says:

    First things first : Guys, thank you for the hard work and high level of quality. As a result we can take immediate advantage of the Enterprise Library.

    We would definitely like to see the UIP (currently at v2) included in the Enterprise Library.

    Any ideas around instrumentation and MOM packs?

    Since "vNext" intends on accommodating .NET 2.0 (Visual Studio .NET 2005), I for one would like to see the DataAccess block leverage the new improvements of ADO.NET. Add to that support for the System.Transaction namespace (not yet sure how this fits in, but worth keeping in mind)

    On a slightly different but related point, we have a design requirement to also pass DataTable and DataRow[](arrays) as parameters for updating. Currently the Enterprise Library’s DataAccess implementation only allows for the updating of a DataSet.

    To get around this, I’ve modified the DataAccess block of the Enterprise Library by probividing the appropriate overloads. My question really is, first, is there a need from anyone else for this and secondly, if there is a greater need, could this be included accordingly ?

    Again, many thanks


  33. Cool stuff that EntLib 🙂

    So far I have a small wish for Logging – It would be nice to have an Indent propery (plus IncreaseIndent, DecreaseIndent methods), as it is very usefull for text output. Plus other enhancements Philip and others mentioned.

    About rolling file appender: get it here http://blog.hishambaz.com/archive/2005/02/14/317.aspx

  34. Cool stuff that EntLib 🙂

    So far I have a small wish for Logging – It would be nice to have an Indent propery (plus IncreaseIndent, DecreaseIndent methods), as it is very usefull for text output. Plus other enhancements Philip and others mentioned.

    About rolling file sink: get it here http://blog.hishambaz.com/archive/2005/02/14/317.aspx

  35. Henry Kravchenko says:

    async calls for logging would be huge plus

  36. Another wish: integrate configuration console in the IDE.

  37. Mike Gale says:

    Great job. I’m still using my own tools to do these things but am working through strategies. Some ideas.

    1) My most common execution environment is ASP.NET designed for virtual hosting. No special privileges, no event logs, no WMI! Out of the box it should work in that situation. Not even the risk of it trying to hit event logs if setup isn’t working. (See Andy and Piers above.)

    2) Samples and war stories. Real information from real implementations, including the above scenario.

    3) Silent, harmless failure. I’m thinking the logging module here. If it’s wrong just shut up and don’t chew resources.

    4) A real killer idea. How to write your own wrapper interface that enables you to use EL when you want, swap something else in if it’s not appropriate, use your own code and easily change it if you ever need to. i.e. Guidelines for creating a family of ICompatibleWithMajor<cross-cutting-function> interfaces. Then I can use my own logger, EL or other without fear and much disruption!! Probably needs to be a place for users to publish and discuss.

    5) Asynch logging.

    Lastly, and a bit off topic, GotDotNet is blocking me and others from logging on. (And no I haven’t time to debug that!) I know they’re working hard on this, maybe some feed back in the EL forum about what’s happening and known fixes!!

  38. Callon Campbell says:

    I’d like to see Compact Framework support or maybe an application block for the NETCF.

  39. Callon Campbell says:

    I’d like to see embedded documentation/help into the configuration editor.

  40. Callon Campbell says:

    re: the following post..

    "/16/2005 1:50 AM Pete Mounce

    Oh; forgot. Support for multiple configurations for different environments. For example, development, staging/testing, production. Preferably a configuration section would have a number of different subsections, one for each environment. Possible already with a typed dataset? An example would be handy."

    I would love to see this as I have different configurations for databases, servers, security, etc based on whether I’m in dev, test or production.

  41. Keith J. Farmer says:

    * Configuration.Environments

    I specifically have to deal with 3 or more environments on any given project at work. Being able to pull configuration out of a database and use it would be a boon. Yes, it could be done now, but that’d that dev time I’m remarkably short on.

    Making environment not necessarily dependent on a seperate build would be good. A dependency based on machine is in use on my end, so environments should be accessed by name IMHO.

    * DatabaseCommandWrapperFactory

    🙂 .. as I posted about 2 weeks ago. I’d do it myself, but my time’s increasingly short.

    Actually, what would be really fantastic would be something very close to the Database reference out of Comega. That would rank up there in the Oh-My-God-Nosebleed level of greatness.

    * Auth/Auth/Profile — LDAP

    Not based on ADSI, which has problems obtaining schema from third party vendors. My company uses OpenLDAP, and while I can retrieve all information, I can only retrieve the more interesting fields in binary form, sans the type translation that would make it more pleasant. I understand Whidbey has a namespace for this, but it’s lacking documentation. .. see http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=d50aa456-4607-46f2-96ee-fea64cdd26ba

    A mapping between OID and .NET type would make life bearable. Having much of these pre-packaged would make life wonderful.

    I’m going to have to write a contact manager for work, shortly, and will be encountering these issues.

    * UIP

    * IDE integration

    * Beginnings of EL/EDRA .. queue processor, <object stream> processor, etc.

    * Other bits from integration patterns literature.

    Some of these are really small, but they’re things which seem to show up quite a bit. Having a nice, happy, semi-canonical interface to write against would allow stuff to be more easily shared. I think they fall under the EnterpriseLibrary.Miscellany block.

  42. Keith J. Farmer says:

    I’ll understand if some of this ends up as vNext.Next

  43. Tom says:

    There seem to be lots of votes for improving support for multiple environments (dev, test, prod etc) in configuration. Can we drill into this a bit more? It’s already possible to have different configuration files for each environment, and the metaconfig can be updated to point to the correct one for the current environment. What else would you like to see to make this easier to manage?

  44. Hisham Baz says:

    Instrumentation needs to be disabled by default. There are a lot of people experiencing difficulties with EntLib related to instrumentation. Especially those working with limited permissions on ASP.NET.

    Also, instead of recompiling Common to turn enable or disable it, it should be a application (or per-block) setting from the config tool.

    Asynch logging is already in the current block. Read the release notes to learn how to setup and use a MSMQ distribution strategy for async log distribution.

  45. Mike Marsh says:

    1. Support for system.transaction namespace in data access block

    2. Push and Pull updater/deployment block

  46. Keith J. Farmer says:


    Perhaps package an example demonstrating the support?

    My wish list for multiple environment configs (in general) would involve behavior similar to globalization: there’s some sense of schema, so that every configuration entry requested returns some value (potentially throwing a configuration exception otherwise).

    The configuration manager could recognize the multiple-environment pattern, and allow intelligent switching between them: I’m in the dev configuration, and want to swap to the production version to fill in its information.

  47. Victor Campos says:

    I just wanted to compliment you as well as your team members on the outstanding work you guys have done with the Enterprise Library.

    One of the biggest concerns we have is extending the E.L. Since the next version is targeting .NET Framework 2.0 will there still be updates and bug fixes for .NET Framework 1.1?

    Keep up the good work!

  48. Victor Campos says:

    I just wanted to compliment you as well as your team members on the outstanding work you guys have done with the Enterprise Library.

    One of the biggest concerns we have is extending the E.L. Since the next version is targeting .NET Framework 2.0 will there still be updates and bug fixes for .NET Framework 1.1?

    Keep up the good work!

  49. Piers Lawson says:

    I agree with Hisham Baz, instrumentation and internal error logging is causing a lot of problems, especially regarding permissions. An alternnative to turning it off via the three Conditional Compilation Constants (USEWMI, USEEVENTLOG and USEPERFORMANCECOUNTER) might be to use three flags in the config file.

    Like Hisham’s blog entries, my CodeProject article is getting a lot of positive feedback for the EL (and of course the odd detractor). I personally am happy with it, thank you.

  50. Tom says:

    Hisham and Piers – we hear you. We’d actually hoped for some more flexibility in instrumentation for v1 but we ran out of time. The conditional compiles are better than nothing but certainly not ideal. We do plan on improving this significantly for vNext.


  51. I fully agree with that instrumentation thing. There seems to be an error with instrumentation out of the box.

    Just try running QuickStartsLogging with exceptions handling set to "break into the debugger". Click any of buttons and you’ll see an exception when performance counters are being created.

    "The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly". This stuff also bloates the Application event log.

  52. Neil Thomson says:

    My overwhelming disappointment is the Cache Application Block. It’s different, but doesn’t solve any new fundamental problems due to it’s limitations.

    My scenario is as follows: I need session management and application managment across ASP.NET and SharePoint components and applications. The ASP.NET Session object is high overhead and really can’t be used for SharePoint – in fact is turned off by default. The ASP.NET Page.Cache doesn’t span machines, yet what scalable application doesn’t need to work in a Web Farm?

    What I find ultimately frustrating is that you have a backing store, but it isn’t capable of notification on an update from a machine/process instance in a multi-machine/process case.

    Why is this so difficult? You have all the pieces – complete the work. A write should have the option of propagating to the backing store and a resulting notification. Ideally the notification would be machine to machine between the cache managers and not through the backing store – but hey, that’s a simple notification message… This doesn’t have to be on an an individual object basis, it could be done on a composite/object graph – IOW a datetime update on the graph posts a notification – minimizes the noise.

    At this point I’m using an old set of stored procedures to update the backing store in SQL server and checking a simple table of object GUID/timestamps on the store status with a content table with the actual data associated with the session GUID, which minimizes the SQL query cost.

    How come you can’t do that?

  53. Chris Cichocki says:


    I’d like to see more sample applications to demonstrate things like:

    -Having configurations for multiple environments

    -Using the Context to read from different configuration files

    Also, I’m working with Scott on this, but I still am not sure that I can use the Configuration Manager unless I deploy the base settings into an App.config, Web.config or Machine.config. What if I only want to deploy "MyDLL.dll" with a "MyDLL.dll.config"? This would be extremely useful in a BizTalk component deployment. If it’s already possible, then a sample reference implementation would be helpful.

    As a new feature, what about supporting storing the configuration data as an embedded resource within an assembly? Makes deployment simpler in some cases, and it keeps people’s prying eyes out of your config files.

    The EL is a PHENOMINAL set of code already – but I’m glad you’re going to continue to work on new features!


  54. Tom says:

    Hi Chris –

    Although we use app.config/web.config by default, it is possible to use whatever file you wish. Look at the post at http://www.gotdotnet.com/workspaces/messageboard/thread.aspx?id=295a464a-6072-4e25-94e2-91be63527327&threadid=97118304-903e-4c22-b2f9-0002f27b782b for more information.

    It should be possible to build a config storage provider that uses embedded resources – we’ll take this into consideration for vNext.


  55. Tom Gilkison says:

    Tom is working on tutorials for Enterprise Library 🙂


    Oops…wrong Tom!

  56. Chris Cichocki says:


    Scott sent me that link and I spent quite a bit of time tinkering with it this past weekend. You’re right, you can use any config file you want and you don’t need to deploy an app/web/machine config. Hopefully Scott and I can hook up (he’s supposed to call) and we can talk about some ideas that I had on the whole topic.

    Thanks for the reply


  57. Keith J. Farmer says:

    How about a configuration design code generator?

    I’ve tried cutting/pasting from existing code (to extend the data ab) and for some reason, it’s just not solidifying. A code generator that could take a declarative settings schema and return code to access it would go far, I think.

  58. Ben Slater says:

    The addition of Declarative/Explicit Code Access Security. Specifically in the Configuration Library.

    As there is little/no CAS contained with the Enterprise Library, any tightening of Application Security which uses the Library requires in numerous SecurityExceptions popping up.

  59. Tom Lessing says:

    In my opinion more functions should be added to make it easier to do things like adding attachments to logs. Yes Extended Properties are nice but it would be nice to have more helper functions.

    (I am no expert at the EL)

    (I have posted my changes so lets hope somebody can figure it out)

  60. nick Caniglia says:

    In the docs for the Data Access App Block, it is recomended that you use the try/finally structure when receiving an IDataReader from the a Database instance to ensure that the reader is closed when you are finished with it. There are ways to provide connection resource management from within the block itself (as is done for the ExecuteDataSet method) even when the client code needs a reader.

    See Steven John Metsker’s "Design Patterns in C#" text. He demonstates both a delegate-based and interface-base solution for this. For example:

    You might add a LendDataReader method to the Database class that accepts as params the usual DBCommandWrapper and a delegate type which takes an IDataReader (this delegate type would need to be a new class defined in the block). The method would simply execute the command to get the reader, pass the reader to the delegate instance and invoke it, all inside the safe confines of a try/finally that disposes of everything.

    I haven’t used the new EntLib yet, but I added this method to the old Data Access block and recommended it to my peers needing DataReaders so we don’t accidentally leak connections.

  61. Keith J. Farmer says:

    I like that idea, nick…

  62. Mark Duregon says:

    The licensing and multiple environment configurations are both 2 suggestions that get my vote.

  63. Marsha says:

    Sybase added to the Data Access Application Block.

  64. F. Delaporte says:

    Hi Tom,

    I have two feature requests:

    1 – ParameterCache should be usable to dicover parameters on a command on which no parameter values have been supplied.

    This is needed by example for setting parameter values by parameter names without manually specifying parameter DBType.

    Currently, ParameterCache is simply not usable by external code and thus it should not stay public (turning it internal may avoid people to try using it though this object is strongly bound to GetStoredProcCommandWrapper implementation and cannot be currently used for an other usage)

    2 – On a DBCommand, there is a CommandTimeout property. Using a custom default value for this property is quite painfull, since you have to set it on each command you use.

    It would be handy to have a DefaultCommandTimeout property on Database object. This property would be used to override the CommandTimeout property value on each command created by the Database.

    Without that, a wworkaround could be, on SQL server, setting "General Timeout" on connection string. But this should works only for setting a smaller timeout.

  65. David van Leerdam says:

    I would like to see a caching feature for the Exception Management block, so that only unique exceptions (and perhaps daily updates of it) are ‘posted’. I.e. not all exceptions that are published will actually be published.

    If you need more details, please feel free to e-mail me at davidvl at 538mail dot nl.

  66. jasper pons says:

    I would like an application block to communicate with serial ports and printer ports. These are things we often need in an industrial environment to control PLC’s, barcode scanners and barcode printers as well as test equipment. I have code which I have built up but it could do with some "paternizing" . Microsoft is missing out on an opportunity in the industrial enviroment by not plugging this gap.

  67. Mark Schultheiss says:

    0. Configuration – More intuitive, WAY more.

    Just getting started with the blocks but I had some challenge getting the Configuration block in my head. Ended up editing the Data Access config files with NOTEPAD instead of using the tool. (Which I am not really that pleased with at this point).

    0. Configuration – More intuitive, WAY more.

    1. You have to KNOW where to open an application from – need SEARCH FOR APPLICATIONS capability.

    2. You have to KNOW what options are – for example, the DAAB quick start does not include options with userid/password for the database and comes only with the simplistic Integrated – so you have to "guess" the options/names for that. Bottom line, it seems that blocks should support some way to query the config settings – including "optional" settings and the Config tool should query the block to find those out.

    3. Clone in config tool. It would be nice to have the ability to "clone" a current config block to create a new one. Using the above example, right click the DAAB config Connection String and clone it instead of having to manually add, and then manually add parameters, then…

    Right now, if you right click, it says "New/Connection String" which gives you the default with "Integrated Security" again…so where does it "decide" the parameters for that??? I don’t know at this point. (Back to the #0 Intuitive part again)

    4. Add "help" in the config tool – and make creation of "help" for config settings EASY for new blocks (back to #0 again).

    IF I were to pick one sweet spot – it would be #2 to add the ability for a block to publish config settings (marking "optional" as such) that the tool could query from and produce/reproduce as a configuration setting.

    I got the original blocks v1.0 DAAB working in about 2 hours or so. Starting with that knowledge base, I had spent the better part of 2 days and still had not written a line of code to actually USE the current blocks.

    Most of this time – well ok, all of it, was spent trying to figure out the configuration settings, tool and its ilk.

  68. Mark Schultheiss says:

    To highlight my previous post, as an exercise for the user, search config files for (including the Quick Start examples)


    <databaseType name="SqlServer"

    Then search for


    <databaseType name="Sql Server"

    which is NOT capatible with the other previsous one and produces an error when an Instance is created which does NOT match with/without the space.

  69. Tom says:

    Mark – thanks for the feedback. If you’re interested in following up with me directly with ideas to improve the configuration tool (or anything else), please mail me at tomholl at microsoft. Also, if you haven’t already seen it, take a look at our prototype "multimedia walkthrough" at http://www.ronjacobs.com/dataaccesswalkthrough.htm and let me know if this kind of content will make things easier.


  70. Darth says:

    Can i get these Enterprise applications is Visual Baic .Net?

  71. Yang Cao says:

    Decouple Database class and Configuration. I don’t see the reason that Database class derives from ConfigurationProvider. Database class should only understand IDbConnection, IDbCommand, and etc.

    On the other hand, it’s OK to read configuration settings in DatabaseFactory. But that has to be optional. Given a connection string (and maybe an optional provider assembly also), DatabaseFactory should have enough information to create Database object.

    Now matter how generic, Data Application Block should only be a very shin layer.

  72. Alby Mangles says:


    Having looked at the changes in the caching application block, I’m shocked to find that one of the distinct features (mmf storage) of the block has been removed:

    "The earlier version supported multiple processes sharing a single cache. The Enterprise Library version supports using a cache in a single application domain only."

    Are there any plans in the future to add this feature back into the enterprise library?

  73. David Darling says:

    The old DAAB 3.1 had classes for OleDb and Odbc in addition to Oracle and Sql Server.

    Did I miss something or is the new DAAB for the Enterprise Library missing implementations for OleDb and Odbc.

    I am working on an "offline client" that uses either SQLite (SQLite.cs), MsAccess (Oledb.cs), or MySql (Odbc.cs) to retrieve reference table info, selectable via the app.config file.

    I only had to add a SQLite.cs class to the old DAAB 3.1 implementation and I was able to hit all three databases at the flip of a switch.

    Is such still possible with the new DAAB implementation in Enterprise Library? I see Oracle, Sql Server, and DB2 but not OleDb or ODBC.

  74. RAM PRASAD says:

    I don’t know if it is feasible, but I think it would be good to manage caching for the whole application based on policies based on the configuration, like it is done in Logging & Exception handling blocks.

  75. RAM PRASAD says:

    Mostly for the ASP.net output Caching

  76. Andy Mackie says:

    SmartClient + ClickOnce deployment in VS2005, whilst using EntLib. Demos/sample-apps to illustrate. Consider partially-trusted requirements as well.

  77. rajib says:

    I tried Enterprise Library and it works great. For me it was very easy to work with data access block.

    The old configuration management application block is capable of encrypting the section of the generated xml file. Can similar feature be available when the tool generates web.config, app.config etc? This is to avoid storing sensitive info in plain text.

    Any "best practice" suggestions will be more than welcome.

  78. Tom says:

    Hi Rajib –

    The EntLib configuration block does let you encrypt configuration sections. By default each configuration section goes in its own XML file, unless you use a different provider. The information in app.config/web.config is what we call metaconfiguration – that is, configuration about where the configuration is stored. There isn’t a way of encrypting this at the moment, but there shouldn’t be anything sensitive in the metaconfig anyway.


  79. rajib says:

    thanks that was helpful…

  80. rajib says:

    I’ll vote for the licensing block.

  81. Olaf Conijn says:

    I have 2 tiny requests for the Enterprise library configuration tool:

    1.) extending the IUIService to allow any dialog (or System.Windows.Forms.Form) to be shown modal.

    2.) extending the TypeSelector to make it possible to show an instance without using it in an attribute.

    I think that both would improve the ability to create more ‘wizard like’ configuration tools for EntLib.

  82. 1. Dev/Live/…/MyOwnConfiguration configurations.

    2. WSE 2.0 – why it cannot be integrated in EL? 😉

    3. Something like "Translations Application Block" – block for creating and configuring multi-lingual corporate sites. There should be one main interface that provides different methods for searching, storing and retrieving translations from different data-sources. Also it should allow to edit translations in Excel format and import/export from this format. Also there should be mechanisms for tracking synonims and antonims.

    Now we reinvent these mechanisms in every new project…

    4. Some kind of sheduling mechanisms with a format like in Linux’s cron. This can be extremely useful if you have to start some tasks in your application depending on configuration settings. For example,

    "01.xx.xxxx 12:xx getstatistics" would mean that we need to start the task "getstatistics" every 1-st day of each month after 12 o’clock.

    5. Editor of config properties, that are not handled in application blocks, but still exists in App.config/Web.config files. So, we could just forget about editing these files in notepad 😉

    6. Integration with Visual Studio (like it’s done in WSE 2.0 – you can just right-click the project and call the properties editor).

    7. File -> List of last used applications

    8. Copy /Cut / Paste a part of the first config to another one config (and also to the same config).

    9. Temporary disable some settings in config (comment it with <!– … –>)

    Best regards,

    Vadim B. Guzev

  83. Jeff says:

    I agree with David…I’d like to have ODBC and OleDB back in the DAAB. We still find ODBC connections useful for easing the transition between Dev/Test/Prod.

  84. As requested during the DAAB webcast, please provide examples in ASP.NET.



Comments are closed.

Skip to main content