Module reuse

Topics: CAB & Smart Client Software Factory
Nov 9, 2006 at 1:16 AM
originally posted by: Ignacio_Goyeneche

Hi, we are trying to make a SOA, with web services in the back end and smart clients in the front end. The goal is to have a set of modules that implement basic services and then combine this modules to create different applications easily. As we see it this should be easily done with CAB and SC-SF.

The problem we found is that SC-SF is prepared to make applications but as every module created in the application depends on the Infrastructure module of that application we don´t know how to port that module to a different application.
It should be as easy as to use the generated assembly, but if this assembly depends on the Infrastructure one we need it too. So we'll end up with several Infrastructure dlls and we don´t think that's possible.

Is there something we don´t see about it? It's supossed to be easy to implement a module and then use it in different applications, but we don´t know how to make it.
Any insight you can give us about it would be very helpful.
Nov 9, 2006 at 7:35 PM
originally posted by: askew

The SCSF Foundational Module can be generated without an Interface Library and without a layout view. That is the single dll file you are looking for.

You could generate two seperate apps with SCSF without having to try to port a module to a non-SCSF-CAB solution.

Modules can port between SCSF-CAB solutions, they do need to ship with their component Interface libraries if they have any.

I would not consider trying to use a SCSF-CAB module in a non-CAB solution.
Nov 10, 2006 at 12:48 AM
originally posted by: Ignacio_Goyeneche

I thought Foundational Modules were not meant to have views. My idea is to have different Bussines Modules with views, that can be used in different SCSF apps.

The problem is that every time I generate a Bussines Module, it has dependencies on the Infrastructure Module of the application that created the module, so if I try to use the module in another SCSF application I need the dll of the module and the Infrastucture one too. As the new app has it´s own Infrastucture Module that couses trouble.

There should be an easy way to create a Module, either Bussines or Foundational, that can be reused in different apps, but I don´t see how to do it. The problem is the dependence on the Infrastucture Module.

Nov 10, 2006 at 10:59 AM
originally posted by: askew

Can't you re-reference those Interface Modules for the new Shell?
Nov 14, 2006 at 6:33 AM
originally posted by: Tary

I understand the problem because we are facing it as well.
We have multiple developers each trying develop their own modules independantly. We are using SourceSafe as our version control system.
In my visual studio solution, if I bring in someone elses module, I need to delete then re-add the references to infrastructure.interface and then rebuild. This causes a check-out of their module.csproj file because of the reference changes. I can't use someone elses module "as-is".
Is there a way to re-use someone elses module without having to alter it in the process?
Nov 15, 2006 at 4:04 PM
originally posted by: SheaStrickland

Just a thought (no testing) can you not specify a reference path to it's new infrastructure dll, thus hinting to visual studio where to look to pick up this new reference?

VB.Net - Project Properties -> References -> Reference Paths
C# - Project Properties -> Reference Paths

AFAIK - This is stored in a file not under source control

Just thinking out loud
Nov 23, 2006 at 4:52 PM
originally posted by: PauloMorgado

You can use "normal" assemblies in your Smart Client application.

What you need is to build another common set of assemblies or modules that are used by those cross application modules and the applications that use them.

Your Smart Client application is using the .NET Base Class Library and other libraries (third party controls, for example). It's the same princple.