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

  • Anonymous
    February 14, 2005
    The comment has been removed
  • Anonymous
    February 14, 2005
    Well,

    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.
  • Anonymous
    February 14, 2005
    RollingFileAppender equivalent - logging to a single file is not really viable for actual software
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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."
  • Anonymous
    February 14, 2005
    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!
  • Anonymous
    February 14, 2005
    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.

  • Anonymous
    February 14, 2005
    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
  • Anonymous
    February 14, 2005
    +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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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 ~:-)
  • Anonymous
    February 14, 2005

    Any plans for remoting infrastucture library ? One that will allow for "application objects (business, data, etc)" to distributed.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    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.
  • Anonymous
    February 14, 2005
    +1 for the configuration code generator.

    Also the mechanism for rotating log files.
  • Anonymous
    February 14, 2005

    >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?
  • Anonymous
    February 15, 2005
    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?
  • Anonymous
    February 15, 2005
    Cannot help but vote for the following blocks:
    Smart Client Offline;
    Updater;
    User Interface Process.
  • Anonymous
    February 15, 2005
    The comment has been removed
  • Anonymous
    February 15, 2005
    The comment has been removed
  • Anonymous
    February 15, 2005
    The comment has been removed
  • Anonymous
    February 15, 2005
    The comment has been removed
  • Anonymous
    February 15, 2005
    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 :)
  • Anonymous
    February 15, 2005
    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.
  • Anonymous
    February 15, 2005
    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?
  • Anonymous
    February 15, 2005
    The comment has been removed
  • Anonymous
    February 15, 2005
    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
  • Anonymous
    February 15, 2005
    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
  • Anonymous
    February 15, 2005
    async calls for logging would be huge plus
  • Anonymous
    February 16, 2005
    Another wish: integrate configuration console in the IDE.
  • Anonymous
    February 16, 2005
    The comment has been removed
  • Anonymous
    February 16, 2005
    I'd like to see Compact Framework support or maybe an application block for the NETCF.
  • Anonymous
    February 16, 2005
    I'd like to see embedded documentation/help into the configuration editor.
  • Anonymous
    February 16, 2005
    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.
  • Anonymous
    February 16, 2005
    The comment has been removed
  • Anonymous
    February 16, 2005
    I'll understand if some of this ends up as vNext.Next
  • Anonymous
    February 16, 2005
    The comment has been removed
  • Anonymous
    February 16, 2005
    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.
  • Anonymous
    February 17, 2005
  1. Support for system.transaction namespace in data access block
    2. Push and Pull updater/deployment block
  • Anonymous
    February 17, 2005
    Tom:

    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.
  • Anonymous
    February 17, 2005
    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!
  • Anonymous
    February 17, 2005
    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!
  • Anonymous
    February 17, 2005
    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.
  • Anonymous
    February 17, 2005
    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.

    Tom
  • Anonymous
    February 17, 2005
    The comment has been removed
  • Anonymous
    February 18, 2005
    The comment has been removed
  • Anonymous
    February 19, 2005
    The comment has been removed
  • Anonymous
    February 19, 2005
    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.

    Tom
  • Anonymous
    February 20, 2005
    Tom is working on tutorials for Enterprise Library :)

    http://tom.gilki.org/programming/net/EnterpriseLibrary/Overview/index.shtml

    Oops...wrong Tom!
  • Anonymous
    February 20, 2005
    Tom-

    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
    Chris
  • Anonymous
    February 21, 2005
    The comment has been removed
  • Anonymous
    February 21, 2005
    The comment has been removed
  • Anonymous
    February 22, 2005
    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)
  • Anonymous
    February 22, 2005
    The comment has been removed
  • Anonymous
    February 22, 2005
    I like that idea, nick...
  • Anonymous
    February 22, 2005
    The licensing and multiple environment configurations are both 2 suggestions that get my vote.
  • Anonymous
    February 23, 2005
    Sybase added to the Data Access Application Block.
  • Anonymous
    February 24, 2005
    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.
  • Anonymous
    February 24, 2005
    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.
  • Anonymous
    February 25, 2005
    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.
  • Anonymous
    February 26, 2005
    The comment has been removed
  • Anonymous
    February 26, 2005
    To highlight my previous post, as an exercise for the user, search config files for (including the Quick Start examples)

    <databaseTypes>
    <databaseType name="SqlServer"
    Then search for

    <databaseTypes>
    <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.
  • Anonymous
    February 27, 2005
    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.

    Tom
  • Anonymous
    February 27, 2005
    Can i get these Enterprise applications is Visual Baic .Net?
  • Anonymous
    February 28, 2005
    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.
  • Anonymous
    February 28, 2005
    Hi,

    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?
  • Anonymous
    March 03, 2005
    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.
  • Anonymous
    March 03, 2005
    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.
  • Anonymous
    March 03, 2005
    Mostly for the ASP.net output Caching
  • Anonymous
    March 03, 2005
    SmartClient + ClickOnce deployment in VS2005, whilst using EntLib. Demos/sample-apps to illustrate. Consider partially-trusted requirements as well.
  • Anonymous
    March 04, 2005
    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.
  • Anonymous
    March 04, 2005
    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.

    Tom
  • Anonymous
    March 04, 2005
    thanks that was helpful...

  • Anonymous
    March 04, 2005
    I'll vote for the licensing block.
  • Anonymous
    March 05, 2005
    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.
  • Anonymous
    March 07, 2005
    The comment has been removed
  • Anonymous
    March 07, 2005
    The comment has been removed
  • Anonymous
    March 08, 2005
    As requested during the DAAB webcast, please provide examples in ASP.NET.
    Thanks
    -Steve