|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Need architecture suggestionI'm planning to build a small application that can manage and share favorites as a self learing app. I'd like your inputs to help me correctly design the application. The goal of the app is to help the user to keep its favorite, and share favorites between other users (corporate favorites). The application should be able to "query" several types of sources : File Share, SharePoint list (mysite for per user favorite or any wss list for shared favorites), RSS feed, xml file... The sources should be shipped as plugin in order to help extending the application. The application should also have different destinations : file on the computer, Ie favorites folder (a folder too) and mozilla firefox bookmarks file. The destination should also be shipped as plugin, in order to support adding new "destination". I'm not asking how to connect to source and destinations, but how I have to "organise" my code. I'm thinking about something like this (the requirement of the app can be ..Net 3.0): - I create a Core library that define the interfaces for both sources and destinations - I create some basics classes that implements theses interfaces in separates assemblies - I create an "host" application that can load at run time the pluggins selected by the users using reflection and appdomains - The host application will wait for any source to give a new item to add. - This host application then will "send" the item to all destinations So these interfaces are defined : IEndPoint : ICredentials Credentials { get; set; } UseDefaultCredentials {get; set;} IStore : IEndPoint { ItemCollection GetAllItems(); ItemCollection GetItemsAddedSince(DateTime dt); event ItemAdded; } IDestination : IEndPoint { AddItem(Item newItem); Uri destinationUri { get; set; } } Do you think I'm on the right way ? I think something is missing : the configuration. I suppose I can rely on the settings class for each store and destination, and for the list of pluggin to load. Thanks in advance for the help. Steve Hi Steve,
You're already doing the right thing by thinking out the design of your application, so that is encouraging! However, there is a problem with your request for advice. You started out by saying that you want to be able to share "favorites." Now, "favorites" have a definition in Microsoft terms, and that is an Internet Shortcut (*.url) file. All Favorites are Internet Shortcut files. So, when you talk about being able to "query for several types of sources" you are not making sense, as all Favorites are of the same type (Internet Shortcut file). So, can you be a bit more clear about your requirements? -- Show quoteHTH, Kevin Spencer Microsoft MVP Professional Chicken Salad Alchemist What You Seek Is What You Get. "Steve B." <steve_beauge@com.msn_swap_msn_and_com> wrote in message news:OK2WRc0qGHA.2232@TK2MSFTNGP04.phx.gbl... > Hi, > > I'm planning to build a small application that can manage and share > favorites as a self learing app. I'd like your inputs to help me correctly > design the application. > > The goal of the app is to help the user to keep its favorite, and share > favorites between other users (corporate favorites). > > The application should be able to "query" several types of sources : File > Share, SharePoint list (mysite for per user favorite or any wss list for > shared favorites), RSS feed, xml file... The sources should be shipped as > plugin in order to help extending the application. > > The application should also have different destinations : file on the > computer, Ie favorites folder (a folder too) and mozilla firefox bookmarks > file. The destination should also be shipped as plugin, in order to > support adding new "destination". > > I'm not asking how to connect to source and destinations, but how I have > to "organise" my code. > > I'm thinking about something like this (the requirement of the app can be > .Net 3.0): > > - I create a Core library that define the interfaces for both sources and > destinations > - I create some basics classes that implements theses interfaces in > separates assemblies > - I create an "host" application that can load at run time the pluggins > selected by the users using reflection and appdomains > - The host application will wait for any source to give a new item to add. > - This host application then will "send" the item to all destinations > > So these interfaces are defined : > > IEndPoint : > ICredentials Credentials { get; set; } > UseDefaultCredentials {get; set;} > > IStore : IEndPoint { > ItemCollection GetAllItems(); > ItemCollection GetItemsAddedSince(DateTime dt); > event ItemAdded; > } > > IDestination : IEndPoint { > AddItem(Item newItem); > Uri destinationUri { get; set; } > } > > Do you think I'm on the right way ? > > I think something is missing : the configuration. I suppose I can rely on > the settings class for each store and destination, and for the list of > pluggin to load. > > Thanks in advance for the help. > > Steve > Ok sorry if I was not clear.
The term "Favorite" is for me on couple of Description/Url value whatever the storage format, then sources do not need to contain .url files. A favorite can actually be extracted from a .url file, a link item in a WSS link list or anything else that can can store desc/url values... Destinations have the same requirements... the destination plugin has the responsibility to store the favorite in its own format (.url for IE, bookmark.html for FireFox, etc...) Steve "Kevin Spencer" <u**@ftc.gov> a écrit dans le message de news: Oj9UOA1qGHA.2***@TK2MSFTNGP03.phx.gbl...Show quote > Hi Steve, > > You're already doing the right thing by thinking out the design of your > application, so that is encouraging! > > However, there is a problem with your request for advice. You started out > by saying that you want to be able to share "favorites." Now, "favorites" > have a definition in Microsoft terms, and that is an Internet Shortcut > (*.url) file. All Favorites are Internet Shortcut files. So, when you talk > about being able to "query for several types of sources" you are not > making sense, as all Favorites are of the same type (Internet Shortcut > file). > > So, can you be a bit more clear about your requirements? > > -- > HTH, > > Kevin Spencer > Microsoft MVP > Professional Chicken Salad Alchemist > > What You Seek Is What You Get. > > > "Steve B." <steve_beauge@com.msn_swap_msn_and_com> wrote in message > news:OK2WRc0qGHA.2232@TK2MSFTNGP04.phx.gbl... >> Hi, >> >> I'm planning to build a small application that can manage and share >> favorites as a self learing app. I'd like your inputs to help me >> correctly design the application. >> >> The goal of the app is to help the user to keep its favorite, and share >> favorites between other users (corporate favorites). >> >> The application should be able to "query" several types of sources : File >> Share, SharePoint list (mysite for per user favorite or any wss list for >> shared favorites), RSS feed, xml file... The sources should be shipped as >> plugin in order to help extending the application. >> >> The application should also have different destinations : file on the >> computer, Ie favorites folder (a folder too) and mozilla firefox >> bookmarks file. The destination should also be shipped as plugin, in >> order to support adding new "destination". >> >> I'm not asking how to connect to source and destinations, but how I have >> to "organise" my code. >> >> I'm thinking about something like this (the requirement of the app can be >> .Net 3.0): >> >> - I create a Core library that define the interfaces for both sources and >> destinations >> - I create some basics classes that implements theses interfaces in >> separates assemblies >> - I create an "host" application that can load at run time the pluggins >> selected by the users using reflection and appdomains >> - The host application will wait for any source to give a new item to >> add. >> - This host application then will "send" the item to all destinations >> >> So these interfaces are defined : >> >> IEndPoint : >> ICredentials Credentials { get; set; } >> UseDefaultCredentials {get; set;} >> >> IStore : IEndPoint { >> ItemCollection GetAllItems(); >> ItemCollection GetItemsAddedSince(DateTime dt); >> event ItemAdded; >> } >> >> IDestination : IEndPoint { >> AddItem(Item newItem); >> Uri destinationUri { get; set; } >> } >> >> Do you think I'm on the right way ? >> >> I think something is missing : the configuration. I suppose I can rely on >> the settings class for each store and destination, and for the list of >> pluggin to load. >> >> Thanks in advance for the help. >> >> Steve >> > > |
|||||||||||||||||||||||