Maintaining complete object hierarchy in-memory
The alternative would be to load all objects into memory at startup or first use. This way, using stateful session beans, each client could make requests on references to real objects directly, with these references placed in their state on the application layer.
The big "how" in this scenario is search. How to do an effective complex search in large object hierarchies? If I have 4000 contacts of different types with sub-contacts and aggregated objects etc. it would probably take ages to do what a simple SQL SELECT could do in seconds.
Maybe you should give a look at XPath for objects. An example of this for Java is JXPath.
Note: I should have a prototype for .NET any time soon.
If you haven't already, though, I would recommend checking out Anakrino, an awesome open-source C# decompiler. It can be very useful to get insight into a .NET assembly, either to extend / specialize functionality or to debug weird issues. And sure, the source code generated isn't quite as good as the original - for example, MSIL doesn't keep local variable names, so you lose those - but it still does the trick.
I know for me it has proved useful on more than a few occasions.
A great resource for the source code of the standard components of .NET is Mono. They've already done the reverse engineering for us.
Check the Mono Class Libraries, a valuable resource for component writers!
I've created a custom DropDownList web control that enables the use of custom attributes on its items. This is just a rather simple improvement over the standard .NET web control, but a useful one in my opinion.
On a project I have worked on, we needed to display a tree view in an ASPX page. The client needed the ability to print the page through IE print command. We started to use the TreeView control coming with the IE Web Controls released by the ASP.NET team. Then we realized that the tree view was not printing correctly due to the use of a client behavior coming with the TreeView server control. The client behavior is automatically activated on IE 5.5+, and deactivated for previous or non IE browsers. ...But, the client behavior cannot be deactivated on up-level browsers!
Here is a quick summary of the steps to add Stored Procedures to the .NET IDE:
I've been struggling with CTRL+TAB since the first day I started working with VS. Till today, I still do not know how to jump to the next (visually speaking) tab in the editor. CTRL+TAB does not make it as it jumps to the next (randomly speaking) tab. I don't understand the logic behind it, and it's not working as I wish it would.
Does someone know of a working solution to jump between tabs without having to use the mouse?
Update: forgot to mention that I've added a link (Search) on my main page to make the search page easier to find.
While showing-off the previous tip to a mate I was eagerly pointed in the direction of this link:
Chris Sells does it yet again!
Two I like and didn't know about:
Let the IDE implement the stubs of an interface function in a class (not a struct):
- Type the name of the interface after the name of the class, e.g. "class Foo : IDisposable".
- In the Class View (Ctrl-Shift-C), navigate to the class, e.g. Foo, and choose the interface you'd like stubs for under Bases and Interfaces for that class.
- In the context menu (Shift-F10), choose Add->Implement Interface.
- Bask in the glory of Don Box (who showed me this trick).
- Let the IDE implement the stub of an virtual function override:
- In the Class View (Ctrl-Shift-C), navigate to the class, e.g. Foo, and choose the method on the base class you'd like to override under Bases and Interfaces for that class.
- In the context menu (Shift-F10), choose Add->Override.
- Bask in the glory of me, who found this all by myself. I found this digging through the .VSZ files on my system. It looks like you can add your own context items to the menus, which sounds like fun...
I recommend to use this with "Synchronize Class View" from the editor context menu.
Update: The two tips above seem to work only for C#.
A nice little tool useful if you are working with HTML tables.
Scott Watermasysk is working on a search solution for the weblogs.asp.net weblogs. You can try it out there: http://scottwater.com/tempsearch/
Escaping from our .NET world for a second (as we are leaving in a real world too...):
Slavomir Furman wrote:
Keith Ballinger wrote:
Floor speech by Senator Robert Byrd. A brilliant articulation of how I feel.
Although I never heard about Senator Robert Byrd before and although I'm not an U.S. citizen, I think that this speech articulate also my feelings about all this Iraq thing we heard in news every night everywhere. Great speech!
Very good. A must read.
Good to see these opinions clearly expressed!
This is a very cool CSS techniqueThe title on the right does not rely on HTML tables! Better: it works with IE and Mozilla. You can learn more on glish.com. Thanks to Sean for the reference.
eXtensible C# provides a set of compile-time attributes to do things like inject code (like to check for a null value), analyze code at compile-time and even obfuscate. Very cool.
Way cool indeed!
Update: direct link
My first AOP test or so. This one uses proxies.
I kept it really simple so that you can see the basics.
Questions or comments are welcome.
Hey, I didn't know about ASP.NET Starter Kits Beta. Cool !!
The ASP.NET Starter Kits are sample ASP.NET applications that provide code to accomplish common Web development tasks. Each sample is complete and well-documented so that you can use the code to kickstart your ASP.NET development projects today.
[Via .Avery Blog]
TaskVision is a sample smart client task management application built using the Windows Forms classes of the Microsoft® .NET Framework—an integral Windows® component that supports building and running the next generation of applications and XML Web services. TaskVision allows authenticated users to view, modify, and add projects and tasks that are shared with other users. It may be used in any number of scenarios, from bug tracking to managing work orders or customer service requests. Its primary purpose is to provide quality, sample source code to developers interested in building smart client applications and XML Web services using the .NET Framework.
The TaskVision solution demonstrates many technologies provided by the .NET Framework including:
- Application offline and online model
- Application update model via HTTP (no-touch deployment)
- Authorization to control user access to application features
- Data collision handling
- Printing and Print Preview
- Windows XP Themes
- Dynamic properties
- Localization support
- Accessibility support (limited)
- Forms authentication using a database for user names/passwords
- Asynchronous XML Web service calls
- ADO.NET data access using SQL stored procedures
- Graphics development using GDI+
- Integration between .NET Framework-based code and COM applications (COM interop)
Ever heard about data prevalence?
If not, you should take a look at Bamboo.Prevalence which is a .NET object prevalence engine.
Bamboo.Prevalence is a .NET implementation of the object prevalence concept brought to life by Klaus Wuestefeld in his Prevayler system.
Basically, Bamboo.Prevalence aims to provide transparent object persistence and synchronization to deterministic systems targeting the CLR (Common Language Runtime). No relational databases. No object-to-relational mapping goo. No SQL. Just you and your objects, isn't life great?
For the rationale behind object prevalence please read the Object Prevalence Skeptical FAQ.
Did someone use this technology? I'm curious to know more if someone has some feedback.
Frederic Gos is talking about his plans to work on AOP in .NET :
I can't wait to see more about AOP and Automated Software Development.
We, developers, appreciate this move, as we need this to build on and extend these controls. We also need this code source to be able to build new components.
Code sources prove to be highly valuable resources. They provide us with a better understanding of components' internals, can give us design ideas, and serve as examples of coding guidelines.
MS should release the complete source code of all the controls, components and other classes. Borland has always done that with the VCL (now the CLX), the class library of Delphi, C++ Builder and Kylix.
There is no secret in the source code of components. We can almost “read” it through the intermediate language. But one reason why MS does not release the source code could be that it is not uniform and totally clean. From what I can see, there were no strong guidelines applied during the development of the internals of the components library.
Let’s just hope that the release of the source code of the IE Web Controls is just a start and that we will see more moves like this from MS.
One downside though: the IE Web Controls are not supported...
Ever faced a situation where you think you're in front of a bug? Well, maybe you should check the MSDN Bug Center. Who knows, maybe you'll find a fix or a workaround.
This site is not well know, but can help you with bugs concerning Microsoft development tools (VS, VSS, .NET, ADO and other SDKs).
Let's start with some news : Borland unveils more information on its plans around .NET.
After releasing its Delphi for .NET Preview and licensing .NET, Borland introduces SideWinder. SideWinder (code name) is Borland's new IDE. Surprise (or maybe not...), it is C#-based. What is the future for Delphi?
Hi! My name's Fabrice, and this is my first post on my first weblog.
I hope to see you around often. I'll try to share thoughts, ideas, tools and source as often as possible. BTW, if someone has a magic recipe to expand time, help is most welcome!
Two words about my background: after leaving my computer science engineering school six years ago, I have been working on various software projects, mainly technique oriented ones. Indeed, my favourite hobby, as far as software is concerned, is R&D. I started working with .NET two years ago (beta 1). My first projects were about web services (at that time, I worked on a web services deployment tool). Since then I have been creating ASP.NET applications, and lately I am working on an application framework relying on .NET.
I won't say more for now, things will put in place as time goes by. Stay tuned.
Last word for this first post but not the least: Thanks Scott! :-)