{"id":16430055,"url":"https://github.com/syzranov/exchangeproject","last_synced_at":"2025-06-26T11:34:04.144Z","repository":{"id":122711298,"uuid":"107360495","full_name":"syzranov/ExchangeProject","owner":"syzranov","description":null,"archived":false,"fork":false,"pushed_at":"2017-10-18T05:08:29.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-25T08:18:33.455Z","etag":null,"topics":["finance","highload","multithreading","sockets","stockmarket"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syzranov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-18T04:55:17.000Z","updated_at":"2017-10-18T05:04:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"80fa67a4-620c-4d3e-b003-7f89c1192455","html_url":"https://github.com/syzranov/ExchangeProject","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/syzranov/ExchangeProject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syzranov%2FExchangeProject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syzranov%2FExchangeProject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syzranov%2FExchangeProject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syzranov%2FExchangeProject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syzranov","download_url":"https://codeload.github.com/syzranov/ExchangeProject/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syzranov%2FExchangeProject/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262056486,"owners_count":23251681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finance","highload","multithreading","sockets","stockmarket"],"created_at":"2024-10-11T08:25:29.735Z","updated_at":"2025-06-26T11:34:04.122Z","avatar_url":"https://github.com/syzranov.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Exchange\r\n\r\nПроект Exchange - это пример работы рынка валют. \r\nProject Exchange - is an example of the market rates.\r\n\r\nВидео описание доступно тут:\r\nYo can view video description here: \r\n\r\nhttp://youtu.be/kjc22Gw1C88\r\n\r\n\r\n\r\n\r\nКОМПЛЕКС EXCHANGE \r\n2015\r\nАндрей Сызранов, \r\nsyzranov@gmail.com\r\n\r\n\r\n\r\n0.СОДЕРЖАНИЕ\r\n---------------------------------\r\n1.ОПИСАНИЕ\r\n2.НЕОБХОДИМОЕ ОКРУЖЕНИЕ\r\n3.УСТАНОВКА И НАСТРОЙКА\r\n4.ЗАПУСК И ОСТАНОВКА\r\n5.УДАЛЕНИЕ\r\n\r\n\r\n\r\n1.ОПИСАНИЕ \r\n---------------------------------\r\nКомплекс Exchange реализует бизнес процесс оформления сделок по курсу валюты\r\nиспользуя клиент-сервреную архитектру. Полный текст описания бизнес процесса находится \r\nв файле task.txt.\r\n\r\nКомплес Exchange реализован на языке C#, с использованием технологий сокетов, \r\nпотоков, EF, БД MSSQL Server. Приложение создано по схеме архитектуры code-first. \r\nДля реализации использовался LINQ to SQL в резульате которого получился \r\nфайл: Exchange\\Exchange.Dal\\Exchange.dbml.\r\n\r\nПоставленная задача была реализована с помощью трёх основных приложений:\r\n1.Клиент \r\n2.Сервер\r\n3.Монитор\r\n\r\nДалее, подробное описание всех проектов комплекса.\r\n\r\nКомплекс Exchange, состоит из проектов:\r\nExchange.Client                    - библиотека, реализует работу приложения Клиент\r\nExchange.Client.Cmd                - приложение командной строки, отображает события \r\n                                работы клиента.\r\nExchange.Common                    - библиотека, содержит общие с клиентом и сервером \r\n                                и классы-контейнеры\r\nExchange.DAL                    - библиотека, содержит структуру БД в файле \r\n                                Exchange.dbml и обеспечивает доступ к БД.\r\nExchange.Extentions                - библиотека, содержит методы расширения, \r\n                                общие для клиента и сервера\r\nExchange.Monitor                - библиотека, реализует работу приложения Монитор\r\nExchange.Monitor.Cmd            - приложение командной строки, отображает события \r\n                                работы Монитора, является интерфейсом где \r\n                                отображается статискиа работы комплекса Exchange.\r\nExchange.Server                    - библиотека, реализует работу приложения Сервер\r\nExchange.Server.Cmd                - приложение командной строки, отображает события \r\n                                приложения Сервер\r\nExchange.UnitTests                - библиотека, реализующая unit-тесты, на весь \r\n                                основной функционал комплекса Exchange\r\nExchange.Utils                    - библиотека, содержит общие методы, используемые \r\n                                во всех проектах комплекса\r\nExchange.Utils.DB.Create.Cmd    - приложение командной строки, создаёт БД\r\nExchange.Utils.DB.Drop.Cmd        - приложение командной строки, удаляет БД\r\n\r\n\r\nДополнительная информация по работе комплекса.\r\n\r\nДиапазон курса валют составляет от 0 до 100000.\r\nДиапазон сделки составляет от 0 до 100000.\r\nКурс валюты меняется автоматически сервером каждые 30 секунд.\r\n\r\nСписок валют - фиксированный, включает в себя 9 валют:\r\n   RUB = 643 - Российский рубль,\r\n   USD = 840 - Американский доллар,\r\n   EUR = 978 - Евро,\r\n   CHF = 756 - Швейцарский франк,\r\n   JPY = 392 - Японская йена,\r\n   GBP = 826 - Британский фунт,\r\n   CAD = 124 - Канадский доллар,\r\n   CNY = 156 - Китайская йена,\r\n   BRL = 986 - Бразильский реал\r\n\r\nВсе курсы, сделки хранятся в БД.\r\n\r\nЧастота обновления статистики монитора, по умолчанию составлет 5 секунд \r\nи его можно поменять в файле конфигурации проекта Монитора.\r\nЧастота обновления статистики монитора указывается в милисекундах.\r\n\r\nЧастота обращения клиента к серверу - огрничена, по умолчанию \r\nона составляет 300 милисекунд, этот параметр хранится в конфигурации клиента, \r\nгде его можно поменять.\r\n\r\nСервер ни как не огрничен по скорости.\r\nЛогирование не ведётся.\r\n\r\n\r\n2.НЕОБХОДИМОЕ ОКРУЖЕНИЕ\r\n---------------------------------\r\nДля корректной работы комплекса Exchange требуется следующее окружение и инструменты:\r\n\r\nHARDWARE:\r\nIntel Core i3-5 CPU M 560 2.67Ghz\r\nили схожий по характеристикам\r\n\r\nRAM  4Gb \r\nи больше\r\n\r\nОС: Microsoft Windows 7 - 8.1,\r\nили Microsoft Windows Server 2014  \r\n\r\nСЕРВЕР БД: \r\nMSSQL Server 2005 - 2013\r\nс кодировкой \r\n\r\nДля компиляции библиотек потребуется\r\nVisual Studio 2012-13\r\n\r\nДоступный порт 11000\r\nПроверка доступности порта: \r\nhttp://zone-pc.ru/index.php/praktikum/kak-proverit-otkryt-li-port/\r\n\r\nПрава администратора\r\nОтключёный ОАК\r\n\r\nНиже, список идеальных условий, \r\nпоскольку разработка и отладка комплекса Exchange \r\nпроизводилась используя окружение и инструменты:\r\n\r\nHARDWARE:\r\nIntel Core i5 CPU M 560 2.67Ghz\r\nRAM 8Gb\r\n\r\nOS: Windows 8.1 Pro, 64-bit OS\r\n\r\nVISUAL STUDIO:\r\nMicrosoft Visual Studio Ultimate 2013\r\nVersion 12.0.31101.00 Update 4\r\nMicrosoft .NET Framework\r\nVersion 4.5.51641\r\n\r\nMICROSOFT SQL SERVER:\r\nMicrosoft SQL Server 2012 - 11.0.2218.0 (X64) \r\nJun 12 2012 13:05:25 \r\nCopyright (c) Microsoft Corporation\r\nExpress Edition (64-bit) on Windows NT 6.2 \u003cX64\u003e (Build 9200: ) (Hypervisor)\r\n\r\n\r\n\r\n3.УСТАНОВКА И НАСТРОЙКА\r\n---------------------------------\r\n\r\n1.Конфигурирование подключения к БД и создание БД\r\n\r\nДля корректной работы нобходимо создать БД.\r\n\r\nДля создания БД, необходимо прописать строку соединения к MSSQL Server\r\nв файлах:\r\n\r\n/Exchange/Exchange.Client.Cmd/App.config\r\n/Exchange/Exchange.Server.Cmd/App.config\r\n/Exchange/Exchange.Monitor.Cmd/App.config\r\n/Exchange/Exchange.Utils.DB.Create.Cmd/App.config\r\n/Exchange/Exchange.Utils.DB.Drop.Cmd/App.config\r\n\r\nCекция: configuration\\appSettings\\add[@key=\"connection-string\"]\r\n\r\nПосле завершения прописывания строк подключения, \r\nнеобходимо собрать проект в студии. \r\n\r\n2.Подключение к БД\r\n\r\nСоздание БД производится запуском файла db-create.cmd\r\nэто файл запустит вызов приложения:\r\n/Exchange/Exchange.Utils.DB.Create.Cmd\\bin\\Debug\\Exchange.Utils.DB.Create.Cmd.exe\r\nкоторе подключится и создаст БД\r\n\r\n\r\n\r\n4.ЗАПУСК И ОСТАНОВКА\r\n---------------------------------\r\nКомплекс Exchange состоит из Сервера, 30-ти Клиентов и Монитора.\r\n\r\nЗапуск комплекса Exchange, производится файлом start.cmd\r\nОстановка комплекса Exchange, производится файлом stop.cmd\r\n\r\nПри запуске, будет запущен экземпляр сервера, 30 экземпляров клиента и Монитор.\r\nПри остановке, будет произведена остановка процессов 30 экземпляров Клиента, \r\nСервера и Монитора.\r\n\r\n\r\n\r\n5.УДАЛЕНИЕ\r\n---------------------------------\r\nУдаление БД производится запуском файла db-delete.cmd \r\n\r\nэто файл запустит вызов приложения:\r\n/Exchange/Exchange.Utils.DB.Create.Cmd\\bin\\Debug\\Exchange.Utils.DB.Create.Cmd.exe\r\nкоторе подключится и создаст БД\r\n\r\nУдаление комплекса - так же как удаляется обычная папка. Перед удалением, \r\nнеобходимо убедится, что система не запущена и не удерживает папки.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyzranov%2Fexchangeproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyzranov%2Fexchangeproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyzranov%2Fexchangeproject/lists"}