Thursday, November 4, 2004

My Continuing Fight with .NET Remoting

So I went for the sleep option around 3:15am. I should have picked option two (coffee) because my brain was still way too active to let me fall asleep. I kept thinking about different options to try. In any case, I'm a couple of steps close to getting my solution to work. For one of our systems, we have a set of COM objects that are hosted in COM+. These objects are exported through COM+ / DCOM to several clients across a LAN / WAN environment. The clients create an instance of a broker object exposed through COM+, and then use that broker to create instances of other server business objects (SBOs). Each of these instances is intended to hold state (they connect to a variety of ERP and database systems, so opening and closing them often has a high transaction cost). Our objective with this project is two-fold. First, the client that activates these distributed components is Wonderware's InTouch 7.x. The license costs for our customer are getting a little high, so they are looking to replace the InTouch client with a .NET client written in C#. I had originally considered using XML Web Services hosted in IIS to wrap the functionality of the SBOs. This was before I learned that the SBOs held state. XML Web Services is a stateless architecture, so it wouldn't due for accomplishing our task. So that is why I chose to go the .NET Remoting route. I'm still going to use IIS to host the remoting component, as it will save me time by acting as the hosting control, provide security, and also take care of channel and load management.


So after banging my head on the wall last night, I got this far: I have a Client Activated Object (CAO) that is hosted by IIS. I've written the web.config file to expose the CAO. I used "soapsuds.exe -nowp -ia:MyRemoteCode -oa:MyRemoteCode_Proxy.dll" to generate a meta-data proxy for the remote object. I created a client that registers the remote object, and then creates an instance of it. So far so good. Here is where the trouble starts though. I create a second remoteable class that also inherits from MarshalByRefObject. This one is instantiated by making a method call on the first remoted object. However, when the client calls "firstRemoteObject.GetSecondRemoteObject()" I get a type mismatch error on the return type. Evidently, the meta-data generated by soapsuds.exe doesn't exactly match the typing information passed back by the remote call. So this is where I am stuck tonight. I spent the day working on another project, so I haven't been able to touch it yet. If I can stay concious long enough I may try again tonight. If I get it solved, I'll post sample code.

CAOs hosted by IIS that implement COM Interop Interfaces

Wow, did I have an intrigueing assignment today. I have a client that is going to be developed in C# (Microsoft .NET technology). This client is going to remotely access another .NET assembly on a server machine, across the network. The server side assembly is going to be client activated (CAO), and the CAO needs to expose the functionality of a COM component through interop. I thought I could just create a class that inherits from MarshalByRefObject and implements the interface of the interop component.... but NOOOOOO! Couldn't be that simple could it? So instead, I'm sitting here at 2am still banging out the intricacies of creating and passing references around across application domains. So far, I've learned that implenting the interface for an interop component is seriously bad news. Forget about remoting your object after you've done that. Next, don't every install the .NET Framework 2.0 beta on your primary development box. It did me the courtesy of modifying all of my IIS virtual directories to automatically select the 2.0 revision rather than the stable 1.1 revision. So now I need to manually select 1.1 for all existing and newly created virtual directories. Thanks .NET 2.0. So now my stickler is trying to figure out how to get two remoted objects that are hosted in the same application domain to interact. Not a simple task so far. More on this wonderful story once I get a cup of coffee... or sleep.

Thursday, July 1, 2004

Visual Studio Express


Free stuff is good! Microsoft is releasing a new variant of their Visual Studio development products. The "Express" line is a stripped down beta version of the upcoming Visual Studio 2005 products. I've been looking for a way to get a cheap copy of Visual Studio at home for a while, and this just fell in my lap. It is going to be a huge help in studying for my certification exams, and if I want to tinker around with something, I can!

Sunday, June 13, 2004

Netgear WG602 Wireless Access Point

Last week I posted that the Netgear WG602 had a backdoor password, and that everyone should upgrade to the firmware version 1.7.14. Unfortunately, that firmware revision didn't get rid of tha backdoor, it just changed the username and password. Netgear has released a new firmware revision, 1.7.15, which eliminates the backdoor.

http://kbserver.netgear.com/support_details.asp?dnldID=741

If you use this product at home, I recommend that you download the firmware upgrade and install it.


How could the backdoor affect me?

Anyone who can connect to your access point would be able to change the settings for your access point. If you have enabled security and filtered the list of MAC addresses that can connect, this backdoor will have very little affect on you. However, I would still recommend that you patch this backdoor.


What models have the bug?

Only the Netgear WG602 version 1.0 product is known to exhibit this bug. It is based off of a z-com chipset. The WG602 version 2.0 product does not have this vulnerability.


