Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 21:31   #1
LunarDay
Новичок
Джуниор
 
Регистрация: 10.04.2012
Сообщений: 1
По умолчанию .Net Remoting C#

Здравствуйте, нужна ваша помощь, есть задание:
Серверная часть:
Необходимо создать сервер .net remoting обрабатывающий запросы по каналу HTTP (порт 13000), имеющий следующую архитектуру (схематично).

т. е. необходимо создать 3 объекта .net remoting: 2 объекта WKO и 1 CAO. Объект WKO Singleton должен выполняеть роль persistent хранилища объектов класса RecordDataObject (на схеме WellKnownSingleton) и быть доступен для клиентских запросов на извлечение данных по протоколу HTTP.
Объект CAO должен выполнять роль транзакционного кеша, хранящего измененные клиентом в течении сессии подключения объекты и их первоначальные копии (может быть реализован любой другой, более оптимальный способ хранения измененных и первоначальных данных). Объект также должен быть доступен для запросов клиента по протоколу HTTP.
Объект WKO Singlecall должен быть выполнять роль контроллера транзакции и быть доступен для клиентских вызовов по протоколу HTTP. Объект при вызове операции Commit() должен создавать Proxy объекты Singleton и CAO объектов и выполнять копирование изменных объектов из CAO в WKO Singleton по каналу IPC. При копировании должна выполняться проверка целостности данных, т. е. должно проверяться наличие и соответствие данных в WKO Singleton объекте, первоначальным данным в CAO объекте. В случае неудачи результат выполнения операции — строка ошибки(по желанию можно реализовать передачу сериализованного объекта Exception). Операция Rollback — очищает CAO объект.
Клиентская часть:
Необходимо реализовать клиента .net remoting к серверной части приложения, позволяющего в графическом режиме выполнять следующие операции: Закачку списка объектов данных с серверного WKO Singleton объекта CRUD операции с объектами с записью изменений в CAO объект на сервере. Выполнение операций Commit() и Rollback() серверного объекта WKO Singlecall.
Мои наработки:
Библиотека
Код:
namespace Library
{
    [Serializable]
    public class library : MarshalByRefObject
    {
        private string str = "default string";
        public library()
        {
            Console.WriteLine("Library called");
        }
        public void setStr(string str)
        {
            Console.WriteLine("Library.setStr");
            this.str = str;
        }
        public string getStr()
        {
            Console.WriteLine("Library.getStr ");
            return str;
        }
    }
}
Сервер
Код:
namespace Server
{
    class server
    {
        static void Main(string[] args)
        {
            HttpChannel channel = new HttpChannel(13000);
            ChannelServices.RegisterChannel(channel);
            RemotingConfiguration.RegisterWellKnownServiceType
                (typeof(Library.library),
                "myURIsingleton.soap",
                WellKnownObjectMode.Singleton);
            RemotingConfiguration.RegisterWellKnownServiceType
                (typeof(Library.library),
                "myURIsingleCall.soap",
                WellKnownObjectMode.SingleCall);
            RemotingConfiguration.RegisterActivatedServiceType
                (typeof(Library.library));
            Console.WriteLine("Server started. Press Enter to end ...");
            Console.ReadKey();
        }
    }
}
Клиент
Код:
using Library;
namespace Client
{
    public partial class ClientForm : Form
    {
        public ClientForm()
        {
            InitializeComponent();
            HttpClientChannel channel = new HttpClientChannel();
            ChannelServices.RegisterChannel(channel);
        }
        private void button2_Click(object sender, EventArgs e) //чтение WKO Singleton
        {
            Object remoteObj = Activator.GetObject
                (typeof(Library.library),
                "http://localhost:13000/myURIsingleCall.soap",
                WellKnownObjectMode.SingleCall);
            library lib = (library)remoteObj;
            richTextBox1.Text += lib.getStr() + "\n";
        }
        bool buttonClick = false;
        private void button1_Click(object sender, EventArgs e) //запись Client Activated
        {
            if (!buttonClick)
            {
                RemotingConfiguration.RegisterActivatedClientType
                (typeof(Library.library),
                "http://localhost:13000");
                buttonClick = true;
            }
            library lib = new library();
            lib.setStr(textBox1.Text);
        }
    }
}
Вопрос:
Правильно ли я начала делать задание?
Если да, то почему не записывается строка? И что мне делать дальше?
Если нет, то подскажите, пожалуйста, как и с чего начать?
Направьте, пожалуйста, на путь истинный!

Заранее большое спасибо за ответы!
LunarDay вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net gammaray Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 22.11.2010 17:36
.Net Remoting и многопользовательский доступ Silence Общие вопросы .NET 2 02.05.2008 22:55