Showing posts with label design. Show all posts
Showing posts with label design. Show all posts

Saturday, March 24, 2012

A Small Conceptual Problem

Hi all

I am planning to make a website in the new AJAX ASP. One of my main design goals is that everything should be under one single page i.e even new pages appear in the same window without refreshing the page.

e.g. There is a link on default.aspx called Page2 which redirects it to Page2.aspx. There is also a master page which is connected to both these pages

now i want that when Page2 is clicked, without refrshing the whole page Page2.aspx appears in the place where the contents of default.aspx were, the master page remaining there all the time.

I am not able to figure out how to do this.. Plzz someone give me directions

Thanx

Hi,

I think it would not work out. Because, you are trying to access totally different page. :(

But to have some try and some hacks, try to put your ContentPlaceHolder control inside the UpdatePanel. :)

This might show you AJAX like feel.

Wot says? Let me know, if you get the results as expected.

Mayur Tendulkar

Microsoft Student Partner

Wednesday, March 21, 2012

A high level ATLAS implementation question.

Hello, we are looking into this technology for a project currently in design.

The project is comparable to a browser based chat application so for the purpose of this post I will use a chat example.

  • Five users join a chat session
  • One person types a message and sends it to the group
  • The list of chat messages is updated for each user.

    Let's say the app needs to scale to 10,000 users and the messages are stored in a database and managed on the server.

    We could use Atlas to send the message to the server when the user clicks Send – this works great. My dilemma is how to update each client with the new chat message. We have considered using a timer on the client and polling the server using Atlas for new messages. However, this seems inefficient and doesn't scale due to our capacity requirements and all the net traffic this could produce.

    Is there a way to employ more a broadcast model using the Atlas technology? Could we use an Event in the server code that makes anOnCompletecallback to each cleint who's joined the session? Is there another way to message from the server to multiple clients?

    Thanks in advance for any advice you can provide, links, documentation, examples, etc...

    Kind Regards.

    Sounds like you should use a "Broadcast Pattern".
    ie.
    - all active users become part of some "active user broadcast list" as they join a chat session
    - then some class/thread is invoked to broadcast the message to all users in the list
    In between or after you can store the message in a db or whatever.
    dev


    Dev, thanks for the response.

    Yes, the broadcast pattern is along the lines we're thinking. The question is how to implement this model.

    I imagine we could wire up an Event in the server code that would fire when there's a new message submitted by any client.

    How then would the server broadcast the message to each of the web clients who are participating (up to 10000). Could an individual thread be kept alive somehow on the server for each client? This is where we were thinking about the OnComplete logic supported by Atlas. It seems like there's an AJAX solution out there somewhere for this.

    Thanks in advance for any more advice.


    Hi Bill,

    Here is how you could implement your chat s/w:

    Server side:
    Create the below webmethods:
    1. UpdateMe_async()
    polls the db for new messages. When new messages are available it returns an array of messages and client ids.
    2. ReceiveMsg(messagestring, clientid, otherparams...)
    Receives and adds the message to the db.

    Client side:

    Do the following:
    Onload:
    Make an async call to UpdateMe_async() webmethod. Set the call back to a function say func_UpdateMe().
    func_UpdateMe()
    Displays messages.
    On send button click:
    Make a call to the ReceiveMsg() webmethod.


    Hope it helps!

  •