What else can I do to protect my wireless network?

At the very least, change the default admin password and enable WEP security. Unfortunately, nearly all networking equipment intended for home use is shipped in an unsecured state by default. This provides the least confusion when setting up the network, but also leaves you open to attack. By changing the default password and enabling WEP, you are preventing the casual and curious wireless surfer from hopping on your network.


I've enabled WEP and changed the password, now what?

Great, you've taken the first steps towards securing your network. Unfortunately, the WEP standard has a couple of flaws. It uses some common keys in the encryption process that can be easily discovered. Anyone with enough free time on their hands can sit outside your network and eventually determine the WEP key and get on your network. There are some additional steps you can take to protect yourself though.


- Disable SID broadcasting.

This feature is not available on all Wireless Access Points. Your access point broadcasts a beacon on a regular interval to tell wireless users that it is available. This beacon includes the name, or SID of your WAP. By turning this beacon off, wireless surfers will not know that your WAP exists unless they specifically look for it.


- Force a VPN for all wireless clients.

If you want to get really secure, connect your WAP to a dead pool on your network. By dead pool, I mean a network connection that has no access to the web, the company intranet, or any other resources on your network. It is completely isolated. From there, users must create a VPN connection to any resource on your intranet. There are many benefits to this type of setup. First, you can turn off MAC address filtering and WEP. People who connect can't do anything without the VPN, and this reduces the maintenance needed to updated WEP keys and MAC lists. Secondly, a VPN connection provides a much stronger encryption level, protecting any data you may transmit wirelessly.

Sunday, June 6, 2004

Netgear WG602 Wireless AP Security Problem

For anyone out there using a Netgear WG602 Wireless Access Point, be aware that a backdoor password was recently discovered that would allow anyone to hack your device. Be sure to go to the Netgear support page to download the latest firmware for your access point. The latest firmware revision removes the backdoor password.

Wednesday, May 19, 2004

Book Review : Unleashing the Killer App

For my business information systems class, we were assigned to read the book "Unleashing the Killer App : Digital Strategies for Market Dominance" by Larry Downes & Chunka Mui. I thought it was an outstanding book covering the changes that any Killer App technology can have on a firm, and how best to enable your firm to not only cultivate a Killer App, but to know how to deal with the result of unleashing one.


The book is primarily focused on a discussion of the 12 critical tenets to unleashing a killer app:


  1. Outsource to the customer
  2. Cannabalize your markets
  3. Treat each customer as a market segment of one
  4. Create communities of value
  5. Replace rude interfaces with learning interfaces
  6. Ensure continuity for the customer, not yourself
  7. Give away as much information as you can
  8. Structure every transaction as a joint venture
  9. Treat your assets as liabilities
  10. Destroy your value chain
  11. Manage innovation as a portfolio of options
  12. Hire the children

I found the book very easy to read and easy to pick up on the concepts that the authors were trying to get across. This is a book that you can sit down and read in a single sitting, and come away with ideas of how to make your business better, and how to be Killer App friendly. You can either purchase a hard copy from Amazon, or read the entire book online.


Don't let the title fool you, this is not a how to manual on creating killer app technology. Instead, it is a primer on how killer apps and new technology fundamentally effect the economic and business environment. Heavily based on the economic research of Coase, and Moore's and Metcalfe's laws, the authors put forth sound reasoning on how new technologies will continue to change businesses. The book was originally released in 1996, and some of the examples may seem a bit dated, but the information and guidance the book provides is timeless. For anyone desiring to succeed in business today, the topics shouldn't be new to you, but it should be a reminder of the pitfalls that some business succumb to.


After reading this book, I immediately came away with ideas of how to change our business for the better. We are a services company, and although we don't have a specific product, our services are our killer app. In order to enhance that killer app status, we can utilize some of basic principals enumerated in the chapters to continuously improve our business.

Wednesday, May 5, 2004

Certified!

I passed another Microsoft Certification exam today! Woohoo! I completed exam 70-315 : Developing Web Applications with Visual C# .NET. I had been studying for the exam for a while, but I had not taken the time to really concentrate on it. So yesterday I spent all day studying the practice tests and reviewing the book. By mid-afternoon, I felt like I was as ready as I was ever going to be. I scheduled my exam for 9:45 this morning, and passed with flying colors. I scored a 886 out of a possible 1000 points. A score of 700 was needed to pass. I'm glad I finally forced myself to get that exam out of the way. I have one more exam to go before I achieve my Microsoft Certified Application Developer (MCAD) status, and two more after that to be a Microsoft Certified Solution Developer (MCSD).