views:

137

answers:

1

Hello everyone,

I am developing a web site and I need to build a data structure to store user profile information. Just like what we filled about our gender/age/education/etc. information for Facebook, etc.

The current issues I met with are,

  1. Currently I may not consider all required user profile information from current design/development phase, how to design a extensible framework so that in the future I could extend user profile esaily? Are there any mature (open source) user profile framework to reference?
  2. Are there any standards about what are the standard items we need to collect in user profile?
  3. How to make it secure/flexible to share user profile information for different applications? For example, app1 just need a part of user profile, and for security reason I only need to expose a part of user profile to app1. But we need to make it flexible enough so that when app1 needs additional user profile items, we could easily expose more.

Solution in C# or in programming language neutral are appreciated. :-)

thanks in advance, George

+1  A: 

There's nothing special about user profiles. What you are asking for applies to nearly every app I've ever worked on: store and share data.

Different platforms are better at different things but there's no silver bullet for this problem--this is what software is all about.

For example, you can create a users table in a database and some CRUD screens to manage it. You could create an API into that data using any number of approaches.

When your requirements change, repeat (and hope you don't have to change too much).

Michael Haren
Are there any extensible user profile framework to make a reference?
George2
extensible I mean easy to add new user profile settings.
George2
If you are looking for user security (to handle logins), then yes there are many. But that's not what I think you're asking for. How is user data different from say...invoice data or customer data or location data, etc.?
Michael Haren
I am interested in the solution you mentioned -- "you can create a users table in a database and some CRUD screens to manage it.", especially how do you manage extensibly in databse table (e.g. it is not convenient when a new property needs to be added to user profile, I will add a new database column)? And what do you mean CRUD screens?
George2
Appreciate if you could explain what do you refer to " user security (to handle logins)"?
George2
CRUD stands for *C*reate, *R*ead, *U*pdate, and *D*elete. In other words, fronting basic database functionality, rather than doing something fancy with it.
Novelocrat
But how do you manage extensibly in databse table (e.g. it is not convenient when a new property needs to be added to user profile, I will add a new database column)?
George2
I think your current answer about user profile is good enough, I will mark your reply as answered. I think my question should be a design pattern issue. I have started a new thread here, appreciate if you want to contribute your great ideas!http://stackoverflow.com/questions/939553/how-to-design-extensible-and-secure-data-structure-in-my-scenario
George2