{"id":30616408,"url":"https://github.com/hackcpp/xapp","last_synced_at":"2025-10-28T22:47:34.291Z","repository":{"id":310460095,"uuid":"1039916590","full_name":"hackcpp/xapp","owner":"hackcpp","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-18T08:56:02.000Z","size":952,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-18T09:29:56.402Z","etag":null,"topics":[],"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/hackcpp.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,"zenodo":null}},"created_at":"2025-08-18T07:18:58.000Z","updated_at":"2025-08-18T08:56:05.000Z","dependencies_parsed_at":"2025-08-18T09:30:09.521Z","dependency_job_id":"dedadace-0f2d-410b-a226-26cdd8bd0358","html_url":"https://github.com/hackcpp/xapp","commit_stats":null,"previous_names":["hackcpp/xapp"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hackcpp/xapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackcpp%2Fxapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackcpp%2Fxapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackcpp%2Fxapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackcpp%2Fxapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackcpp","download_url":"https://codeload.github.com/hackcpp/xapp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackcpp%2Fxapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272830766,"owners_count":25000526,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-08-30T09:20:05.745Z","updated_at":"2025-10-28T22:47:29.236Z","avatar_url":"https://github.com/hackcpp.png","language":"C#","readme":"# .NET 解决方案 - 中间件测试平台\r\n\r\n## 项目概述\r\n该解决方案包含API和MVC两个项目，用于测试各种中间件的集成和使用，包括：\r\n- 数据库：MySQL, PostgreSQL, SQL Server, Oracle, Redis, Memcached\r\n- 消息队列：RabbitMQ, ActiveMQ\r\n- 服务通信：HTTP\r\n\r\n## 项目结构\r\n```\r\nxapp/\r\n├── api/            # Web API 项目\r\n│   ├── Controllers/\r\n│   └── Properties/\r\n├── k8s/            # Kubernetes 部署文件\r\n├── mvc/            # MVC Web 应用\r\n│   ├── Controllers/ # 各中间件测试控制器\r\n│   ├── Models/      # 数据模型\r\n│   ├── Views/       # 视图文件\r\n│   └── wwwroot/     # 静态资源\r\n└── Scripts/        # 构建和部署脚本\r\n```\r\n\r\n## 使用指南\r\n1. 配置连接字符串(api/appsettings.json 和 mvc/appsettings.json)\r\n2. 运行需要测试的控制器方法\r\n3. 查看测试结果\r\n\r\n## Kubernetes 部署\r\n\r\n### 准备工作\r\n1. 确保已安装kubectl并配置好Kubernetes集群\r\n2. 创建命名空间：\r\n   ```bash\r\n   kubectl create namespace dotnet-test\r\n   ```\r\n\r\n### 部署步骤\r\n\r\n\r\n1. 部署中间件服务：\r\n\r\n- 所有中间件使用统一密码: Middleware123\r\n\r\n   ```bash\r\n   # MySQL\r\n   kubectl apply -f k8s/mysql.yaml\r\n\r\n   # PostgreSQL\r\n   kubectl apply -f k8s/postgres.yaml\r\n   \r\n   # Oracle\r\n   kubectl apply -f k8s/oracle.yaml\r\n   \r\n   # SqlServer\r\n   kubectl apply -f k8s/sqlserver.yaml\r\n\r\n   # Memcached\r\n   kubectl apply -f k8s/memcached.yaml\r\n\r\n   # Redis\r\n   kubectl apply -f k8s/redis.yaml\r\n   \r\n   # RabbitMQ\r\n   kubectl apply -f k8s/rabbitmq.yaml\r\n   - 默认用户名/密码: guest/guest\r\n   - 管理界面端口: 15672 (通过rabbitmq-service访问)\r\n   - AMQP端口: 5672\r\n   - 管理界面URL: http://rabbitmq-service.dotnet-test.svc.cluster.local:15672\r\n\r\n   # ActiveMQ\r\n   kubectl apply -f k8s/activemq.yaml\r\n   - 默认用户名/密码: admin/admin\r\n   - 管理界面端口: 8161 (通过activemq-service访问)\r\n   - 消息端口: 61616\r\n   - 管理界面URL: http://activemq-service.dotnet-test.svc.cluster.local:8161\r\n\r\n   # 部署所有的中间件服务\r\n   bash Scripts/deploy_middleware.sh\r\n   ```\r\n\r\n2. 构建.NET应用镜像：\r\n   ```bash\r\n   # 构建API镜像\r\n   bash Scripts/build_api_image.sh\r\n\r\n   # 构建MVC镜像\r\n   bash Scripts/build_mvc_image.sh\r\n   ```\r\n\r\n3. 部署.NET应用：\r\n   ```bash\r\n   kubectl apply -f k8s/dotnet-api.yaml\r\n   kubectl apply -f k8s/dotnet-app.yaml\r\n   ```\r\n\r\n### 更新应用\r\n当代码变更后，可以使用以下脚本更新Kubernetes中的部署：\r\n\r\n1. 更新API服务：\r\n```bash\r\nbash ./Scripts/update_api.sh\r\n```\r\n\r\n2. 更新MVC应用：\r\n```bash\r\nbash ./Scripts/update_mvc.sh\r\n```\r\n\r\n这些脚本会自动：\r\n- 删除旧部署\r\n- 清理旧镜像\r\n- 构建新镜像\r\n- 重新部署应用\r\n- 等待新Pod就绪\r\n\r\n### 访问应用\r\n1. 通过Ingress访问：\r\n    ```bash\r\n    # 确保在本地hosts文件中添加DNS解析\r\n    # 例如：\u003c集群IP\u003e dotnet.ziyou.com\r\n    \r\n    # 获取Ingress IP和端口\r\n    kubectl get ingress -n dotnet-test\r\n    kubectl get svc ingress-nginx-controller -n ingress-nginx\r\n    \r\n    # 示例输出：\r\n    # NAME                       TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE\r\n    # ingress-nginx-controller   NodePort   10.104.238.69   \u003cnone\u003e        80:30706/TCP,443:31770/TCP   20d\r\n    ```\r\n   访问地址：\r\n   - HTTP: http://dotnet.ziyou.com:30706\r\n   - HTTPS: https://dotnet.ziyou.com:31770\r\n   - 直接访问节点: http://\u003c节点IP\u003e:30706 或 https://\u003c节点IP\u003e:31770","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackcpp%2Fxapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackcpp%2Fxapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackcpp%2Fxapp/lists"}