in

ASP.NET Weblogs

Natty Gur

.Net from enterprise architect point of view.

April 2004 - Posts

  • For all of you that ask to join NWAF or download beta version.

     Although there is a project on sourceforge I'm still working on the bites so you can have something to play with. Due to the fact that I'm working on NWAF after my working hours it will take me more time. I'll post here NWAF design to hear your   constructive criticism ;-).

  • Small table that compare NWAF – UIP and Maverick

    NWAF

    UIP

    Maverick

    Exclude App navigation from visual layer

    V

    V

    V

    separating business logic code from the user interface

    V

    V - No enforcement.

    V

    State management

    V

    V

    X

    Saving a snapshot of current interaction

    V

    V

    X

    Light container services (such as audit, logging and user define)

    V

    X

    X

    Define application navigation by controller return values and exceptions. Controllers calls, RV, exceptions and result actions defined in XML file.

    V

    X

    X

    separation between view and controller

    V

    X

    V – no post back

    Support ASP.NET post back

    V

    V

    V – no separation between view and controller

    Support different types of applications

    X

    V

    X

    Support Isolation levels of non visual layers

    V

    X

    X

    Provide context for classes running in isolation level

    V

    X

    X

    Support UI templates

    X – support in ASP.NET 2.0

    X – support in ASP.NET 2.0

    V

    Easy to use

    V

    X

    V

  • Still about MS and enterprise systems. a post from discussion on channel9

     

    I'll start with few words about myself to make the picture clearer. For the last 5 years I deeply engaged with competitive intelligence. Competitive intelligence is actually application of intelligence for the business community. Competitive intelligence aim is to forecast events, intensions, movements, etc' of people and organizations that might help your enterprise to make the right decisions. To reach competitive intelligence conclusion competitive intelligence software need to interact with all existing and upcoming enterprise software. The interacted software could be interior and exterior enterprise software's. Using the gathered data from enterprise systems and exterior systems CI application can make it own analyze and reach CI conclusion. As you probably guess implementation of such software is always force you to integrate with enterprise existing systems.

     

    Integration, from my point of view, is not only to consume data or logic from other systems. Consuming of visualization aspects, especially if those visualization aspects implements visualization algorithms, are also desire when integrating to other systems.

     

    So beside enterprises systems that I saw, I need to create my solution in such a way that I can use it in any organization regardless of the implementation tools and technologies that they choose. I decide to use HTML as the protocol that I will use to implement integration of my CI solution with existing and upcoming enterprise systems. Using HTML I can easily combine several data, logic and even visualization into one page and display it to the end user. I start to develop ASP based solution and migrate to ASP.NET as soon as it was available (I also use to help others and wrote couple of articles thus get ASP.NET MVP.). CI solutions aren’t simple, they usually collection of components develop as n – tired application. As complex web application I want to use application server and other enterprises services that I saw my clients implementing in their systems.

     

    The first service that I looked for is application server. You can't create complicate software solution based on hundreds and above classes, without any application server that implement inversion of control and aspect oriented programming. It doesn't matter if you create web or client server application you still need application server to deal with your classes. You need your application server to implement any level of container services. Container actually activates objects for you (by request) thus can implement interceptions that can activate predefined services (such as object pooling, transaction, clustering, security, auditing, logging, message driven components, persistence and others) or custom services for your classes. COM+ is actually build with inversion of control and aspect oriented programming and .Net introduce attributes that even support better aspect oriented programming. The problems are:

    1. COM+ is COM implementation that hurt .Net performance and there isn’t any .net container implementation yet.
    2. There are set of pre-defined services that COM+ container introduce and they are poor (for example there isn’t any clustering services) and you can't extend them with your own services.
    3. Java implementation introduces managed extension that control objects and contains data about object and object procedure monitoring. COM+ monitoring and management is poor comparing to java implementations.
    4. Java application servers also come with naming services and proxies. Naming services are like UDDI they let the client get instant of class by the class name. In contrast with .Net that let us create instance from class just by referencing class assembly, naming services let us get object from remote storage just by its name. This is very important service for enterprise systems where one component that one creates is used by all other systems. Using name services when I change my components all other systems don’t need to do anything in order to get the new instance (no recompiling or mapping reference in config files).
    5. Application server don’t just use containers for server side classes the containers also used for object proxies returned by naming servers, thus enable container services to client side proxies as well as server side objects.
    6. Application servers usually perform deployment task for hosting classes. For example application server will create proxy for hosted class and register it in the naming services.

     

    Application servers are important but not the only enterprise needs that java community creates proper solution whether as commercial tool or open source project. Most of those solutions got specification developed by sun and can be found at http://www.jcp.org. I'll mention just some of them that I see the need.

    1. ORM tools. Yes I know that Microsoft is going to ship object spaces with Whidbey but why not to ship such a tool with the first version or at least publish specification of ORM tool. If you are moving your development tool to OO why don’t you deal with mapping of relational database to objects?
    2. In memory database. Once there was IMDB but it gone …. On the other hand Java got JavaSpaces spec. with implementations such as GigaSpaces. IMDB disappear but the need for in memory database still exists.
    3. Rule base. I hope that I don’t have any mistake here. While Java community develops spec for rule base engine and Open source projects that implement rule base engine start to emerge. All I can find in the Microsoft community is that article on MSDN (http://msdn.microsoft.com/architecture/journal/default.aspx?pull=/library/en-us/dnmaj/html/aj1rules.asp).

     

    As I post earlier even MVC implementation of ASP.NET is an example for the difference attitude to enterprise development. While Microsoft published application block that implement MVC where the controller and the viewer are the same class Sun implements MVC with separate viewer and controller in their new development tool (that support now post back).

     

    As I already said I don’t think Microsoft should develop all of those solutions but I really think that they have to do something in order to push more enterprise oriented solutions to their development products.

     

     

  • Partial types, please let me touch or at least add code to constructors.

    Partial types are really cool but as they used in Whidbey to isolate dynamic code generate from designers from user code that implements events has some aspect that bother me. Designer generates the class construction of page and due to partial type limitations I can't write construction on my part of the class. This lives me just one way to add code into page constructor and that’s just by creating my own base page that pages will be derived from. While this solution works I found it clumsy. It would be wonderful if I can write my construction code on my part of class and that code will be embedded into the other partial type file constructor.

  • Microsoft and the enterprise market, is it reality?

    Since Microsoft published .Net they start to push .Net as solution for enterprise market. .Net introduces much more mature developing system combining with much more mature servers and operating system. Microsoft adopts several programming concept such as OO, ORM, Attributes. Microsoft also Improve IIS and operating systems and they are keeping improving their operating systems and development tools by developing Longhorn and Whidbey. But it looks to me that all that effort not really addresses the enterprise needs. Before I mention the word Java I just want to mention that I'm not java guy at all. My daily occupation as enterprise guy simply forces me to interact with Java and Java solution on a daily basis. My interaction with Java not as a language or development tool but as a set of infrastructures and frameworks for enterprise development make my daily life as Microsoft guy very but very hard. As opposed to the rich opportunities that Java solutions supplies to enterprises I just have IIS, BizTalk, COM+ and other servers that I cant even compare to other solutions such as application servers (JBOSS), clustering, in memory databases (Giga spaces) and other useful open source project that already port to .NET such as Nunit, Nant and as I heard recently Nspring.

     

    The main reason for the .Net gap is that Java has been in the enterprise field for a long time and that time needed to learn from real life experience what frameworks, infrastructures and other project are really need for enterprise development. It looks to me that Microsoft isn’t aiming to target the enterprise market specifically. They are target a wider range of markets and pay the taxes in the enterprise field. I really don’t know and until now don’t find why. The only consumption that I have is that none of the leading PM or product manager come with strong background of enterprise developing. But it's just my assumption and I really don’t know all the right people in Microsoft to come to such conclusion.

     

    What I know for sure that most of the enterprise solution that the java community has to offer are open source projects developed by programmers who see the need and develop solutions. I just think that those solutions can be adopted for .NET usage after adaptation to .NET that should take advantage of .NET abilities. If the current java solution will be converting to .NET they could help .NET to penetrate more easily into the enterprise market. I talk with some MS workers about that subject but they don’t appear to my enthusiastic to import those java projects into .NET world. Apparently that work is left to us, the .Net community …

  • Good architecture should serve enterprise needs and not technology hype

    From time to time when I review system architecture or discuss systems architecture I found myself criticize architecture mainly due to the fact that the chosen architect build on the latest technology trend and not with strong attitude to enterprise needs. It looks to me that we as architects tend to use the latest hot words that just come out from the oven instead of matching the right technology for given enterprise needs. I even heard that given architecture selected just because development speed reason. While the chosen architecture could work for given system it could be hell to integrate that system with other systems (which is basic need for his customer).

     

    Integration is one of the words that I never forget when dealing with architecture. I think that in today world there isn’t any system that stands for itself, especially in enterprise context. Even if you create simple system that looks like no one will need to integrate to right now. Someone sometimes in the feature will need to integrate into your system. Integration seems to more and more essential as consolidation take the role in today business world. More then once I made my money from consulting to firm about integration of systems after merging or acquisition.

     

    Integration between systems can be made at the data, logic and view layers of systems. System can acquire data for internal use from other application, use logic of other application and embed view of other application in application view. Nowadays sophisticated views (such as link analysis) can help user significantly to come into conclusion. Such views might be integrated in other system as added value to users.

     

    The last trend that I hear (at least from Microsoft Israel) is smart client. Yes, smart clients are cool and they actually reduce complexity from code thus reducing developing time. But smart clients don’t feet when you want to integrate your visualization layer into other system. You might achieve some level of visualization integration but you need to work for it and anyway your visualization can't be use from application writing by other development tools and/or running on other operation system. In the data and logic levels integration we move from DCOM to web service / SOAP and talk a lot about SOA. We do it because we can't ignore other operating systems and developing tools. We found solution that build on standard that widely use in every OS and development tool. We need to think about visualization integration in the same way, and today the common visualization protocol is HTML. I don’t say that HTML rocks and smart clients sucks. I just say that I can't see why to suggest smart client architecture to client that integration is core aspect of client business. I just think that architecture should fit the enterprise business needs and not just follow the current technology trend.

     

  • NWAF

    By the way, I'm looking for help so if you find NWAF intersting contact me.

    thanks.

  • MVC and ASP.NET forms – NWAF

    I already post few times about MVC and ASP.NET. Since I couldn’t find any web application framework based on MVC design pattern without harming any of ASP.NET features I decide to write new open source project to deal with that issue. I'm working on NWAF for few weeks and I'm really close to publish alpha version.

     

    NWAF is building on:

     

    Dispatcher : intercept incoming request, extract incoming commands, executing Controllers that return page data and apply any application logic, redirect the request to other page or continue with the calling page (by process page events).

     

    Command : Set of  XML instruction identify by name, that define which controllers will be called, what action should be take when given return value returned or certain exception take place and which page to display. Command are compiled on first call into in memory assembly and used in every web request that contain match command name.

     

    Controllers: Classes that execute application logic and may return data to the page to be displayed for the user. Controller might be set to run under COM+ to achieve Isolation level. Application domains are certainly candidates to archive isolation levels but they don’t implement, yet.

     

    Views: pages that use the controller data and display it to the user.

     

    Model: application BL and DAL classes. I'm thinking about applying some dynamic interceptors as part of the framework, but I'm afraid that I'll end up with application server.

     

    Any comment will be appreciate.

  • Out of topic: Nature – Crater Lake, Oregon.

     The beauty of USA nature is really astonished!

     

     

    I wish I could live there ….

  • Installing Visual studio 2005

    At last I got time to install VS 2005. I was disappointed to see that I need to remove Whidbey 1.2 installation in order to install the new version. Is that side by side execution?

More Posts Next page »