On this page

Enterprise Services and Exceptions II
Messenger and Paranoia
Enterprise Services and Exceptions
AOP and Enterprise Services



The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Total Posts: 83
This Year: 0
This Month: 0
This Week: 0
Comments: 5

Sign In

# Saturday, February 22, 2003
Enterprise Services and Exceptions II
Saturday, February 22, 2003 8:37:32 PM UTC ( Enterprise Services )

Tomas agrees with me that the exception irregularities found when using Enterprise Services are indeed interesting, and asks for clues. I have yet to find any, but I would be very surprised if it wasn’t related to the marshalling services.

After doing a series of tests I’ve found that all basic types (integer, string, decimal …) that probably have some optimized marshalling code introduce the exception problem, but as soon as you add a custom type to the method signature, either it is a value or reference type, the expected behavior takes place.

If I find the time I’ll try to delve more thoroughly into the problem area. This situation is really annoying and I have yet to see any documentation or discussion about the problem. Makes you wonder…

Comments [0] | | # 
# Thursday, February 20, 2003
Messenger and Paranoia
Thursday, February 20, 2003 7:51:03 PM UTC ( General )

I came across SIMP (Secway's Instant Messenger Privacy) from [email protected] here the day. It is a small utility designed to secure your MSN Messenger conversations providing both encryption and authentication services, and best of all it is free for both home and business use.

Usually I’m not a very paranoid person, but I enjoy privacy technologies as much as the next guy and this product is definitely worth a try.

Comments [0] | | # 
# Thursday, February 13, 2003
Enterprise Services and Exceptions
Thursday, February 13, 2003 7:07:27 PM UTC ( Enterprise Services )

Andreas Eide and I have been playing around with serviced components and custom exceptions, and so far we have discovered some interesting results.

I have a test-setup running Windows XP SP1 and the .Net Framework v1.0 SP2. I have created a serviced component and configured it to run in a server activated application. The component implements the test interface below and uses no configuration attributes. I have a client application that invokes all of the interface methods and each of the method implementations in the component simply throw the same custom ApplicationException derived exception.

The interesting thing is that three of the methods return the application exception while the last two return the custom exception to the client.

public interface ITest
  int Test1(); // ApplicationException
  object Test2(); // CustomException
  void Test3(); // ApplicationException
  void Test4(object o); // CustomException
  Guid Test5(DateTime dt); // ApplicationException

I guess what is left now is to figure out why this happens, and I guess there are quite a few things to consider. Does it have anything to do with reference objects vs. value objects being passed; does it have anything to do with the shared memory buffer sometimes used by LRPC? What is obvious though is that there is a difference in the way exceptions are marshaled across processes.

What is obvious though is that there is a difference in the way exceptions are marshaled across processes. It seems that in some cases IErrorInfo and Marshal.ThrowExceptionForHR does its magic and in other cases the entire exception object is marshaled transferred.

Comments [0] | | # 
# Wednesday, February 5, 2003
AOP and Enterprise Services
Wednesday, February 5, 2003 9:37:33 PM UTC ( Enterprise Services )

Once again Clemens has been down in his secret underground lab working on some new and exiting enterprise services enhancements. This time he has cooked up a way to write AOP style serviced component extensions in the same brilliant manner we have grown accustomed to. From the looks of it his framework is designed to provide AOP through interception techniques. Giving developers the ability to write these kinds of extensions is indeed a huge and very important improvement to the existing serviced component architecture.

The ability to effectively separate crosscutting concerns is extremely important in modern software designs. Security, adaptability and runtime tuning, monitoring, validation and physical tier independence are some of the areas where one might want to apply these techniques.

This sort of functionality has been on my wish list for some time now, and I can’t wait for the bits to come out.

Comments [0] | | #